???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
¿œ^c           @   s   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d Z d d d „  ƒ  YZ d d l m	 Z	 d	 e e	 f d
 „  ƒ  YZ
 d S(   s   RPC Server module.iÿÿÿÿN(   t   fnmatch(   t   repri   t   Serverc           B   s€   e  Z d  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d d d	 d
 g Z
 d „  Z d „  Z d „  Z d d „ Z RS(   sD   RPC Server class.  Derive a class to implement a particular service.c         C   sŠ   t  | ƒ t  d ƒ k r' d | f } n  | |  _ | |  _ d  |  _ t j t j t j ƒ |  _ |  j j | ƒ |  j j	 d ƒ d |  _
 d  S(   Ni    t    i   (   t   typet   _addresst   _verboset   Nonet   _sockett   sockett   AF_INETt   SOCK_STREAMt   bindt   listent
   _listening(   t   selft   addresst   verbose(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyt   __init__   s    			c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyt   _setverbose   s    c         C   s   |  j  ƒ  d  S(   N(   t   _close(   R   (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyt   __del__    s    c         C   s/   d |  _  |  j r" |  j j ƒ  n  d  |  _ d  S(   Ni    (   R   R   t   closeR   (   R   (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR   #   s    		c         C   s   x |  j  r |  j ƒ  q Wd  S(   N(   R   t   _serve(   R   (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyt   _serverloop)   s    c         C   sØ   |  j  r d GHn  |  j j ƒ  \ } } |  j  rA d t | ƒ GHn  |  j | | ƒ sp d t | ƒ GH| j ƒ  d  S| j d ƒ } | j d ƒ } d } x= | rÓ | j ƒ  |  j  d k r¾ d GHn  |  j | | ƒ } q— Wd  S(   Ns   Wait for connection ...s   Accepted connection from %ss   *** Connection from %s refusedt   rt   wi   s   Wait for next request ...(	   R   R   t   acceptR   t   _verifyR   t   makefilet   flusht
   _dorequest(   R   t   connR   t   rft   wft   ok(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR   -   s"    	 	 
	
 s   192.16.201.*s   192.16.197.*s   132.151.1.*s
   129.6.64.*c         C   s7   | \ } } x$ |  j  D] } t | | ƒ r d Sq Wd S(   Ni   i    (   t   _validR    (   R   R    R   t   hostt   portt   pat(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR   ?   s
     c         C   sv  t  j | ƒ } y | j ƒ  } Wn t k
 r3 d SX|  j d k rU d t | ƒ GHn  yŠ | \ } } } d | k r‘ d  |  j | | ƒ | f } nM | d d k r· t d t | ƒ ‚ n' t	 |  | ƒ }	 d  t
 |	 | ƒ | f } Wn t j t j | f } n X| d k  r5| d  d
 k r5|  j d k r1d GHn  d S|  j d k rVd	 t | ƒ GHn  t  j | ƒ }
 |
 j | ƒ d S(   Ni    i   s   Got request: %st   .t   _s   illegal method name %si   s   Suppress replys   Send reply: %s(   NN(   t   picklet	   Unpicklert   loadt   EOFErrorR   R   R   t   _specialt	   NameErrort   getattrt   applyt   syst   exc_typet	   exc_valuet   Picklert   dump(   R   R!   R"   t   rpt   requestt
   methodnamet   argst   idt   replyt   methodt   wp(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR   E   s4       c         C   sQ   | d k r: t  |  d ƒ s3 t |  j ƒ  ƒ |  _ n  |  j St d t | ƒ ‚ d  S(   Ns   .methodst   _methodss#   unrecognized special method name %s(   t   hasattrt   tuplet   _listmethodsR?   R/   R   (   R   R9   R:   (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR.   _   s
    c         C   s‰   | s |  j  } n  | j j ƒ  } t d „  | ƒ } | j ƒ  xE | j D]: } |  j | ƒ } t | d „ | ƒ } | | t | ƒ )qG W| S(   Nc         S   s   |  d d k S(   Ni    R)   (    (   t   x(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyt   <lambda>i   R   c         S   s
   |  | k S(   N(    (   RC   t   names(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyRD   m   R   (   t	   __class__t   __dict__t   keyst   filtert   sortt	   __bases__RB   t   len(   R   t   clRE   t   baset	   basenames(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyRB   f   s     
N(   t   __name__t
   __module__t   __doc__t   VERBOSER   R   R   R   R   R   R$   R   R   R.   R   RB   (    (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR      s   								(   t   Securityt   SecureServerc           B   s   e  Z d  „  Z d „  Z RS(   c         G   s(   t  t j |  f | ƒ t j |  ƒ d  S(   N(   R1   R   R   RT   (   R   R:   (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR   w   s    c         C   s  d d  l  } |  j ƒ  } | j d | ƒ d } xE d | k rv t | ƒ d k  rv | j d ƒ } | si Pn  | | } q2 Wy | j | j | ƒ ƒ } Wn6 | j k
 rË |  j d k rÇ d Gt	 | ƒ GHn  d SX|  j
 | | ƒ s|  j d k rÿ d Gt	 | ƒ GHn  d S|  j d	 k rd
 GHn  d	 S(   Niÿÿÿÿs   %d
R   s   
id   i    s   Invalid response syntaxs   Invalid response valuei   s&   Response matches challenge.  Go ahead!(   t   stringt   _generate_challenget   sendRL   t   recvt   atolt   stript
   atol_errorR   R   t   _compare_challenge_response(   R   R    R   RV   t	   challenget   responset   data(    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyR   {   s,    !(   RP   RQ   R   R   (    (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyRU   u   s   	(    (   RR   R2   R	   R*   R    R   RS   R   t   securityRT   RU   (    (    (    s)   /usr/lib64/python2.7/Demo/pdist/server.pyt   <module>   s   d