<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]0Q                 @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d d   Z d d   Z d d d  Z Gd d	   d	 e j  Z d
 d Z d Z Gd d   d e j  Z i  Z e	 j d   Z e	 j d   Z Gd d   d e  Z Gd d   d e  Z d d   Z Gd d   d e  Z  Gd d   d e j! e  Z" Gd d   d e  Z# Gd d   d e  Z$ d d   Z% d d    Z& Gd! d"   d" e  Z' d# d$   Z( d S)%    Nc             C   s   t  j |   } | S)N)marshalloads)msco r   (/opt/alt/python35/lib64/python3.5/rpc.pyunpickle_code/   s    r   c             C   s   t  j |   } t | f f S)N)r   dumpsr   )r   r   r   r   r   pickle_code4   s    r
   c             C   s2   t  j   } t | |  } | j |   | j   S)N)ioBytesIOCodePicklerdumpgetvalue)objprotocolfpr   r   r   r	   9   s    r	   c               @   s/   e  Z d  Z e j e i Z e j e j  d S)r   N)	__name__
__module____qualname__typesCodeTyper
   dispatch_tableupdatecopyregr   r   r   r   r   ?   s   r      i   z	127.0.0.1c               @   sO   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d S)	RPCServerNc             C   s,   | d  k r t  } t j j |  | |  d  S)N)
RPCHandlersocketserver	TCPServer__init__)selfaddrZhandlerclassr   r   r   r!   H   s    zRPCServer.__init__c             C   s   d  S)Nr   )r"   r   r   r   server_bindM   s    zRPCServer.server_bindc             C   s   |  j  j |  j  d  S)N)socketconnectserver_address)r"   r   r   r   server_activateQ   s    zRPCServer.server_activatec             C   s   |  j  |  j f S)N)r%   r'   )r"   r   r   r   get_requestZ   s    zRPCServer.get_requestc             C   s   y   Wn t  k
 r   Yn t j } t d d d d | t d d | t d t j   j d | t d | d | t d t |  d | t j	 d |  t d	 d | t d d d | t
 j d
  Yn Xd  S)N
-(   filezUnhandled server exception!z
Thread: %szClient Address: z	Request: z#
*** Unrecoverable, server exiting!r   )
SystemExitsys
__stderr__print	threadingcurrent_threadnamerepr	traceback	print_excos_exit)r"   requestZclient_addresserfr   r   r   handle_error^   s    	zRPCServer.handle_error)r   r   r   r!   r$   r(   r)   r<   r   r   r   r   r   F   s
   	r   c               @   sr  e  Z d  Z d Z d d d d  Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z d d    Z d! d"   Z d# d$   Z d% d&   Z d' d(   Z d) d*   Z d+ Z d, Z d Z d- d.   Z d/ d0   Z d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z  d9 d:   Z! d S);SocketIOr   Nc             C   s^   t  j   |  _ | d  k	 r$ | |  _ | |  _ | d  k r? t } | |  _ i  |  _ i  |  _ d  S)N)	r2   r3   
sockthread	debuggingsockobjecttableobjtable	responsescvars)r"   r@   rB   r?   r   r   r   r!      s    				zSocketIO.__init__c             C   s,   |  j  } d  |  _  | d  k	 r( | j   d  S)N)r@   close)r"   r@   r   r   r   rE      s    		zSocketIO.closec             C   s   t  j d  d  S)Nr   )r8   r9   )r"   r   r   r   exithook   s    zSocketIO.exithookc             G   si   |  j  s d  S|  j d t t j   j  } x" | D] } | d t |  } q4 Wt | d t j d  S)N r-   )	r?   locationstrr2   r3   r4   r1   r/   r0   )r"   argssar   r   r   debug   s    	 zSocketIO.debugc             C   s   | |  j  | <d  S)N)rB   )r"   oidobjectr   r   r   register   s    zSocketIO.registerc             C   s'   y |  j  | =Wn t k
 r" Yn Xd  S)N)rB   KeyError)r"   rN   r   r   r   
unregister   s    zSocketIO.unregisterc             C   s'  |  j  d |  y | \ } \ } } } } Wn t k
 rD d SYn X| |  j k re d d | f f S|  j | } | d k r i  }	 t | |	  d |	 f S| d k r i  }
 t | |
  d |
 f St | |  s d d | f f St | |  } y~ | d	 k r6| | |   } t | t  r,t	 |  } d | f S| d
 k rbt
 j | | | | f f  d Sd d | f SWn t k
 r  Yn t k
 r  Yn t k
 r  Yns t k
 r} z d | f SWYd  d  } ~ XnE d } t | | | | f d t j t j d t j  d SYn Xd  S)Nz
localcall:ERRORBad request formatzUnknown object id: %r__methods__OK__attributes__zUnsupported method name: %rCALLQUEUEQUEUEDzUnsupported message type: %sCALLEXCzU*** Internal Error: rpc.py:SocketIO.localcall()

 Object: %s 
 Method: %s 
 Args: %s
r-   	EXCEPTION)rS   rT   )rZ   N)r\   N)rM   	TypeErrorrB   _getmethods_getattributeshasattrgetattr
isinstanceRemoteObject	remoterefrequest_queueputr.   KeyboardInterruptOSError	Exceptionr1   r/   r0   r6   r7   )r"   seqr:   howrN   
methodnamerJ   kwargsr   methods
attributesmethodretexmsgr   r   r   	localcall   sT    	


 zSocketIO.localcallc             C   s8   |  j  d | |  |  j | | | |  } |  j |  S)Nzremotecall:asynccall: )rM   	asynccallasyncreturn)r"   rN   rl   rJ   rm   rj   r   r   r   
remotecall   s    zSocketIO.remotecallc             C   s8   |  j  d | |  |  j | | | |  } |  j |  S)Nzremotequeue:asyncqueue: )rM   
asyncqueuerv   )r"   rN   rl   rJ   rm   rj   r   r   r   remotequeue   s    zSocketIO.remotequeuec             C   s   d | | | | f f } |  j    } t j   |  j k rR t j   } | |  j | <|  j d | | | | |  |  j | | f  | S)NrX   zasynccall:%d:)newseqr2   r3   r>   	ConditionrD   rM   
putmessage)r"   rN   rl   rJ   rm   r:   rj   cvarr   r   r   ru      s    zSocketIO.asynccallc             C   s   d | | | | f f } |  j    } t j   |  j k rR t j   } | |  j | <|  j d | | | | |  |  j | | f  | S)NrY   zasyncqueue:%d:)rz   r2   r3   r>   r{   rD   rM   r|   )r"   rN   rl   rJ   rm   r:   rj   r}   r   r   r   rx      s    zSocketIO.asyncqueuec             C   sG   |  j  d |  |  j | d d } |  j  d | |  |  j |  S)Nz#asyncreturn:%d:call getresponse(): waitg?zasyncreturn:%d:response: )rM   getresponsedecoderesponse)r"   rj   responser   r   r   rv      s    zSocketIO.asyncreturnc             C   s   | \ } } | d k r | S| d k r, d  S| d k rI |  j  d  d  S| d k rp |  j  d  |  j   d  S| d k r |  j  d |  t |   | d	 k r |  j  d
 |  |  t | |   d  S)NrV   rZ   r\   zdecoderesponse: EXCEPTIONEOFzdecoderesponse: EOFrS   zdecoderesponse: Internal ERROR:r[   zdecoderesponse: Call Exception:)rM   decode_interrupthookRuntimeErrorSystemError)r"   r   rk   whatr   r   r   r      s&    
zSocketIO.decoderesponsec             C   s
   t   d  S)N)EOFError)r"   r   r   r   r     s    zSocketIO.decode_interrupthookc             C   sD   y |  j  d d  d d  Wn# t k
 r? |  j d  d  SYn Xd  S)Nmyseqr~   g?zmainloop:return)r   r   rM   )r"   r   r   r   mainloop  s
    zSocketIO.mainloopc             C   sO   |  j  | |  } | d  k	 rK | \ } } | d k rK | |  j |  f } | S)NrV   )_getresponse_proxify)r"   r   r~   r   rk   r   r   r   r   r     s    zSocketIO.getresponsec             C   sH   t  | t  r t |  | j  St  | t  rD t t |  j |   S| S)N)rb   RemoteProxyRPCProxyrN   listmapr   )r"   r   r   r   r   r   '  s
    zSocketIO._proxifyc             C   s   |  j  d |  t j   |  j k rQ x |  j | |  } | d  k	 r( | Sq( Wn} |  j | } | j   x | |  j k r | j   qk W|  j | } |  j  d | | f  |  j | =|  j | =| j	   | Sd  S)Nz_getresponse:myseq:z-_getresponse:%s: thread woke up: response: %s)
rM   r2   r3   r>   pollresponserD   acquirerC   r~   release)r"   r   r~   r   r}   r   r   r   r   /  s"    
	


zSocketIO._getresponsec             C   s   |  j  d |  _  } | S)N   )nextseq)r"   rj   r   r   r   rz   E  s    zSocketIO.newseqc             C   s  |  j  d | d  y t |  } Wn4 t j k
 r[ t d t |  d t j   Yn Xt j	 d t
 |   | } x t
 |  d k ryD t j g  |  j g g   \ } } } |  j j | d  t   } Wn$ t t f k
 r t d   Yn X| | d   } q{ Wd  S)Nzputmessage:%d:r   zCannot pickle:r-   z<izsocket no longer exists)rM   r	   picklePicklingErrorr1   r5   r/   r0   structpacklenselectr@   sendBUFSIZEAttributeErrorr]   rh   )r"   messagerK   rwxnr   r   r   r|   I  s    $ zSocketIO.putmessage       c             C   s   |  j    t |  j  |  j k  r t j |  j j   g g  g  |  \ } } } t |  d k re d  Sy |  j j t  } Wn t	 k
 r t
  Yn Xt |  d k r t
  |  j | 7_ |  j    |  j   S)Nr   )_stage0r   buffbufneedr   r@   filenorecvr   rh   r   _stage1)r"   r~   r   r   r   rK   r   r   r   
pollpacket]  s    
-
zSocketIO.pollpacketc             C   ss   |  j  d k ro t |  j  d k ro |  j d  d  } |  j d d   |  _ t j d |  d |  _ d |  _  d  S)Nr   r   z<i   )bufstater   r   r   unpackr   )r"   rK   r   r   r   r   m  s
    $zSocketIO._stage0c             C   sp   |  j  d k rl t |  j  |  j k rl |  j d  |  j  } |  j |  j d   |  _ d |  _ d |  _  | Sd  S)Nr   r   r   )r   r   r   r   )r"   packetr   r   r   r   t  s    '		zSocketIO._stage1c             C   s   |  j  |  } | d  k r d  Sy t j |  } Wnm t j k
 r t d d t j t d t |  d t j t j	 d t j  t d d t j   Yn X| S)Nz-----------------------r-   zcannot unpickle packet:)
r   r   r   UnpicklingErrorr1   r/   r0   r5   r6   print_stack)r"   r~   r   r   r   r   r   pollmessage|  s    zSocketIO.pollmessagec       
      C   s  xy t  j d  } Wn t j k
 r- Yn, X| \ } } | d | f f } |  j |  y# |  j |  } | d  k r{ d  SWn5 t k
 r |  j   d  SYn t k
 r d  SYn X| \ } } | d } |  j	 d | | f  | d k r[|  j	 d |  |  j
 | |  } |  j	 d | | f  | d k rI|  j | | f  q | d k r q q | | k rk| S|  j j | d   }	 |	 d  k	 r |	 j   | |  j | <|	 j   |	 j   q q Wd  S)	Nr   rV   zpollresponse:%d:myseq:%srX   rY   zpollresponse:%d:localcall:call:z%pollresponse:%d:localcall:response:%s)rX   rY   )response_queuegetqueueEmptyr|   r   r   
handle_EOFr   rM   rt   rD   r   rC   notifyr   )
r"   r   r~   Zqmsgrj   r   r   Zresqrk   cvr   r   r   r     sL    
	
	


zSocketIO.pollresponsec             C   sq   |  j    |  j d  xI |  j D]> } |  j | } | j   d |  j | <| j   | j   q! W|  j   d  S)Nr   r   )r   N)EOFhookrM   rD   r   rC   r   r   rF   )r"   keyr   r   r   r   r     s    


zSocketIO.handle_EOFc             C   s   d  S)Nr   )r"   r   r   r   r     s    zSocketIO.EOFhook)"r   r   r   r   r!   rE   rF   rM   rP   rR   rt   rw   ry   ru   rx   rv   r   r   r   r   r   r   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   }   s>   .

Ir=   c               @   s   e  Z d  Z d S)rc   N)r   r   r   r   r   r   r   rc     s   rc   c             C   s    t  |   } |  t | <t |  S)N)idrA   r   )r   rN   r   r   r   rd     s    
rd   c               @   s   e  Z d  Z d d   Z d S)r   c             C   s   | |  _  d  S)N)rN   )r"   rN   r   r   r   r!     s    zRemoteProxy.__init__N)r   r   r   r!   r   r   r   r   r     s   r   c               @   s@   e  Z d  Z d Z d Z d d   Z d d   Z d d   Z d	 S)
r   Fz#Sc             C   s6   |  | _  t j |  |  t j j |  | | |  d  S)N)Zcurrent_handlerr=   r!   r   BaseRequestHandler)r"   r@   r#   Zsvrr   r   r   r!     s    	zRPCHandler.__init__c             C   s   |  j    d  S)N)r   )r"   r   r   r   handle  s    zRPCHandler.handlec             C   s   t  |  |  S)N)r   )r"   rN   r   r   r   get_remote_proxy  s    zRPCHandler.get_remote_proxyN)r   r   r   r?   rH   r!   r   r   r   r   r   r   r     s
   r   c               @   sR   e  Z d  Z d Z d Z d Z e j e j d d  Z	 d d   Z
 d d	   Z d
 S)	RPCClientFz#Cr   c             C   s9   t  j  | |  |  _ |  j j |  |  j j d  d  S)Nr   )r%   listening_sockbindlisten)r"   addressfamilytyper   r   r   r!     s    zRPCClient.__init__c             C   sw   |  j  j   \ } } |  j r4 t d | d t j | d t k rW t j |  |  n t d | d t j t	  d  S)Nz****** Connection request from r-   r   z** Invalid host: )
r   acceptr?   r1   r/   r0   	LOCALHOSTr=   r!   rh   )r"   Zworking_sockr   r   r   r   r     s    	zRPCClient.acceptc             C   s   t  |  |  S)N)r   )r"   rN   r   r   r   r     s    zRPCClient.get_remote_proxyN)r   r   r   r?   rH   r   r%   AF_INETSOCK_STREAMr!   r   r   r   r   r   r   r     s   
r   c               @   sL   e  Z d  Z d Z d Z d d   Z d d   Z d d   Z d d	   Z d S)
r   Nc             C   s   | |  _  | |  _ d  S)N)sockiorN   )r"   r   rN   r   r   r   r!   #  s    	zRPCProxy.__init__c             C   s   |  j  d  k r |  j   |  j  j |  rA t |  j |  j |  S|  j d  k rZ |  j   | |  j k r |  j j |  j d | f i   } | St	 |   d  S)N__getattribute__)
_RPCProxy__methods_RPCProxy__getmethodsr   MethodProxyr   rN   _RPCProxy__attributes_RPCProxy__getattributesrw   r   )r"   r4   valuer   r   r   __getattr__'  s    

zRPCProxy.__getattr__c             C   s%   |  j  j |  j d f  i   |  _ d  S)NrW   )r   rw   rN   r   )r"   r   r   r   Z__getattributes5  s    zRPCProxy.__getattributesc             C   s%   |  j  j |  j d f  i   |  _ d  S)NrU   )r   rw   rN   r   )r"   r   r   r   Z__getmethods9  s    zRPCProxy.__getmethods)	r   r   r   r   r   r!   r   r   r   r   r   r   r   r     s   r   c             C   sp   x9 t  |   D]+ } t |  |  } t |  r d | | <q Wt |  t  rl x |  j D] } t | |  qU Wd  S)Nr   )dirra   callablerb   r   	__bases__r^   )r   rn   r4   attrsuperr   r   r   r^   =  s    r^   c             C   s@   x9 t  |   D]+ } t |  |  } t |  s d | | <q Wd  S)Nr   )r   ra   r   )r   ro   r4   r   r   r   r   r_   H  s    r_   c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c             C   s   | |  _  | |  _ | |  _ d  S)N)r   rN   r4   )r"   r   rN   r4   r   r   r   r!   P  s    		zMethodProxy.__init__c             O   s%   |  j  j |  j |  j | |  } | S)N)r   rw   rN   r4   )r"   rJ   rm   r   r   r   r   __call__U  s    !zMethodProxy.__call__N)r   r   r   r!   r   r   r   r   r   r   N  s   r   c             C   s   |  d  k r d  Sd  t  _ t |   } y t j j |  WnL t k
 r d } | j | d  } | j | d  } t j j |  Yn Xt j j d  |  t  _ d  S)Nasciibackslashreplacestrictr*   )	builtins_r5   r/   stdoutwriteUnicodeEncodeErrorencodedecode)r   textencodingbytesr   r   r   displayhook]  s    	r   ))r/   r8   r   r%   r   r   r   r   r2   r   r6   r   r   r   r   r   r
   r	   Picklerr   r   r   r    r   rA   Queuere   r   rO   r=   rc   rd   r   r   r   r   r   r^   r_   r   r   r   r   r   r   <module>   sH   
2 j