ó
æ™xTc           @   sm   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Td d „ Z d d d „  ƒ  YZ d S(	   iÿÿÿÿ(   t   divisionN(   t   *t    c         C   s!  d } d } d } |  s0 t  j t  j ƒ  ƒ }  n  d } xä | rt t j ƒ  | | | ƒ } yV t  j  t  j t  j ƒ } | j |  | f ƒ | j d ƒ | j	 ƒ  d } d } | SWn t
 k
 rÓ | j ƒ  ~ n X| d k ré d }  n  | d k rd G|  G| GHt j ƒ  n  | d 7} q9 Wd  S(	   Ni   i N  iÿÿ  i    i   t	   localhosti
   s   Port assignment failed.(   t   sockett   getfqdnt   gethostnamet   intt   randomt   AF_INETt   SOCK_STREAMt   bindt   listent   getsocknamet	   Exceptiont   closet   syst   exit(   t   HOSTt   unbindt   lower_limitt   upper_limitt   it
   portnumbert   s(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt	   GetSocket   s0    	
	t   SocketConnectionc           B   s­   e  Z d  d d d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   R   i    c         C   s†   |  j  | ƒ t j |  j ƒ |  _ t | ƒ |  _ y |  j | g  ƒ } Wn t k
 r` d } n X| |  _	 t | ƒ |  _
 | |  _ d S(   sˆ  
    Contains all the information about a socket connection and more.

    Arguments.

      host - hostname of machine #IP address of the host

      dir - Working directory on host

      port - Port on host

      pid - PID of process on host

      name - hostname determined from host

      user - process owner

    Attributes

      secret - secret key for passing sensitive data
    t    N(   t   SetHostR   t   gethostbynamet   hostt   IPR   t   portt
   _deconPathR   t   dirt   pidt   user(   t   selfR   R"   R    R#   R$   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   __init__%   s    
	c         C   sž   yx d d
 d |  j  d |  j d d d d t t j j t |  j ƒ ƒ d d d t |  j	 ƒ d t |  j
 ƒ SWn t k
 r™ d	 t |  j ƒ SXd  S(   Ns   
 t   -i
   R   s    (s   ) s    Port s    PID s   socket connection s
   ----------s
   ----------s
   ----------(   R   R   t   applyt   ost   patht   joint   tupleR"   t   strR    R#   R   t   __dict__(   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   __repr__H   s    xc         C   sl   t  j j | ƒ } | } | d rM | j | d ƒ |  j | d | ƒ } n | j | d ƒ | j ƒ  | S(   Ni   i    (   R)   R*   t   splitt   appendR!   t   reverse(   R%   R*   t   plistt   tmp_list(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyR!   P   s    

c         C   s
   |  j  ƒ  S(   N(   R/   (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetStr[   s    c         C   s   t  |  j ƒ S(   N(   R   R    (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetPort^   s    c         C   s   |  j  S(   N(   R   (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetHosta   s    c         C   s   |  j  S(   N(   R   (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetHostnamed   s    c         C   s   |  j  S(   N(   R   (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetIPg   s    c         C   s.   t  t j j |  j ƒ } t | d d ƒ } | S(   Ns   \t   /(   R(   R)   R*   R+   R"   t   replace(   R%   R"   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetDirj   s    c         C   s   |  j  S(   N(   R#   (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetPIDo   s    c         C   s   |  j  S(   N(   R$   (   R%   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   GetUserr   s    c         C   s   t  | ƒ |  _ d  S(   N(   R   R    (   R%   R    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   SetPortu   s    c         C   sM   xF | D], } | t  k r t j | ƒ d |  _ Pq q Wt j | ƒ |  _ d  S(   Ni    (   t   lettersR   t   gethostbyaddrR   R   (   R%   R   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyR   x   s
    c         C   s@   x9 | D]( } | t  k r t j | ƒ |  _ Pq q W| |  _ d  S(   N(   R@   R   R   R   (   R%   R   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt
   SetHostOLD€   s
    c         C   s   |  j  | g  ƒ |  _ d  S(   N(   R!   R"   (   R%   R"   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   SetDirˆ   s    c         C   s   | |  _  d  S(   N(   R#   (   R%   R#   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   SetPID‹   s    c         C   s   | |  _  d  S(   N(   R$   (   R%   R$   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   SetUserŽ   s    (   t   __name__t
   __module__R&   R/   R!   R5   R6   R7   R8   R9   R<   R=   R>   R?   R   RB   RC   RD   RE   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyR   $   s"   #															(    (	   t
   __future__R    R   R   R)   R   t   stringR   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/server/FileSocket.pyt   <module>   s   
