emile 10 months ago
parent 497faf45a1
commit 4d5b5de4af

Binary file not shown.

@ -10,18 +10,6 @@ import requests
class OsitcomVisitor(WebsocketConsumer):
def connect(self):
self.accept()
headers = dict(self.scope.get('headers', []))
ip_address = headers.get(b'x-forwarded-for', None)
if ip_address:
# Extract the actual IP address if there are multiple addresses
self.visitor_ip = ip_address.split(',')[0].strip()
else:
# Fallback to the standard remote address
self.visitor_ip = self.scope.get('client', [None])[0]
if self.visitor_ip:
response = requests.get(f'http://ipinfo.io/{self.visitor_ip}/json')
data = response.json()
self.visitor_country = data.get('country', 'Unknown')
async_to_sync(self.channel_layer.group_add)(
'ositcom_visitors', self.channel_name
)
@ -41,6 +29,7 @@ class OsitcomVisitor(WebsocketConsumer):
event = {
'type': 'new_visitor_handler',
'session_id': text_data_json.get('session_id'),
'client_ip': text_data_json.get('client_ip'),
'referrer': text_data_json.get('referrer'),
'url': text_data_json.get('url'),
@ -52,8 +41,7 @@ class OsitcomVisitor(WebsocketConsumer):
def new_visitor_handler(self, event):
visitor = Visitor.objects.create(
session_id = event['session_id'],
ip_address = self.visitor_ip,
country = self.visitor_country,
ip_address = event['client_ip'],
referrer = event['referrer'],
url = event['url'],
visit_date = datetime.now(),

@ -0,0 +1,9 @@
from django.urls import path, include
from . import views
urlpatterns = [
# DETAILS
path('get-client-ip/', views.get_client_ip, name='get-client-ip'),
]

@ -1,3 +1,7 @@
from django.shortcuts import render
from django.http import JsonResponse
# Create your views here.
def get_client_ip(request):
client_ip = request.META.get('REMOTE_ADDR', '')
return JsonResponse({'ip': client_ip})

@ -24,6 +24,7 @@ urlpatterns = [
path('', include('customercore.urls')),
path('', include('billing.urls')),
path('', include('support.urls')),
path('', include('osichat.urls')),
path('admin/', admin.site.urls),
]

@ -1,6 +1,6 @@
const chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const domain = "192.168.1.111:8000";
const domain = "192.168.1.106:8000";
const sessionId = document.getElementById('session_id').textContent.trim();
const osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/${sessionId}/`;
const osichatSocket = new WebSocket(osichatSocketUrl);

@ -1,29 +1,42 @@
const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const my_domain = "osina.ositcom.com";
const my_domain = "192.168.1.106:8000";
const session_id = document.getElementById('session_id').textContent.trim();
const current_url = document.getElementById('current_url').textContent.trim();
const referrer = document.referrer;
const referrer = document.referrer;
const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
const visitorsSocket = new WebSocket(visitorsSocketUrl);
const clientIpUrl = `http://${my_domain}/get-client-ip/`;
fetch(clientIpUrl)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
const client_ip = data.ip;
visitorsSocket.onopen = () => {
console.log('WebSocket connection to visitors established');
const event_message = {
'event_type': 'new_visitor',
'session_id': session_id,
'referrer': referrer,
'url': current_url,
};
visitorsSocket.send(JSON.stringify(event_message));
};
visitorsSocket.onopen = () => {
console.log('WebSocket connection to visitors established');
const event_message = {
'event_type': 'new_visitor',
'session_id': session_id,
'referrer': referrer,
'url': current_url,
'client_ip': client_ip,
};
visitorsSocket.send(JSON.stringify(event_message));
};
visitorsSocket.onclose = () => {
console.log('WebSocket connection to visitors closed');
};
visitorsSocket.onclose = () => {
console.log('WebSocket connection to visitors closed');
};
visitorsSocket.onerror = (error) => {
console.log('WebSocket error:', error);
};
visitorsSocket.onerror = (error) => {
console.error('WebSocket error:', error);
};
})
.catch(error => {
console.error('Error fetching client IP:', error);
});

Loading…
Cancel
Save