emile 10 months ago
parent 32ea7a408f
commit db8df729dc

Binary file not shown.

@ -4,11 +4,17 @@ import json
from django.template.loader import render_to_string from django.template.loader import render_to_string
from asgiref.sync import async_to_sync from asgiref.sync import async_to_sync
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
import requests
class OsitcomVisitor(WebsocketConsumer): class OsitcomVisitor(WebsocketConsumer):
def connect(self): def connect(self):
self.accept() self.accept()
self.visitor_ip = self.scope.get('client', [''])[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
) )
@ -28,9 +34,9 @@ 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'),
'ip_address': text_data_json.get('ip_address'), 'referrer': text_data_json.get('referrer'),
'country': text_data_json.get('country'),
'url': text_data_json.get('url'), 'url': text_data_json.get('url'),
} }
async_to_sync(self.channel_layer.group_send)( async_to_sync(self.channel_layer.group_send)(
'ositcom_visitors', event 'ositcom_visitors', event
@ -39,8 +45,9 @@ 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 = event['ip_address'], ip_address = self.visitor_ip,
country = event['country'], country = self.visitor_country,
referrer = event['referrer'],
url = event['url'], url = event['url'],
visit_date = datetime.now(), visit_date = datetime.now(),
) )

@ -0,0 +1,18 @@
# Generated by Django 4.2.5 on 2024-07-21 19:58
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('osichat', '0012_alter_visitor_reference'),
]
operations = [
migrations.RenameField(
model_name='visitor',
old_name='reference',
new_name='referrer',
),
]

@ -7,7 +7,7 @@ class Visitor(models.Model):
ip_address = models.CharField(max_length=300) ip_address = models.CharField(max_length=300)
country = models.CharField(max_length=15, null=True) country = models.CharField(max_length=15, null=True)
url = models.URLField() url = models.URLField()
reference = models.URLField(null=True, blank=True) referrer = models.URLField(null=True, blank=True)
visit_date = models.DateTimeField(null=True) visit_date = models.DateTimeField(null=True)
left_date = models.DateTimeField(null=True) left_date = models.DateTimeField(null=True)

@ -1,10 +1,9 @@
const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws"; const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
const my_domain = "192.168.1.111:8000"; const my_domain = "osina.ositcom.com";
const session_id = document.getElementById('session_id').textContent.trim(); const session_id = document.getElementById('session_id').textContent.trim();
const client_ip = document.getElementById('client_ip').textContent.trim();
const client_country = document.getElementById('client_country').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 visitorsSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/visitors/`; const visitorsSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/visitors/`;
const visitorsSocket = new WebSocket(visitorsSocketUrl); const visitorsSocket = new WebSocket(visitorsSocketUrl);
@ -14,9 +13,8 @@ visitorsSocket.onopen = () => {
const event_message = { const event_message = {
'event_type': 'new_visitor', 'event_type': 'new_visitor',
'session_id': session_id, 'session_id': session_id,
'ip_address': client_ip, 'referrer': referrer,
'country': client_country, 'url': current_url,
'url': current_url
}; };
visitorsSocket.send(JSON.stringify(event_message)); visitorsSocket.send(JSON.stringify(event_message));
}; };

Loading…
Cancel
Save