<!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>

]Z`                 @   sf  d  Z  d d l Z d d l Z d d l Z d d l Z y d d l Z Wn e k
 rf d d l Z Yn Xd d l m	 Z d d d d d d	 d
 d d d d d g Z
 e e d  r e
 j d d d d g  e e d  r e j Z n	 e j Z Gd d   d  Z Gd d   d e  Z Gd d   d e  Z Gd d   d  Z Gd d   d  Z Gd d   d e e  Z Gd d   d e e  Z Gd d	   d	 e e  Z Gd d
   d
 e e  Z e e d  r#Gd d   d e  Z Gd  d   d e  Z Gd! d   d e e  Z Gd" d   d e e  Z Gd# d   d  Z Gd$ d   d e  Z Gd% d   d e  Z d S)&z0.4    N)	monotonic
BaseServer	TCPServer	UDPServerForkingUDPServerForkingTCPServerThreadingUDPServerThreadingTCPServerBaseRequestHandlerStreamRequestHandlerDatagramRequestHandlerThreadingMixInForkingMixInAF_UNIXUnixStreamServerUnixDatagramServerThreadingUnixStreamServerThreadingUnixDatagramServerPollSelectorc               @   s   e  Z d  Z d Z d d   Z d d   Z 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 S)!r   Nc             C   s.   | |  _  | |  _ t j   |  _ d |  _ d  S)NF)server_addressRequestHandlerClass	threadingEvent_BaseServer__is_shut_down_BaseServer__shutdown_request)selfr   r    r   1/opt/alt/python35/lib64/python3.5/socketserver.py__init__   s    		zBaseServer.__init__c             C   s   d  S)Nr   )r   r   r   r   server_activate   s    zBaseServer.server_activateg      ?c             C   s   |  j  j   zc t   S } | j |  t j  x6 |  j sg | j |  } | rZ |  j   |  j	   q2 WWd  QRXWd  d |  _ |  j  j
   Xd  S)NF)r   clear_ServerSelectorregister	selectors
EVENT_READr   select_handle_request_noblockservice_actionsset)r   Zpoll_intervalselectorreadyr   r   r   serve_forever   s    
	zBaseServer.serve_foreverc             C   s   d |  _  |  j j   d  S)NT)r   r   wait)r   r   r   r   shutdown   s    	zBaseServer.shutdownc             C   s   d  S)Nr   )r   r   r   r   r'      s    zBaseServer.service_actionsc          
   C   s   |  j  j   } | d  k r' |  j } n! |  j d  k	 rH t | |  j  } | d  k	 ra t   | } t   o } | j |  t j  xR | j	 |  } | r |  j
   S| d  k	 r | t   } | d k  r |  j   Sq WWd  QRXd  S)Nr   )socket
gettimeouttimeoutmintimer!   r"   r#   r$   r%   r&   handle_timeout)r   r0   deadliner)   r*   r   r   r   handle_request  s"    
zBaseServer.handle_requestc             C   s   y |  j    \ } } Wn t k
 r. d  SYn X|  j | |  r y |  j | |  Wq |  j | |  |  j |  Yq Xn |  j |  d  S)N)get_requestOSErrorverify_requestprocess_requesthandle_errorshutdown_request)r   requestclient_addressr   r   r   r&   ,  s    	z"BaseServer._handle_request_noblockc             C   s   d  S)Nr   )r   r   r   r   r3   @  s    zBaseServer.handle_timeoutc             C   s   d S)NTr   )r   r<   r=   r   r   r   r8   G  s    zBaseServer.verify_requestc             C   s!   |  j  | |  |  j |  d  S)N)finish_requestr;   )r   r<   r=   r   r   r   r9   O  s    zBaseServer.process_requestc             C   s   d  S)Nr   )r   r   r   r   server_closeX  s    zBaseServer.server_closec             C   s   |  j  | | |   d  S)N)r   )r   r<   r=   r   r   r   r>   `  s    zBaseServer.finish_requestc             C   s   |  j  |  d  S)N)close_request)r   r<   r   r   r   r;   d  s    zBaseServer.shutdown_requestc             C   s   d  S)Nr   )r   r<   r   r   r   r@   h  s    zBaseServer.close_requestc             C   sP   t  d d  t  d d d t  |  d d  l } | j   t  d d  d  S)N-(   z4Exception happened during processing of request fromend r   )print	traceback	print_exc)r   r<   r=   rF   r   r   r   r:   l  s    

zBaseServer.handle_error)__name__
__module____qualname__r0   r   r   r+   r-   r'   r5   r&   r3   r8   r9   r?   r>   r;   r@   r:   r   r   r   r   r      s    -
	c               @   s   e  Z d  Z e j Z e j Z d Z d Z	 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 S)r      FTc          	   C   sh   t  j |  | |  t j |  j |  j  |  _ | rd y |  j   |  j   Wn |  j     Yn Xd  S)N)r   r   r.   address_familysocket_typeserver_bindr   r?   )r   r   r   Zbind_and_activater   r   r   r     s    

zTCPServer.__init__c             C   sN   |  j  r% |  j j t j t j d  |  j j |  j  |  j j   |  _ d  S)N   )allow_reuse_addressr.   
setsockopt
SOL_SOCKETSO_REUSEADDRbindr   getsockname)r   r   r   r   rN     s    	zTCPServer.server_bindc             C   s   |  j  j |  j  d  S)N)r.   listenrequest_queue_size)r   r   r   r   r     s    zTCPServer.server_activatec             C   s   |  j  j   d  S)N)r.   close)r   r   r   r   r?     s    zTCPServer.server_closec             C   s   |  j  j   S)N)r.   fileno)r   r   r   r   rY     s    zTCPServer.filenoc             C   s   |  j  j   S)N)r.   accept)r   r   r   r   r6     s    zTCPServer.get_requestc             C   s:   y | j  t j  Wn t k
 r( Yn X|  j |  d  S)N)r-   r.   SHUT_WRr7   r@   )r   r<   r   r   r   r;     s
    zTCPServer.shutdown_requestc             C   s   | j    d  S)N)rX   )r   r<   r   r   r   r@     s    zTCPServer.close_requestN)rH   rI   rJ   r.   AF_INETrL   SOCK_STREAMrM   rW   rP   r   rN   r   r?   rY   r6   r;   r@   r   r   r   r   r   z  s   /		
c               @   sU   e  Z d  Z d Z e j Z d Z d d   Z d d   Z	 d d   Z
 d	 d
   Z d S)r   Fi    c             C   s.   |  j  j |  j  \ } } | |  j  f | f S)N)r.   recvfrommax_packet_size)r   dataZclient_addrr   r   r   r6     s    zUDPServer.get_requestc             C   s   d  S)Nr   )r   r   r   r   r     s    zUDPServer.server_activatec             C   s   |  j  |  d  S)N)r@   )r   r<   r   r   r   r;   
  s    zUDPServer.shutdown_requestc             C   s   d  S)Nr   )r   r<   r   r   r   r@     s    zUDPServer.close_requestN)rH   rI   rJ   rP   r.   
SOCK_DGRAMrM   r_   r6   r   r;   r@   r   r   r   r   r     s   	c               @   sR   e  Z d  Z d Z d Z d Z d d   Z d d   Z d d	   Z d
 d   Z	 d S)r   i,  NrB   c             C   s  |  j  d  k r d  Sx| t |  j   |  j k r y, t j d d  \ } } |  j  j |  Wq t k
 r{ |  j  j   Yq t k
 r PYq Xq Wx| |  j  j	   D]k } y/ t j | t j
  \ } } |  j  j |  Wq t k
 r |  j  j |  Yq t k
 rYq Xq Wd  S)NrO   r   )active_childrenlenmax_childrenoswaitpiddiscardChildProcessErrorr    r7   copyWNOHANG)r   pid_r   r   r   collect_children  s$    
zForkingMixIn.collect_childrenc             C   s   |  j    d  S)N)rn   )r   r   r   r   r3   <  s    zForkingMixIn.handle_timeoutc             C   s   |  j    d  S)N)rn   )r   r   r   r   r'   C  s    zForkingMixIn.service_actionsc             C   s   t  j   } | rN |  j d  k r- t   |  _ |  j j |  |  j |  d  Sy. |  j | |  |  j |  t  j d  Wn: z! |  j	 | |  |  j |  Wd  t  j d  XYn Xd  S)Nr   rO   )
rf   forkrc   r(   addr@   r>   r;   _exitr:   )r   r<   r=   rl   r   r   r   r9   J  s     zForkingMixIn.process_request)
rH   rI   rJ   r0   rc   re   rn   r3   r'   r9   r   r   r   r   r     s   "c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)r   Fc          	   C   sM   y! |  j  | |  |  j |  Wn% |  j | |  |  j |  Yn Xd  S)N)r>   r;   r:   )r   r<   r=   r   r   r   process_request_threadj  s    z%ThreadingMixIn.process_request_threadc             C   s;   t  j d |  j d | | f  } |  j | _ | j   d  S)Ntargetargs)r   Threadrr   daemon_threadsdaemonstart)r   r<   r=   tr   r   r   r9   w  s    zThreadingMixIn.process_requestN)rH   rI   rJ   rv   rr   r9   r   r   r   r   r   c  s   c               @   s   e  Z d  Z d S)r   N)rH   rI   rJ   r   r   r   r   r     s    c               @   s   e  Z d  Z d S)r   N)rH   rI   rJ   r   r   r   r   r     s    c               @   s   e  Z d  Z d S)r   N)rH   rI   rJ   r   r   r   r   r     s    c               @   s   e  Z d  Z d S)r	   N)rH   rI   rJ   r   r   r   r   r	     s    c               @   s   e  Z d  Z e j Z d S)r   N)rH   rI   rJ   r.   r   rL   r   r   r   r   r     s   c               @   s   e  Z d  Z e j Z d S)r   N)rH   rI   rJ   r.   r   rL   r   r   r   r   r     s   c               @   s   e  Z d  Z d S)r   N)rH   rI   rJ   r   r   r   r   r     s    c               @   s   e  Z d  Z d S)r   N)rH   rI   rJ   r   r   r   r   r     s    c               @   s@   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 S)
r
   c          
   C   sE   | |  _  | |  _ | |  _ |  j   z |  j   Wd  |  j   Xd  S)N)r<   r=   serversetuphandlefinish)r   r<   r=   rz   r   r   r   r     s    			
zBaseRequestHandler.__init__c             C   s   d  S)Nr   )r   r   r   r   r{     s    zBaseRequestHandler.setupc             C   s   d  S)Nr   )r   r   r   r   r|     s    zBaseRequestHandler.handlec             C   s   d  S)Nr   )r   r   r   r   r}     s    zBaseRequestHandler.finishN)rH   rI   rJ   r   r{   r|   r}   r   r   r   r   r
     s   
c               @   s@   e  Z d  Z d	 Z d Z d Z d Z d d   Z d d   Z d S)
r   rO   r   NFc             C   s   |  j  |  _ |  j d  k	 r. |  j j |  j  |  j rS |  j j t j t j d  |  j j	 d |  j
  |  _ |  j j	 d |  j  |  _ d  S)NTrbwb)r<   
connectionr0   
settimeoutdisable_nagle_algorithmrQ   r.   IPPROTO_TCPTCP_NODELAYmakefilerbufsizerfilewbufsizewfile)r   r   r   r   r{     s    	zStreamRequestHandler.setupc             C   sS   |  j  j s5 y |  j  j   Wn t j k
 r4 Yn X|  j  j   |  j j   d  S)N)r   closedflushr.   errorrX   r   )r   r   r   r   r}     s    zStreamRequestHandler.finishrb   )	rH   rI   rJ   r   r   r0   r   r{   r}   r   r   r   r   r     s   
c               @   s(   e  Z d  Z d d   Z d d   Z d S)r   c             C   sG   d d l  m } |  j \ |  _ |  _ | |  j  |  _ |   |  _ d  S)Nr   )BytesIO)ior   r<   Zpacketr.   r   r   )r   r   r   r   r   r{     s    zDatagramRequestHandler.setupc             C   s#   |  j  j |  j j   |  j  d  S)N)r.   sendtor   getvaluer=   )r   r   r   r   r}     s    zDatagramRequestHandler.finishN)rH   rI   rJ   r{   r}   r   r   r   r   r     s   ) __version__r.   r#   rf   errnor   ImportErrordummy_threadingr2   r   __all__hasattrextendr   r!   SelectSelectorr   r   r   r   r   r   r   r   r	   r   r   r   r   r
   r   r   r   r   r   r   <module>{   sJ   	
	~Q.+