emile 10 months ago
parent 497faf45a1
commit 4d5b5de4af

Binary file not shown.

@ -10,18 +10,6 @@ import requests
class OsitcomVisitor(WebsocketConsumer): class OsitcomVisitor(WebsocketConsumer):
def connect(self): def connect(self):
self.accept() 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)( async_to_sync(self.channel_layer.group_add)(
'ositcom_visitors', self.channel_name 'ositcom_visitors', self.channel_name
) )
@ -41,6 +29,7 @@ class OsitcomVisitor(WebsocketConsumer):
event = { event = {
'type': 'new_visitor_handler', 'type': 'new_visitor_handler',
'session_id': text_data_json.get('session_id'), 'session_id': text_data_json.get('session_id'),
'client_ip': text_data_json.get('client_ip'),
'referrer': text_data_json.get('referrer'), 'referrer': text_data_json.get('referrer'),
'url': text_data_json.get('url'), 'url': text_data_json.get('url'),
@ -52,8 +41,7 @@ class OsitcomVisitor(WebsocketConsumer):
def new_visitor_handler(self, event): def new_visitor_handler(self, event):
visitor = Visitor.objects.create( visitor = Visitor.objects.create(
session_id = event['session_id'], session_id = event['session_id'],
ip_address = self.visitor_ip, ip_address = event['client_ip'],
country = self.visitor_country,
referrer = event['referrer'], referrer = event['referrer'],
url = event['url'], url = event['url'],
visit_date = datetime.now(), 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.shortcuts import render
from django.http import JsonResponse
# Create your views here. # 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('customercore.urls')),
path('', include('billing.urls')), path('', include('billing.urls')),
path('', include('support.urls')), path('', include('support.urls')),
path('', include('osichat.urls')),
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
] ]

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

@ -1,29 +1,42 @@
const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws"; 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 session_id = document.getElementById('session_id').textContent.trim();
const current_url = document.getElementById('current_url').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 visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`;
const visitorsSocket = new WebSocket(visitorsSocketUrl); 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 = () => { visitorsSocket.onopen = () => {
console.log('WebSocket connection to visitors established'); console.log('WebSocket connection to visitors established');
const event_message = { const event_message = {
'event_type': 'new_visitor', 'event_type': 'new_visitor',
'session_id': session_id, 'session_id': session_id,
'referrer': referrer, 'referrer': referrer,
'url': current_url, 'url': current_url,
}; 'client_ip': client_ip,
visitorsSocket.send(JSON.stringify(event_message)); };
}; visitorsSocket.send(JSON.stringify(event_message));
};
visitorsSocket.onclose = () => { visitorsSocket.onclose = () => {
console.log('WebSocket connection to visitors closed'); console.log('WebSocket connection to visitors closed');
}; };
visitorsSocket.onerror = (error) => { visitorsSocket.onerror = (error) => {
console.log('WebSocket error:', error); console.error('WebSocket error:', error);
}; };
})
.catch(error => {
console.error('Error fetching client IP:', error);
});

Loading…
Cancel
Save