
    iW@                         S SK r 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rS SKJ	r	  SSK
Jr  SSKJr  \R                  " 5       r\R                   " 5       r " S S5      rg)	    N)datetimetimezone)parse_qs   )EventBuffer)ConnectionRefusedErrorc                       \ 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)InstrumentedAsyncServer   Nc                    Uc  [        S5      eXl        X l        X0l        X@l        U=(       dK    [        U R                  R                  S5      (       a   U R                  R                  R                  O[        U l	        X`l
        Xpl        / U l        [        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_intervaladmin_queuer   event_bufferstop_stats_event
stats_task
instrument)selfr   r   	namespacer   r   r   r   s           Q/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/socketio/async_admin.py__init__ InstrumentedAsyncServer.__init__   s    
 <566	("" 
(/0@0@)(L(LDHH$$ 	 	%:"'M !% 	    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   AsyncSocket)+r   onadmin_connectr   r   r   
admin_emitadmin_enter_roomadmin_leave_roomadmin_disconnectr   _timestamps_trigger_event'_InstrumentedAsyncServer__trigger_eventbasic_enter_room*_InstrumentedAsyncServer__basic_enter_room_basic_enter_roombasic_leave_room*_InstrumentedAsyncServer__basic_leave_room_basic_leave_roomr(   _InstrumentedAsyncServer__emit_emiteio_handle_eio_connect_handle_eio_disconnectengineio.async_socketr.   _ok_InstrumentedAsyncServer__ok_eio_http_responsehandle_post_request-_InstrumentedAsyncServer__handle_post_request	functoolspartialmethod	__class___eio_handle_post_request_websocket_handler+_InstrumentedAsyncServer__websocket_handler_eio_websocket_handler
_send_ping#_InstrumentedAsyncServer__send_ping_eio_send_pingr   r.   s     r    r   "InstrumentedAsyncServer.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 	6 HHLL,,22,7,K,K)*3*A*ANN33T+;' +6*H*H')2)@)@NN114*9& 99%&1&<&<K#%.%<%<--t&5K" &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 )Nr'   r   r-   )r   r   r7   r6   r   r9   r8   r<   r;   r>   r(   r@   rE   rD   rC   r.   rH   rG   rN   rM   rQ   rP   rS   s     r    uninstrument$InstrumentedAsyncServer.uninstrumentg   s    99%&*hh&>&>DHH#  33 HH-   33 HH-$(HH$4$4$;$;DHH!88<<,,5*5*K*K')4)H)H&99%%0%<%<K" &r#   c                   ^ #    SnT R                   (       a  Sn[        T R                   [        5      (       a  UT R                   :H  nO[        T R                   [        5      (       a  UT R                   ;   nOP[        R
                  " T R                   5      (       a  T R                  U5      I S h  vN nOT R                  U5      nU(       d  [        S5      eU 4S jnT R                  R                  XQ5        g  NJ7f)NTFzauthentication failedc           	        >#    TR                   R                  S5      I S h  vN   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I S h  vN   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I S h  vN   g g  GN- N N7f)
Ng?AGGREGATED_EVENTS)EMITJOINLEAVE
DISCONNECTMJOINMLEAVEMDISCONNECTr'   
ALL_EVENTSconfigsupportedFeaturestor   all_sockets)r   sleepr   r   appendr(   r   r   get_namespacesget_participantsserialize_socket)sidfeaturesrg   nspeio_sidr   s        r    rc   5InstrumentedAsyncServer.admin_connect.<locals>.config   sG    ((..%%% ,,H>> 6 6yyM)-((--+>*I#&$2F2F   H H H yyM) 88++::<C(,(8(8(I(I)'#** 11#GDF)' =
 hhmmM;.2.B.B $ D D D * &HDs5   EEA+EEB9EE	EEE)	r   
isinstancedictlistinspectiscoroutinefunctionr   r   start_background_task)r   rm   environclient_authauthenticatedrc   s   `     r    r0   %InstrumentedAsyncServer.admin_connectw   s     99!M$))T** +tyy 8DIIt,, +tyy 8..tyy99*.))K*@$@M$(IIk$:M ,-DEE	D0 	&&v3= %As   B-C=0C;1AC=c                 T   #    U R                   R                  XEX2S9I S h  vN   g  N7f)Nre   )r   r(   )r   _r   room_filtereventdatas         r    r1   "InstrumentedAsyncServer.admin_emit   s     hhmmEKmMMMs   (&(c                    #    U R                   R                  R                  X$5       H'  u  pQU R                   R                  XSUS9I S h  vN   M)     g  N	7fNr&   )r   r   rk   
enter_roomr   r}   r   roomr~   rm   s         r    r2   (InstrumentedAsyncServer.admin_enter_room   I     hh&&77(FC((%%c9%EEE(E   AA
A
Ac                    #    U R                   R                  R                  X$5       H'  u  pQU R                   R                  XSUS9I S h  vN   M)     g  N	7fr   )r   r   rk   
leave_roomr   s         r    r3   (InstrumentedAsyncServer.admin_leave_room   r   r   c                    #    U R                   R                  R                  X$5       H&  u  pQU R                   R                  XRS9I S h  vN   M(     g  N	7fr   )r   r   rk   r,   )r   r}   r   closer~   rm   s         r    r4   (InstrumentedAsyncServer.admin_disconnect   sG     hh&&77(FC((%%c%???(?s   AA	A

Ac                    #    U R                   (       ad  U R                  R                  5         [        R                  " U R                   5      I S h  vN   S U l         U R                  R                  5         g g  N'7fN)r   r   setasynciogatherclear)r   s    r    shutdown InstrumentedAsyncServer.shutdown   sU     ??!!%%'..111"DO!!'')	 1s   AA;A9(A;c           
        #    [         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I S h  vN   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I S h  vN   OiU R                  R                  SUUU/USS  Q7[        R                  " U[        R                  5      R                  5       4U R                  S9I S h  vN   U R                  R$                  " X/UQ76 I S h  vN $  GN~ N N. N7f)	Nr   r%   socket_connectedr&   r,   r   socket_disconnectedevent_received)timer   r   eio_sid_from_sidr5   rl   r(   r   fromtimestampr   utc	isoformatr   r@   _get_socketupgradedrw   _check_for_upgrader7   )	r   r   r   argstrm   rp   serialized_socketreasons	            r    r6   &InstrumentedAsyncServer._trigger_event   s    IIK1gIhh&&77GG01HH((- $ 5 5cg N((-- 2!&&q(,,7AAC5 --   / / / 88<<++G4==..++W9Fl"  ,,S1!WF((-- 5&&q(,,7AAC	8
 --   / / / ((-- 0"ab"&&q(,,7AAC	3
 --   / / / XX--eFFFF//// GsJ   CIIC)IIA)I,I-$IIIIIIc                 p  #    [        S5       H  nU R                  R                  S5      I S h  vN    U R                  R                  R	                  U5      R
                  (       a3  U R                  R                  SUUSS.U R                  S9I S h  vN     g M     g  Nq N! [         a     M  f = f7f)N   socket_updated	websocket)idro   	transportr&   )	ranger   rh   r@   r   r   r(   r   KeyError)r   rp   rm   r   r}   s        r    r   *InstrumentedAsyncServer._check_for_upgrade   s     qA((..###	88<<++G4==((--(8!(%0; "&!5!5	 ( 7 7 7
  > #7  sE   -B6B!B6A B%B#B%B6#B%%
B3/B62B33B6c           	         U R                   R                  R                  XUU5      nU(       aQ  U R                  R	                  SUUU[
        R                  " [        R                  5      R                  5       445        U$ )Nroom_joined)
r   r   r9   r   ri   r   nowr   r   r   )r   rm   r   r   rp   rets         r    r:   )InstrumentedAsyncServer._basic_enter_room   so    hh11#$29;##]X\\*446	5 %  
r#   c           	          U(       aQ  U R                   R                  SUUU[        R                  " [        R
                  5      R                  5       445        U R                  R                  R                  XU5      $ )N	room_left)
r   ri   r   r   r   r   r   r   r   r<   )r   rm   r   r   s       r    r=   )InstrumentedAsyncServer._basic_leave_room   sf    ##[X\\*446	3 %  xx2234HHr#   c           
      D  #    U R                   R                  R                  " XU4XEUS.UD6I S h  vN nX0R                  :w  a  [	        U[
        5      (       a  U/[        U5      -   OX/n	[	        U[        5      (       d  U/nU R                   R                  R                  X45       Hm  u  pX;  d  M  U R                   R                  SUU
U	[        R                  " [        R                  5      R                  5       4U R                  S9I S h  vN   Mo     U$  N N7f)N)r   skip_sidcallback
event_sentr&   )r   r   r>   r   rr   tuplert   rk   r(   r   r   r   r   r   )r   r   r   r   r   r   r   kwargsr   
event_datarm   r}   s               r    r?   InstrumentedAsyncServer._emit   s    HH$$++))-)!') ) ,,,1;D%1H1H%4:-] h--$:((**;;IL&((--!" X\\2<<>	7
 "&!5!5 ( 7 7 7 M 
!)7s)   /D DA?D 5AD DD D c                 d  #    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      I S h  vN $  N7f)NrawConnection)
r   r   r@   create_eventr   rw   _emit_server_statsr   pushrA   )r   rp   rx   s      r    rA   +InstrumentedAsyncServer._handle_eio_connect  s       ($(HHLL$=$=$?D!??""hh<<'')DO 	/XX11'CCCCs   B'B0)B.*B0c                    #    U R                   R                  S5        U R                  R                  X5      I S h  vN $  N7f)NrawDisconnection)r   r   r   rB   )r   rp   r   s      r    rB   .InstrumentedAsyncServer._handle_eio_disconnect  s5     12XX44WEEEEs   :AAA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)r   r@   rE   r   r   len)r   r   r   r   r   s        r    rF   *InstrumentedAsyncServer._eio_http_response!  s\    hhll,7   9|,z3s:+?@
r#   c           	         #    U R                   " U5      I S h  vN nUR                  R                  S5        UR                  R                  S[        UR	                  SS5      5      5        U$  NV7f)N	packetsInbytesInCONTENT_LENGTHr   )rH   r   r   intget)socketr   rx   r   s       r    rL   0InstrumentedAsyncServer._eio_handle_post_request(  s`     0099{+s7;;'7;<	>
	 :s   A1A/AA1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      I S h  vN $  N7f)Nc                    >#    TR                   R                  S5        TR                   R                  S[        U5      5        U R                  U5      I S h  vN $  N7f)Nr   r   )r   r   r   _InstrumentedAsyncServer__send)wsr   r   s     r    _send=InstrumentedAsyncServer._eio_websocket_handler.<locals>._send0  sH     ""<0"":s4y94(((s   AAAAc                    >#    U R                  5       I S h  vN nTR                  R                  S5        TR                  R                  S[        U=(       d    S5      5        U$  NO7f)Nr   r    )_InstrumentedAsyncServer__waitr   r   r   )r   r   r   s     r    _wait=InstrumentedAsyncServer._eio_websocket_handler.<locals>._wait5  sP     		#C"";/""9c#)n=J $s   A)A'AA))sendr   rI   partialwaitr   rN   )r   r   r   r   r   s    `   r    rO   .InstrumentedAsyncServer._eio_websocket_handler/  sc     	)
	 GG	##E.GG	##E.//3333s   A:B=B>B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I S h  vN   M     U R                  " 5       I S h  vN $  N! N7f)Nr   r&   )rm   r   r   r   rj   sid_from_eio_sidrl   r(   r   r   r   r   r   r   rQ   )r   r   rp   r   r   rm   r   s          r    rR   &InstrumentedAsyncServer._eio_send_pingA  s     **IIK))88:I((""33GGCs$($9$9#:A%C!hhmm$6%**1hll;EEG9 "11 $ 3 3 3 ; '')))	3 *s+   A3D9A-D&D'DD
D
Dc                 2  #    [         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      I S h  vN   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I S h  vN   U R2                  (       a\  U R2                  R5                  S5      u  pVU R                  R                  XVU R0                  S9I S h  vN   U R2                  (       a  M\  U R                  R                  5       (       d  GM  g g  GNs  snf s  snf  N NJ7f)Nserver_stats)namesocketsCount)serverIdhostnamepiduptimeclientsCountpollingClientsCountaggregatedEvents
namespacesr&   r   )r   rt   r   handlerskeyssortr   is_setrh   r   r(   r   r   PIDr   r@   socketsvaluesr   r   get_and_clearr   roomsr   r   r   pop)r   
start_timer   sro   r   r   s          r    r   *InstrumentedAsyncServer._emit_server_statsO  s    YY[
$((++0023
''..00((..!;!;<<<((-- NN$))+
2 #DHHLL$8$8 9'* $ 4 4 ; ; = ( =1JJ  = (() %)$5$5$C$C$E
 (	) (c  $'(8(8(>(>(B(BdBZ))),T2%8  (	)1 --   / / /  """..2215hhmmE.2.B.B $ D D D """% ''..00<()/$Dsc   BJJB#JJ	J	 #JAJJ0J1AJ
JJ"JJ	JJ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_INFOi  )addressr   querysecureurlissuedr   )r   clientIdr   ro   r   	handshaker  )r   r   r   r@   r   rx   r   r5   r   items
startswithlowerr   r   r   r   r   r   r   	get_rooms)	r   rm   r   rp   r   rx   tmkvs	            r    rl   (InstrumentedAsyncServer.serialize_socketj  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)r   r   r   r   r   r   r   r   r   r   r   )Nz/adminFNr'      r   )NNN)__name__
__module____qualname____firstlineno__r!   r   rV   r0   r1   r2   r3   r4   r   r6   r   r:   r=   r?   rA   rB   rF   rL   rO   rR   r   rl   __static_attributes__ r#   r    r
   r
      s    EJKL695v= (4TNF
F
@
*G@
I GK!(DF4$*D6
r#   r
   )r   r   r   rI   ru   osr   r   urllib.parser   adminr   
exceptionsr   gethostnamer   getpidr   r
   r#  r#   r    <module>r*     sH     '   	   !  .iikt
 t
r#   