
    i?                         S SK J r Jr  S SKrS SKrS SKrS SKrS SKJr  SSKJ	r	  \R                  " 5       r\R                  " 5       r " S S5      r " S S	5      rg)
    )datetimetimezoneN)parse_qs   )ConnectionRefusedErrorc                   *    \ rS rSrS rSS jrS rSrg)EventBuffer   c                     0 U l         g Nbufferselfs    K/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/socketio/admin.py__init__EventBuffer.__init__   s	        c                     [        [        R                  " 5       5      S-  nU SU 3nX@R                  ;  a  UUUS.U R                  U'   g U R                  U   S==   U-  ss'   g )N  ;)	timestamptypecountr   )inttimer   )r   r   r   r   keys        r   pushEventBuffer.push   se    		$t+	1TF#kk!& DKK KKW%.%r   c                 r    U R                   n0 U l         UR                  5        Vs/ s H  o"PM     sn$ s  snf r   )r   values)r   r   values      r   get_and_clearEventBuffer.get_and_clear   s0    #)==?3?%?333s   4r   N)r   )__name__
__module____qualname____firstlineno__r   r   r#   __static_attributes__ r   r   r	   r	      s    
/4r   r	   c                       \ rS rSr  SS jrS rS rS rS rSS jr	SS	 jr
SS
 jrS rS rS rSS jrS r  SS jrS rS rSS jrS rS rS rS rSS jrSrg)InstrumentedServer#   Nc                 t   Uc  [        S5      eXl        X l        X`l        X@l        U=(       dK    [        U R                  R                  S5      (       a   U R                  R                  R                  O[        U l	        X0l
        Xpl        [        5       U l        SU l        SU l        U R!                  5         g)zuInstrument the Socket.IO server for monitoring with the `Socket.IO
Admin UI <https://socket.io/docs/v4/admin-ui/>`_.
Nzauth must be specifiedhost_id)
ValueErrorsioauthadmin_namespace	read_onlyhasattrmanagerr/   HOSTNAME	server_idmodeserver_stats_intervalr	   event_bufferstop_stats_event
stats_task
instrument)r   r1   r2   r9   r4   r8   	namespacer:   s           r   r   InstrumentedServer.__init__$   s    
 <566	("" 
(/0@0@)(L(LDHH$$ 	 	%:"'M !% 	r   c                 8   U R                   R                  SU R                  U R                  S9  U R                  S:X  GaB  U R
                  (       d  U R                   R                  SU R                  U R                  S9  U R                   R                  SU R                  U R                  S9  U R                   R                  SU R                  U R                  S9  U R                   R                  SU R                  U R                  S9  0 U R                   R                  l        U R                   R                  U R                   l        U R                  U R                   l        U R                   R                  R                  U R                   R                  l        U R                   U R                   R                  l        U R                   R                  R"                  U R                   R                  l        U R&                  U R                   R                  l        U R                   R                  R(                  U R                   R                  l        U R,                  U R                   R                  l        U R                   R.                  R                  SU R0                  5        U R                   R.                  R                  SU R2                  5        S	S
KJn  U R                   R.                  R8                  U R                   R.                  l        U R<                  U R                   R.                  l        UR>                  Ul         [B        RD                  " U RF                  RH                  U 5      Ul        URJ                  Ul&        [B        RD                  " U RF                  RN                  U 5      Ul%        U R                  S:X  aB  URP                  Ul)        [B        RD                  " U RF                  RT                  U 5      Ul(        g g )Nconnectr?   developmentemitjoinleave_disconnect
disconnectr   Socket)+r1   onadmin_connectr3   r9   r4   
admin_emitadmin_enter_roomadmin_leave_roomadmin_disconnectr6   _timestamps_trigger_event"_InstrumentedServer__trigger_eventbasic_enter_room%_InstrumentedServer__basic_enter_room_basic_enter_roombasic_leave_room%_InstrumentedServer__basic_leave_room_basic_leave_roomrE   _InstrumentedServer__emit_emiteio_handle_eio_connect_handle_eio_disconnectengineio.socketrK   _ok_InstrumentedServer__ok_eio_http_responsehandle_post_request(_InstrumentedServer__handle_post_request	functoolspartialmethod	__class___eio_handle_post_request_websocket_handler&_InstrumentedServer__websocket_handler_eio_websocket_handler
_send_ping_InstrumentedServer__send_ping_eio_send_pingr   rK   s     r   r>   InstrumentedServer.instrument>   s   It11"22 	 	4 99%>>FDOO&*&:&:  <FD$9$9&*&:&:  <GT%:%:&*&:&:  <M4+@+@&*&:&:  < ,.DHH( (,xx'>'>DHH$&*&9&9DHH#   11 HH/040F0FDHH-   11 HH/040F0FDHH- '+hh&6&6&;&;DHH#$(JJDHH! 		4#;#;<d&A&AB 	+ HHLL,,22'-'A'A$%.%<%<NN33T&;" &,%>%>"$-$;$;NN114%9! 99%!'!2!2F ) 7 7--t!5F &r   c                    U R                   S:X  a  U R                  R                  U R                  l        U R                  R                  R
                  U R                  R                  l        U R                  R                  R                  U R                  R                  l        U R                  R                  R                  U R                  R                  l
        U R                  R                  R                  U R                  R                  l        SSKJn  UR                   Ul        UR$                  Ul        U R                   S:X  a  UR(                  Ul        g g )NrD   r   rJ   )r9   r1   rT   rS   r6   rV   rU   rY   rX   r[   rE   r]   rb   ra   r`   rK   re   rd   rk   rj   rn   rm   rp   s     r   uninstrumentInstrumentedServer.uninstrumenty   s    99%&*hh&>&>DHH#  33 HH-   33 HH-$(HH$4$4$;$;DHH!88<<,,*%+%A%A"$*$>$>!99% & 2 2F &r   c                 p  ^  T R                   (       a  Sn[        T R                   [        5      (       a  UT R                   :H  nO@[        T R                   [        5      (       a  UT R                   ;   nOT R                  U5      nU(       d  [	        S5      eU 4S jnT R
                  R                  XQ5        g )NFzauthentication failedc           	      j  > TR                   R                  S5        S/nTR                  (       d  U/ SQ-  nTR                  S:X  a  UR	                  S5        TR                   R                  SSU0U TR                  S9  TR                  S:X  a  / nTR                   R                  R                  5        HS  nTR                   R                  R                  US 5       H&  u  pUR	                  TR                  XU5      5        M(     MU     TR                   R                  S	X TR                  S9  g g )
Ng?AGGREGATED_EVENTS)EMITJOINLEAVE
DISCONNECTMJOINMLEAVEMDISCONNECTrD   
ALL_EVENTSconfigsupportedFeaturestor?   all_sockets)r1   sleepr4   r9   appendrE   r3   r6   get_namespacesget_participantsserialize_socket)sidfeaturesr   nspeio_sidr   s        r   r   0InstrumentedServer.admin_connect.<locals>.config   s   HHNN3 ,,H>> 6 6yyM)-HHMM(%8($C D,@,@  B yyM) 88++::<C(,(8(8(I(I)'#** 11#GDF)' =
 m[(,(<(<  > *r   )r2   
isinstancedictlistr   r1   start_background_task)r   r   environclient_authauthenticatedr   s   `     r   rM    InstrumentedServer.admin_connect   s    99!M$))T** +tyy 8DIIt,, +tyy 8 $		+ 6 ,-DEE	>0 	&&v3r   c                 8    U R                   R                  XEX2S9  g )Nr   )r1   rE   )r   _r?   room_filtereventdatas         r   rN   InstrumentedServer.admin_emit   s    ekGr   c                     U R                   R                  R                  X$5       H  u  pQU R                   R                  XSUS9  M!     g NrC   )r1   r6   r   
enter_roomr   r   r?   roomr   r   s         r   rO   #InstrumentedServer.admin_enter_room   =    hh&&77(FCHHY?(r   c                     U R                   R                  R                  X$5       H  u  pQU R                   R                  XSUS9  M!     g r   )r1   r6   r   
leave_roomr   s         r   rP   #InstrumentedServer.admin_leave_room   r   r   c                     U R                   R                  R                  X$5       H  u  pQU R                   R                  XRS9  M      g r   )r1   r6   r   rI   )r   r   r?   closer   r   s         r   rQ   #InstrumentedServer.admin_disconnect   s;    hh&&77(FCHH9(r   c                     U R                   (       aV  U R                  R                  5         U R                   R                  5         U R                  R	                  5         S U l         g g r   )r=   r<   setrF   clearr   s    r   shutdownInstrumentedServer.shutdown   sI    ??!!%%'OO  "!!'')"DO	 r   c           
      h   [         R                   " 5       nUS   nUS:X  Ga  U R                  R                  R                  XR5      nX@R                  R                  R                  U'   U R                  XRU5      nU R                  R                  SU[        R                  " U[        R                  5      R                  5       4U R                  S9  U R                  R                  R                  U5      R                  (       d'  U R                  R!                  U R"                  XeU5        OUS:X  a  U R                  R                  R                  U	 US   nU R                  R                  SUUU[        R                  " U[        R                  5      R                  5       4U R                  S9  OaU R                  R                  SUUU/USS  Q7[        R                  " U[        R                  5      R                  5       4U R                  S9  U R                  R$                  " X/UQ76 $ )	Nr   rB   socket_connectedrC   rI   r   socket_disconnectedevent_received)r   r1   r6   eio_sid_from_sidrR   r   rE   r   fromtimestampr   utc	isoformatr3   r]   _get_socketupgradedr   _check_for_upgraderT   )	r   r   r?   argstr   r   serialized_socketreasons	            r   rS   !InstrumentedServer._trigger_event   s   IIK1gIhh&&77GG01HH((- $ 5 5cg NHHMM,!&&q(,,7AAC/ --  / 88<<++G4==..++W9Fl"  ,,S1!WFHHMM/&&q(,,7AAC	2
 --  / HHMM*"ab"&&q(,,7AAC	-
 --  / xx''@4@@r   c                 @   [        S5       H~  nU R                  R                  S5         U R                  R                  R	                  U5      R
                  (       a+  U R                  R                  SUUSS.U R                  S9    g M     g ! [         a     M  f = f)N   socket_updated	websocket)idr   	transportrC   )	ranger1   r   r]   r   r   rE   r3   KeyError)r   r   r   r?   r   s        r   r   %InstrumentedServer._check_for_upgrade   s    qAHHNN1	88<<++G4==HHMM"2!(%05 "&!5!5	 " 7
  >   s   AB
BBc           	         U R                   R                  R                  XUU5      nU(       aY  U R                   R                  SUUU[        R
                  " [        R                  5      R                  5       4U R                  S9  U$ )Nroom_joinedrC   )
r1   r6   rV   rE   r   nowr   r   r   r3   )r   r   r?   r   r   rets         r   rW   $InstrumentedServer._basic_enter_room   sv    hh11#$29;HHMM-X\\*446	*
 --  / 
r   c           	         U(       aY  U R                   R                  SUUU[        R                  " [        R
                  5      R                  5       4U R                  S9  U R                   R                  R                  XU5      $ )N	room_leftrC   )
r1   rE   r   r   r   r   r   r3   r6   rY   )r   r   r?   r   s       r   rZ   $InstrumentedServer._basic_leave_room  sm    HHMM+X\\*446	(
 --  / xx2234HHr   c           
         U R                   R                  R                  " XU4UXVS.UD6nX0R                  :w  a  [	        U[
        5      (       a  U/[        U5      -   OX/n	[	        U[        5      (       d  U/nU R                   R                  R                  X45       He  u  pX;  d  M  U R                   R                  SUU
U	[        R                  " [        R                  5      R                  5       4U R                  S9  Mg     U$ )N)r   skip_sidcallback
event_sentrC   )r1   r6   r[   r3   r   tupler   r   rE   r   r   r   r   r   )r   r   r   r?   r   r   r   kwargsr   
event_datar   r   s               r   r\   InstrumentedServer._emit  s    hh%%e9 04/70(.0 ,,,1;D%1H1H%4:-] h--$:((**;;IL&HHMM,!" X\\2<<>	1
 "&!5!5 " 7 M 
r   c                 H   U R                   c)  U R                  R                  R                  5       U l         U R                  c*  U R                  R                  U R                  5      U l        U R                  R                  S5        U R                  R                  X5      $ )NrawConnection)
r<   r1   r]   create_eventr=   r   _emit_server_statsr;   r   r^   )r   r   r   s      r   r^   &InstrumentedServer._handle_eio_connect   s{      ($(HHLL$=$=$?D!??""hh<<'')DO 	/xx++G==r   c                 n    U R                   R                  S5        U R                  R                  X5      $ )NrawDisconnection)r;   r   r1   r_   )r   r   r   s      r   r_   )InstrumentedServer._handle_eio_disconnect*  s,    12xx..w??r   c                     U R                   R                  R                  XUS9nU R                  R	                  S5        U R                  R	                  S[        US   5      5        U$ )N)packetsheadersjsonp_index
packetsOutbytesOutresponse)r1   r]   rb   r;   r   len)r   r   r   r   r   s        r   rc   %InstrumentedServer._eio_http_response.  s\    hhll,7   9|,z3s:+?@
r   c           	          U R                   " U5      nUR                  R                  S5        UR                  R                  S[        UR	                  SS5      5      5        U$ )N	packetsInbytesInCONTENT_LENGTHr   )re   r;   r   r   get)socketr   r   r   s       r   ri   +InstrumentedServer._eio_handle_post_request5  sU    **73{+s7;;'7;<	>
r   c                    ^ U4S jnU4S jnUR                   Ul        [        R                  " X25      Ul         UR                  Ul        [        R                  " XB5      Ul        U R                  " U5      $ )Nc                    > TR                   R                  S5        TR                   R                  S[        U5      5        U R                  " U/UQ70 UD6$ )Nr   r   )r;   r   r   _InstrumentedServer__send)wsr   r   r   r   s       r   _send8InstrumentedServer._eio_websocket_handler.<locals>._send=  sJ    ""<0"":s4y999T3D3F33r   c                    > U R                  5       nTR                  R                  S5        TR                  R                  S[        U=(       d    S5      5        U$ )Nr   r    )_InstrumentedServer__waitr;   r   r   )r   r   r   s     r   _wait8InstrumentedServer._eio_websocket_handler.<locals>._waitB  sE    ))+C"";/""9c#)n=Jr   )sendr   rf   partialwaitr   rk   )r   r   r   r   r   s    `   r   rl   )InstrumentedServer._eio_websocket_handler<  sZ    	4
	 GG	##E.GG	##E.))"--r   c           	         U R                   n[        R                  " 5       nUR                  R                  R	                  5        H  nUR                  R                  R                  X$5      nU(       d  M1  UR                  XTU5      nUR                  R                  SU[        R                  " U[        R                  5      R                  5       4UR                  S9  M     U R                  " 5       $ )Nr   rC   )r   r   r1   r6   r   sid_from_eio_sidr   rE   r   r   r   r   r   r3   rn   )r   r   r   r   r?   r   r   s          r   ro   !InstrumentedServer._eio_send_pingN  s    **IIK))88:I((""33GGCs$($9$9#:A%C!0%**1hll;EEG3 "11  3 ; !!##r   c                 "   [         R                   " 5       n[        U R                  R                  R	                  5       5      nUR                  5         U R                  R                  5       (       Gd  U R                  R                  U R                  5        U R                  R                  SU R                  [        [        [         R                   " 5       U-
  [        U R                  R                  R                   5      [        U R                  R                  R                   R#                  5        Vs/ s H  nUR$                  (       a  M  UPM     sn5      U R&                  R)                  5       U Vs/ s HQ  nU[        U R                  R*                  R,                  R/                  US / 05      R/                  S / 5      5      S.PMS     snS.U R0                  S9  U R                  R                  5       (       d  GM  g g s  snf s  snf )Nserver_stats)namesocketsCount)serverIdhostnamepiduptimeclientsCountpollingClientsCountaggregatedEvents
namespacesrC   )r   r   r1   handlerskeyssortr<   is_setr   r:   rE   r8   r7   PIDr   r]   socketsr!   r   r;   r#   r6   roomsr   r3   )r   
start_timer  sr   s        r   r   %InstrumentedServer._emit_server_stats\  s   YY[
$((++0023
''..00HHNN4556HHMM. NN$))+
2 #DHHLL$8$8 9'* $ 4 4 ; ; = ( =1JJ  = (() %)$5$5$C$C$E
 (	) (c  $'(8(8(>(>(B(BdBZ))),T2%8  (	)+ --  / ''..00()s   7HH9AHc                 >   Uc%  U R                   R                  R                  U5      nU R                   R                  R	                  U5      nU R                   R
                  R                  U0 5      nUU R                   R                  R                  ;   a#  U R                   R                  R                  U   OSnUUUR                  (       a  SOSU0 UR                  SS5      UR                  5        VVs0 s H1  u  pxUR                  S5      (       d  M  USS  R                  5       U_M3     snn[        UR                  SS5      5      R                  5        VVs0 s H  u  pxU[        U5      S	:X  a  US   OU_M     snnUR                  S
S5      S:H  UR                  SS5      US-  U(       a3  [        R                  " U[         R"                  5      R%                  5       OSS.U R                   R                  R'                  X5      S.$ s  snnf s  snnf )Nr   r   pollingREMOTE_ADDRr   HTTP_r   QUERY_STRINGr   zwsgi.url_schemehttps	PATH_INFOr   )addressr   querysecureurlissuedr   )r   clientIdr   r   r   	handshaker  )r1   r6   r   r]   r   r   r   rR   r   items
startswithlowerr   r   r   r   r   r   r   	get_rooms)	r   r   r?   r   r   r   tmkvs	            r   r   #InstrumentedServer.serialize_sockets  s   ?hh&&77<G))'2((""&&w325HH((3)TXX))#../ 	 (.Y";;}b99@ 6 ||G4 -AabEKKM1, 6DLKK3E55:UWE= > E=DA!SVq[QqTa7 E= >!++&7<G{{;3t) !..r8<<@JJL XX%%//?%
 	
6>s   9HH #H)
r3   r2   r;   r9   r4   r8   r:   r1   r=   r<   )NrD   FNz/admin   r   )NNN)r%   r&   r'   r(   r   r>   rs   rM   rN   rO   rP   rQ   r   rS   r   rW   rZ   r\   r^   r_   rc   ri   rl   ro   r   r   r)   r*   r   r   r,   r,   #   s    EJKL495v3 $4LH@
@
:
#A@
I AE(>@.$$/.
r   r,   )r   r   rf   osr   r   urllib.parser   
exceptionsr   gethostnamer7   getpidr  r	   r,   r*   r   r   <module>r4     sI    '  	   ! .iik4 4,j
 j
r   