Ñò
Vù¥Oc           @   sô  d  d k  l  Z  l Z d  d k l Z d  d k l Z d  d k l Z d  d k l Z l	 Z	 l
 Z
 l Z d  d k l Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d d	 k l Z l Z d  d k Z d  d
 k l Z d  d k Z e i d ƒ Z d Z d Z e i i e i  d ƒ Z! e i i e i  d ƒ Z" d Z# d e f d „  ƒ  YZ$ d e  e% f d „  ƒ  YZ& d „  Z' e( d j oh e' ƒ  Z) e) i* d ƒ Z+ e) i* d ƒ o& e i, e _- e i ƒ  i. e i- ƒ n e e& d e) d e+ ƒn d S(   iÿÿÿÿ(   t   SimpleXMLRPCServert   SimpleXMLRPCRequestHandler(   t   SubscriptionManager(   t	   Messenger(   t   time(   t   exportedt   assertCompatablet   assertAuthenticatedt	   runserver(   t   authenticateNi   (   t   VERSIONt   zephyr(   t   ServerKilledt   xmlrpci    s   0.0.0.0s   certs/server_public.pems   certs/server_private.pemt   ZephyrXMLRPCServert   ZephyrXMLRPCRequestHandlerc           B   s   e  Z d  „  Z d „  Z RS(   c         G   s!   t  i d | |  i ƒ  | Œ d  S(   Ns   %s - (   t   loggert   debugt   address_string(   t   selft   formatt   args(    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt   log_message   s    c         C   s!   t  i d | |  i ƒ  | Œ d  S(   Ns   %s - (   R   t   errorR   (   R   R   R   (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt	   log_error   s    (   t   __name__t
   __module__R   R   (    (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyR      s   	c           B   s}   e  Z d  Z e e e e i e e	 d „ Z
 d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z d „  Z RS(	   s   XML-RPCc         C   s«   | |  _  | |  _ | |  _ t t |  ƒ i | | f d t d t ƒt i	 ƒ  t i
 ƒ  |  _ t t i ƒ  ƒ |  _ t t |  i ƒ ƒ |  _ t t |  i d | ƒƒ |  _ d  S(   Nt
   allow_nonet   requestHandlert   db_path(   t   use_sslt   keyfilet   certfilet   superR   t   __init__t   TrueR   R   t   initt   sendert   usernameR   t   preferencest   PreferencesR   t   subscriptionsR   t	   messenger(   R   t   hostt   portt   sslt   dbR   R    (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyR"   !   s    			(
c         C   sR   |  i  o1 t i |  i d |  i d |  i d t ƒ|  _ n t t |  ƒ i	 ƒ  d  S(   NR   R    t   server_side(
   R   R-   t   wrap_sockett   socketR   R    R#   R!   R   t   server_bind(   R   (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyR2   2   s    
1c         C   s™  yvt  | ƒ } | d j o t Sy t | i d ƒ ƒ Wn t j
 o t d ƒ ‚ n X| d j o t |  i | d ƒ Sy t | i d ƒ ƒ Wn t j
 o t d ƒ ‚ n X|  } xI | i	 d ƒ D]8 } t
 | | ƒ } t
 | d t ƒ p t d	 ƒ ‚ qË qË Wy | | Œ  SWn] t j
 oQ } t i t
 t i t i ƒ  d
 ƒ d t ƒ ƒ i d | i i | i f ƒ n XWn t j
 o t ƒ  ‚ n Xd  S(   Nt   getServerVersioni    s   Minimum version unspecified.R	   i   s!   No authentication token provided.t   .t   _exports   Method not supported.iÿÿÿÿR   s   %s: %s(   t   listR
   R   t   popt
   IndexErrort	   TypeErrorR	   R&   R   t   splitt   getattrt   Falset   AttributeErrort	   Exceptiont   loggingt	   getLoggert   inspectt	   getmodulet   traceR   R   t	   __class__t   messaget   KeyboardInterruptR   (   R   t   methodt   paramst   objt   it   e(    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt	   _dispatch7   s4     Qc      	   C   sà   |  i  i ƒ  \ } } t  i ƒ  } | d j ou | d j oh t  i  t  i t  i ƒ } z> y! | i d ƒ | i ƒ  d } Wn t  i j
 o n XWd  | i ƒ  Xn h | d 6| d 6t |  i	 ƒ d 6|  i
 p |  i p d	 d
 6S(   Ns   localhost.localdomains	   127.0.0.1s   mit.eduiP   i    t   HOSTt   PORTt   SSLt    t   CERT_PUB(   s   mit.eduiP   (   R1   t   getsocknamet   getfqdnt   AF_INETt
   SOCK_DGRAMt   connectR   t   closet   intR   R    R   (   R   t   addrR,   R+   t   s(    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt   getInfoY   s      	c         C   s   t  ƒ  |  i S(   s   Returns the uptime in seconds.(   R   t
   start_time(   R   (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt   uptimen   s    c         C   s   |  i  S(   N(   R&   (   R   (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt   getUsert   s    c         C   s   t  S(   N(   R#   (   R   (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt   pingy   s    c         C   sE   t  ƒ  |  _ |  i i ƒ  z t t |  ƒ i ƒ  Wd  |  i i ƒ  Xd  S(   N(   R   R\   R*   t   startR!   R   t   serve_forevert   quit(   R   (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyRa   }   s
    (   R   R   t   TYPEt   DEFAULT_HOSTt   DEFAULT_PORTR<   t   settingst	   ZEPHYR_DBt   DEFAULT_SERVER_KEYt   DEFAULT_SERVER_CERTR"   R2   RL   R[   R   R]   R^   R_   Ra   (    (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyR      s   		"	c          C   s^  d d  k  }  |  i d d ƒ } | i d d d d d t d	 t d
 d d d ƒ| i d d d d d
 d d t d d ƒ| i d d d d d
 d d t d d ƒ| i d d d d d
 d d t d d ƒ| i d d d d d
 d d t d t	 d d ƒ| i d  d! d d" d t d	 t d
 d d d# ƒ| i d$ d% d d& d t d	 t d
 d d d' ƒt
 | i ƒ  ƒ S((   Niÿÿÿÿt   descriptions˜   A server for receiving,                                       storing, sending, and searching zephyrs                                       over XMLRPC.s   -ss   --sslt   destR-   t   defaultt   constt   actiont   store_constt   helps   Use ssl.s   -ks	   --keyfileR   t   stores   The server's private key.s   -cs   --certR    s   The server's public key.s   -as	   --addressR+   s   Address to listen on.s   -ps   --portR,   t   types   Port to listen on.s   -fs   --forkt   doforks   Daemonize the server.s   -ds   --debugR   s   Log debugging output.(   t   argparset   ArgumentParsert   add_argumentR<   R#   Rh   Ri   Rd   RX   Re   t   varst
   parse_args(   Rt   t   parser(    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyRx   …   sV    		t   __main__Rs   R   R   (   s   ZephyrXMLRPCServer(/   R    R   R)   R   R*   R   R   t   serverR   R   R   R   t   authR	   R'   R?   t   osR-   R1   RP   R
   R   Rf   t
   exceptionsR   RA   R@   R   Re   Rd   t   patht   joint   DATA_DIRRi   Rh   t   __all__R   t   objectR   Rx   R   R   R7   Rs   t   DEBUGt	   LOG_LEVELt   setLevel(    (    (    s@   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/xmlrpc.pyt   <module>   s6   "$f	>	