From e9245d78490b4ce5b9746277a0cd556a12eea1d5 Mon Sep 17 00:00:00 2001 From: emile Date: Tue, 23 Jul 2024 12:01:10 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1699840 -> 1708032 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 4742 -> 4609 bytes .../__pycache__/routing.cpython-310.pyc | Bin 394 -> 411 bytes osinaweb/osichat/consumers.py | 18 +- osinaweb/osichat/routing.py | 2 +- osinaweb/static/js/osichat/conversation.js | 178 ++++++++++-------- osinaweb/static/js/osichat/visitors.js | 107 ++++++----- 7 files changed, 159 insertions(+), 146 deletions(-) diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index bf1e6eadf557ffb8edd506558c03fbd5492e9ab4..e9b399ab24161c3564313ebc7762a19c921f3b11 100644 GIT binary patch delta 12648 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 delta 7694 zcmeHMYiwKf6~EVy#E$PHah)bk(qRIWKFIC=ao;VWfwXBUuZ?}orE?~ z10P1>BP+hSzw`W`^E=l&4n^_Gcjb8HVvZzC`u(^!@to=PqHJ#saZ^ zPw4$anbhrpu{W3K?7A^wX+7I`XxY-UtcTk$*0B85g$pu^yvy01zK+d_c>l(Mj=qlm zp56^(|5-l4Hjcf2Rg(Sj*sV>5mx%_gH%{`Anre@?$+Kl!yt}<;V|+_jNB73go_682 z2aYslk2JCDE}=E_78v6x^Rk{5!6Vr}|B7813#=3lfOYIs7I%yt7|Wz~Wqnn?{ru>G zQ!I!F#0%mB@q?6sl!F97f*=(jArLNm;1pk7)esC2MC2xk6bxGB*fwa*# zKITD$>>D48H0C?#+sjz{!+tf}Tv;i2Ar@=d(Y=vMkgDw7NVvD&_q1;xW0{ry-Pr^R z|IP#daxNPy`yh8hd~x(-)@d9d%P|9D*Lea35I`wZ|Cpkf5?B2 zZ{@G%RelA(guj%p;}>xM<^IK;vWb3;pB2v{Fp~(*F z8sVz^+j8r%6Oov8iyW@5XcaEAKWr5mt??6)fBX1j%s;JLmGI(nh(slE2Ytee%v$RiIlQ*KEtG{sZ?Zm=!<$AIz83+h23eS0_+HIN zm6c`U8Akj<{6ze__`Y~X{M3q_t-0JnXKT1@>)D!pq91O)Y^lY58D408_GJwhV8t)& z8&3R&tNl={fU6Y^J}<*I9y}d8c(l@e9ZuEyZ1j_i___EG@gwmAKtE~4cGd#=&RRg< zS-V#(gZr1omS#^rTD#;$fIiHKhxuJuZgn&+E^Y8LEzCx@uyBkZljx>`B}`O|@vYla zsh-|`GiF^?Rvohr-yFROAYNj`mxMdA+%3^z@oH_T4m31Wi8r#8(rpRcy*-^&26qg| z$y85rpsAsZsex;~Tidtx(*Dk&4wOtLwsdUK5~)oc)=L|sEr9sB?ZUAvcX#vyF$Qp4 zLxbPTvW<;A{81+CX2cWX55&d7XTl4@ZY!3Gf`_Rnc$kXT3YK_(w5AG6hDHgYa67xZ zriEd%yYG+gWEcAc4Y0jMeu zZM!1K+<0XR#Dup_-yDtIfHhshRFSYD5hKyxpE6ghzy^`93ZF|5Ad@15R=5EqF|3=E zm{^vmq9V;mUtU10=PmrW5aWyPMyeGXjaFl&1Oh3hVwi+VDng2(-`1V%?iuV(Up9#} z{tsOGqH=|Odc7|05M9Ov9IV7)eKFO9cM0aoMCeDn?q)> zVJe#KjG+_VjZ!A`9mknG^2qEn<02~xgh?;TjD1Bl6(k`_6>7KvT;%FZY#GpoIyb4E zMq&_?ZFq-u`e{L&qY#goR(Yxy57(rEQ5Z_=amUp>@uE z)+Y}|8@b8$oo~R4P1SDMGLjT%iUhlsP@85EFvftAQ8nE;@0n2Bc@W!k_hBl*k;4d; zAi{jrB}Ik;a1hgLbASwV;O%kR+r6oKXvgNh^w8$`J!G(BAh~&ml0j)BfTeRwOz=~Nsg1`{1f?@4rY_GxNzi`L&>WZ(>A zsdQul=b*9)!$XzT;^9GTHUgO;BeJ9+r0T@2$Lr?V9BP+?rfNh{AbBGW?Jn3OOVB@% z;#6jOjhnqG^oP>;roq9kcxOA_p6V{n-YkN%NHH;jT7vp?bzbZ0%rTVT1L(tXbM&A6%eNGVoZ(x8ybF)izbx$oV-R_~vLshV1aFWb+)fO;v`ciE%+2H4t$l zd9|x8R}eSOK3s4Dfk+X60-rTu2P$oFJJD52S`V)9vZaiB7p6%iCnlxJRc$Tc>)q zYUZ`UE+O6Sfkc-{5gF4#-IbGv@dBuMX}Q2O1=0_57Frf5B7m@}7$$5hGLaO+fOAr? zH?8GV+DCG(oy7*$>^;NKW$F&OOh~;L&g7A0DntB>Dj=^D0h`rf1;GVpl8T$I*`Ep< z5~zVDX&C5<+eGAZA+MO4=aMutOgXkvd!j#@!cAbe{X-$Y7m1qyqWsl}v*jiX<9{}{ z6VHX4j7-Z-0Fo9U=VxHL^K!%;m<;1P>Kvt+Mvc?_FCK*%aXCy0g#mNO{F;-aFvR6B zMV->7R3#J!xZ*Q~jLh}W=ebcSod96`_0b7<7W_PLm#>LVfVNfV(dJatWRI9Loq)$$ z3>01uaBLxbJc8P2dpm9AvZ9*9;hhW*6;Vd1q;cuK(h%lz%!ICp30FQL^H zuUFg=d@a}<7>DO_&j&pJx4Yf+{d3+Ij%oVmH?soH*grF&uVn?i(EgeJb{+ewhvJhx z=G%4b0=`4YhwGbI$L^dQR8vRC^pnHhSuSiHJA5?itE>z0arpX3d`Mg`a>BT0%!3oA{NCmpA!CMx*=?i`woH%?Ydfb2LvD7P`?8HR0 GrtE(xIL%Z5 diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc index d5c596bcb7941d0567479face6dccd2f89cace3c..93158a614e7503dab1532de71a3b9d4efbca9dbc 100644 GIT binary patch delta 1601 zcmZuxO>7%Q6yDi?ukFN6ng}E6q$LS#fI@2uDWs((Dzs@aqQ6pvw5)fw$vU>znjHtF za*0p`oHz~KkVuZXl@k{b;(~-YbD7=|5(nVGr4oYoW}_xT*qU!=-kX{IzW1{q&we;F zl9tP!2EQ}?FYgSFd^Hl0t53s{YeTI~+WI!31ZKvzPQbEb?rKEi76m)esCHfRji#)m zS;C{V8*C&nNm+KckW7c&>9v@};yzh$tUgP6d{6vIK5~go%zs>?BtFpB$9=uY3h*|+ zAf5fg;xBz}0vXBjDoY3bfF@ZKGRjKg1>+Qd4^IM%?28-|WXLMx)UX zGiG>p3f{-25so1oM|cuJk$0ro&eEQ=I%!BVX{^SajiA>?@Wi*~DRNZ&VICi;fg!5{ zc*G;Fs9Wc@bXd7Cme6$$fNPXsbU8%7Z43$3YZ{=T&{SwCv}+nScdT8FI-lA@EwGgY zx4Gi1CF;ixXe-8wJJR-T<&s{~kAjd=7H63fC7mc8^f=p8>ZGS~63~#xzM~{b=T@F$ z>7=c89Pv!r5sP61n}CbiB*2P|$5OVZvkKat72n(AQ>gkG7}*#AR>9$a>7jVfey8{Z zZhsD;F21qnEys0AW8ydalPv;91ID8$K?)&GH4USqVxt9w>sYC6a~mrbhqYg|HdZZE zuY*q&C9^3D1J((k!gwt0_4h-znyH}puC%f!?Z=J8mqNXQMbEJJ@|`cLO^dL; zA{yS0P(gotw~I6AKaX%h1jWWlTuZZ+(oM+FEZXM~oVBw#q%c2pke-_>lXSC$#@OcTjI0PA0{v2enTn1cIt8XoUk`Vzv2gq z*z0)mfSAXwq2Yj&lJ=;X{+Eq)h|Rlr`VbN9kk3V>x_sg^dR{_!83D_aVa+kjcHU+f ye1_E75;WXnQxF5~6&M++b)ijN&$V6Gt-0f+Nwy%qt3FR=#qZS>vLKen7XJlX%vg{B delta 1834 zcmZ`(&2Jk;6yMn|uh-rrPMWl#O-S1`ut15DLKL+?q$actA1-NWtCohv@obWH9Irb& zj!0w^p{O7ZoJQgT67ew?B>n)nfy9aXaN@*)8{7&4-kWtuh^Vdk?VI=J&HUzl%!i{N zo$HD{&(+{JbLY$D_xiu?DwCNpm~ySDRY*nOA(Vh*?C1nEyJlM>8U-n^sCHA^(~Ghv zP9k28*Mp4+gqS7b8#0~EbY{NzlRR{Eo0xw)hATeN*YYe2`}L>0iqZ`?!Ws|wW<3#;@NH>UlDHhFhFlNzk5rC`UH6eI|nrK@mmbrnkqxPqE zOK<0!G+3SP#n2?kiXUB?Y}G4FRAr!I@3|^MB+z;xl_8cM=yqhcG05v!AgXCzCIT z)0vOAF*YU)b@LBEfK+I^aPLTK>n+0dCfOk{*QwFgcMZ%O24L5uR-4Rei@hzQ38A5O zo7~r1X3J`tG_$5NziDBRh*l#Hj&mD!%~YHnEJe^)vYm2tx3M0fE^}#JLdKn<%&dkb z8nProa^*N)i^AVQ(zdJyUp_y*rC%D6RNMR#J}ZA;Z#_CXLEm+B7W3 zGz3e%8u2tuX(hlKmPhckZNM({$zr_(<<%00ykWqlm!2G?WbWlwIj;w)PTHNXu@-Jh zYokLe+SZI68$gNa8yI(#RF&YJoXPefuL&1LunA(SrCY`vWw<`|h3GS#-LJa7{?}!aUBUxfIh) zKf^{*e+~ho+36mX{ymC4jngA%V0qmYw{t&{VKJG%bq&wl(;2pzG*|h0b&oI~CcY=V zS%~wEI9|Wn2ougGaEZMfRe8wLo-wN>(7y?Kc3u3KA6r09(xQ#^dIAg&8sa)Gc?*r* zn7e?%rooEZ^#+>WMmR!r4t3&+_h>tf08D)|J?veOrMDh0Mb$8>V|9*O)A5k4hP=sHYzQIcMw$U?}OB- z!nEzx*^6j@?4_=N^`YqQ{(j&M^fuIe@TsYBcs*HB{MzkrE1L7T&jC%B-9-iFAZ4fy zJ9vZskDGNU17&o4EUnkT`Z diff --git a/osinaweb/osichat/__pycache__/routing.cpython-310.pyc b/osinaweb/osichat/__pycache__/routing.cpython-310.pyc index a81e08e19d009c6176430189d38ed4cc56aa1b41..50165609b6e9a09a3ea675fb915dab6a25eb0865 100644 GIT binary patch delta 53 zcmeBTp3Tgg&&$ij00hDD^V6+#tcgU diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py index 3f121e10..f59178b1 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -9,13 +9,12 @@ import requests class OsitcomVisitor(WebsocketConsumer): def connect(self): - async_to_sync(self.channel_layer.group_add)( 'ositcom_visitors', self.channel_name ) self.accept() - self.visitor = None - + print('i am here') + def disconnect(self, close_code): if self.visitor: self.visitor.left_date = datetime.now() @@ -26,6 +25,7 @@ class OsitcomVisitor(WebsocketConsumer): def receive(self, text_data): text_data_json = json.loads(text_data) event_type = text_data_json.get('event_type') + print('333') if event_type == 'new_visitor': event = { 'type': 'new_visitor_handler', @@ -41,7 +41,8 @@ class OsitcomVisitor(WebsocketConsumer): ) def new_visitor_handler(self, event): - visitor = Visitor.objects.create( + print('hiiiiii') + self.visior = Visitor.objects.create( session_id = event['session_id'], ip_address = event['client_ip'], referrer = event['referrer'], @@ -49,7 +50,6 @@ class OsitcomVisitor(WebsocketConsumer): url = event['url'], visit_date = datetime.now(), ) - self.visitor = visitor @@ -57,13 +57,7 @@ class OsitcomVisitor(WebsocketConsumer): class OsitcomChatRoom(WebsocketConsumer): def connect(self): - cookie_header = self.scope.get('headers', {}) - http_cookie = dict(cookie_header).get(b'cookie', b'').decode('utf-8') - for cookie in http_cookie.split('; '): - key, value = cookie.split('=') - if key == 'sessionid': - self.session_id = value - break + self.session_id = self.scope['url_route']['kwargs']['session_id'] async_to_sync(self.channel_layer.group_add)( self.session_id, self.channel_name ) diff --git a/osinaweb/osichat/routing.py b/osinaweb/osichat/routing.py index 22ef7412..5439cef6 100644 --- a/osinaweb/osichat/routing.py +++ b/osinaweb/osichat/routing.py @@ -3,6 +3,6 @@ from .consumers import * websocket_urlpatterns = [ path("ws/osichat/visitors/", OsitcomVisitor.as_asgi()), - path("ws/osichat/", OsitcomChatRoom.as_asgi()), + path("ws/osichat//", OsitcomChatRoom.as_asgi()), ] \ No newline at end of file diff --git a/osinaweb/static/js/osichat/conversation.js b/osinaweb/static/js/osichat/conversation.js index 1508ba06..08ae3b92 100644 --- a/osinaweb/static/js/osichat/conversation.js +++ b/osinaweb/static/js/osichat/conversation.js @@ -1,88 +1,104 @@ - const chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws"; const domain = "192.168.1.106:8000"; -const osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/`; -const osichatSocket = new WebSocket(osichatSocketUrl); - - -osichatSocket.onopen = () => { - console.log('WebSocket connection to osichat established'); -}; - -osichatSocket.onmessage = function (e) { - const data = JSON.parse(e.data); - if (data.event_type === 'load_chat') { - const chatDiv = document.getElementById('osichat'); - const html = data.html; - chatDiv.innerHTML = html; - - // Append the toggle tag - const script = document.createElement('script'); - script.type = 'text/javascript'; - script.src = `http://${domain}/static/js/osichat/chat-toggle.js`; - chatDiv.appendChild(script); - - - const startChatContainer = document.getElementById('startChat'); - // If this container exists then the template returned was start-conversation.html, no conversation yet. - if (startChatContainer) { - startChatContainer.addEventListener('submit', function (event) { - event.preventDefault(); - - const guestName = event.target.elements.guest_name.value; - const guestMobileNumber = event.target.elements.guest_mobile_number.value; - - const eventMessage = { - 'event_type': 'start_conversation', - 'guest_name': guestName, - 'guest_mobile_number': guestMobileNumber, - }; - - osichatSocket.send(JSON.stringify(eventMessage)); - - event.target.reset(); - }); - } - - const sendMessageContainer = document.getElementById('sendMessage'); - if (sendMessageContainer) { - sendMessageContainer.addEventListener('submit', function (event) { - event.preventDefault(); - console.log('i am here') - - const message = event.target.elements.message.value; - - const eventMessage = { - 'event_type': 'send_message', - 'message': message, - - }; - - osichatSocket.send(JSON.stringify(eventMessage)); - - event.target.reset(); - }); - } - - } else if (data.event_type === 'start_conversation') { - const chatDiv = document.getElementById('startChatContainer'); - const html = data.html; - chatDiv.innerHTML = html; - - } else if (data.event_type === 'send_message') { - const messagesDiv = document.getElementById('messages'); - const html = data.html; - messagesDiv.insertAdjacentHTML('beforeend', html); - +console.log('hi') +// Function to fetch session ID + + +async function fetchSessionID() { + try { + const response = await fetch('http://192.168.1.106:3000/get-client-session/'); + const data = await response.json(); + return data.session_id; + } catch (error) { + console.error('Error fetching session ID:', error); + return 'Unknown'; } -}; +} + +// Function to initialize WebSocket connection +async function initializeChatWebSocket() { + const session_id = await fetchSessionID(); + const osichatSocketUrl = `${chat_ws_scheme}://${domain}/ws/osichat/${session_id}/`; + const osichatSocket = new WebSocket(osichatSocketUrl); + + osichatSocket.onopen = () => { + console.log('WebSocket connection to osichat established'); + }; + + osichatSocket.onmessage = function (e) { + const data = JSON.parse(e.data); + if (data.event_type === 'load_chat') { + const chatDiv = document.getElementById('osichat'); + const html = data.html; + chatDiv.innerHTML = html; + + // Append the toggle tag + const script = document.createElement('script'); + script.type = 'text/javascript'; + script.src = `http://${domain}/static/js/osichat/chat-toggle.js`; + chatDiv.appendChild(script); + + const startChatContainer = document.getElementById('startChat'); + // If this container exists then the template returned was start-conversation.html, no conversation yet. + if (startChatContainer) { + startChatContainer.addEventListener('submit', function (event) { + event.preventDefault(); + + const guestName = event.target.elements.guest_name.value; + const guestMobileNumber = event.target.elements.guest_mobile_number.value; + + const eventMessage = { + 'event_type': 'start_conversation', + 'guest_name': guestName, + 'guest_mobile_number': guestMobileNumber, + }; + + osichatSocket.send(JSON.stringify(eventMessage)); + + event.target.reset(); + }); + } + + const sendMessageContainer = document.getElementById('sendMessage'); + if (sendMessageContainer) { + sendMessageContainer.addEventListener('submit', function (event) { + event.preventDefault(); + + const message = event.target.elements.message.value; + + const eventMessage = { + 'event_type': 'send_message', + 'message': message, + }; + + osichatSocket.send(JSON.stringify(eventMessage)); + + event.target.reset(); + }); + } + + } else if (data.event_type === 'start_conversation') { + const chatDiv = document.getElementById('startChatContainer'); + const html = data.html; + chatDiv.innerHTML = html; + + } else if (data.event_type === 'send_message') { + const messagesDiv = document.getElementById('messages'); + const html = data.html; + messagesDiv.insertAdjacentHTML('beforeend', html); + } + }; -osichatSocket.onclose = () => { - console.log('WebSocket connection to osichat closed'); -}; + osichatSocket.onclose = () => { + console.log('WebSocket connection to osichat closed'); + }; -osichatSocket.onerror = (error) => { - console.log('WebSocket error:', error); -}; + osichatSocket.onerror = (error) => { + console.log('WebSocket error:', error); + }; +} +document.addEventListener('DOMContentLoaded', () => { + initializeChatWebSocket(); +}); diff --git a/osinaweb/static/js/osichat/visitors.js b/osinaweb/static/js/osichat/visitors.js index 594f8d7c..0f57261b 100644 --- a/osinaweb/static/js/osichat/visitors.js +++ b/osinaweb/static/js/osichat/visitors.js @@ -1,63 +1,66 @@ const visitors_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws"; -const my_domain = "osina.ositcom.com"; -const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`; - -document.addEventListener('DOMContentLoaded', () => { - function fetchClientData() { - return fetch('https://osina.ositcom.com/get-client-ip/') - .then(response => response.json()) - .then(data => ({ - client_ip: data.ip, - client_country: data.country - })) - .catch(error => { - console.error('Error fetching client data:', error); - return { - client_ip: 'Unknown', - client_country: 'Unknown' - }; - }); - } +const my_domain = "192.168.1.106:8000"; + +async function fetchClientData() { + try { + const response = await fetch('https://osina.ositcom.com/get-client-ip/'); + const data = await response.json(); + return { + client_ip: data.ip, + client_country: data.country + }; + } catch (error) { + console.error('Error fetching client data:', error); + return { + client_ip: 'Unknown', + client_country: 'Unknown' + }; + } +} - function fetchSessionID() { - return fetch('https://ositcom.com/get-client-session/') - .then(response => response.json()) - .then(data => data.session_id) - .catch(error => { - console.error('Error fetching session ID:', error); - return 'Unknown'; - }); +async function fetchSessionID() { + try { + const response = await fetch('http://192.168.1.106:3000/get-client-session/'); + const data = await response.json(); + return data.session_id; + } catch (error) { + console.error('Error fetching session ID:', error); + return 'Unknown'; } +} - function initializeWebSocket() { - const referrer = document.referrer; +async function initializeVisitorsWebSocket() { + console.log('Initializing WebSocket...'); - Promise.all([fetchClientData(), fetchSessionID()]).then(([clientData, session_id]) => { - const visitorsSocket = new WebSocket(visitorsSocketUrl); + const referrer = document.referrer; + const clientData = await fetchClientData(); + const session_id = await fetchSessionID(); + const visitorsSocketUrl = `${visitors_ws_scheme}://${my_domain}/ws/osichat/visitors/`; + const visitorsSocket = new WebSocket(visitorsSocketUrl); - visitorsSocket.onopen = () => { - console.log('WebSocket connection to visitors established'); + visitorsSocket.onopen = () => { + console.log('WebSocket connection to visitors established'); - const event_message = { - 'event_type': 'new_visitor', - 'referrer': referrer, - 'url': window.location.href, - 'client_ip': clientData.client_ip, - 'client_country': clientData.client_country, - 'session_id': session_id - }; - visitorsSocket.send(JSON.stringify(event_message)); - }; + const event_message = { + 'event_type': 'new_visitor', + 'referrer': referrer, + 'url': window.location.href, + 'client_ip': clientData.client_ip, + 'client_country': clientData.client_country, + 'session_id': session_id + }; + 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.error('WebSocket error:', error); - }; - }); + visitorsSocket.onerror = (error) => { + console.error('WebSocket error:', error); + }; } - initializeWebSocket(); -}); + document.addEventListener('DOMContentLoaded', async () => { + initializeVisitorsWebSocket(); + }); \ No newline at end of file