Ñò
:è¥Oc           @   sO  d  d k  l Z l Z l Z d  d k Z d  d k Z d  d k l Z d  d k l	 Z	 l
 Z
 l Z d  d k l Z l Z d  d k l Z d  d k l Z l Z d  d k Z e i e ƒ Z e
 e g Z h  Z d Z d	 Z d
 „  Z e i e i ƒ  ƒ i Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d e f d „  ƒ  YZ' d S(   iÿÿÿÿ(   t   callt   Popent   PIPEN(   t   AuthenticationRequired(   t   AUTH_TIMEOUTt   DATA_DIRt   HOME(   t   timet   sleep(   t   uuid4(   t   Threadt   Eventi  t   7dc          G   s   d  S(   N(   t   None(   t   _(    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt   <lambda>   s    c           C   s:   t  d d g d t t i d ƒ d t t i d ƒ ƒd j S(   Nt   klists   -st   stdoutt   wt   stderri    (   R    t   opent   ost   devnull(    (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt   checkTickets   s    c         C   s4   y t  ƒ  t |  t j SWn t j
 o t SXd  S(   N(   R   t   TOKENSR   t   KeyErrort   False(   t   token(    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt
   checkToken   s    c          C   s_   t  ƒ  }  x6 t i ƒ  D]( \ } } |  | t j o t | =q q Wt t ƒ  ƒ } |  t | <| S(   N(   R   R   t	   iteritemsR   t   strt   uuid(   t   nowR   t	   timestamp(    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt	   makeToken   s    	 
c      
   C   sj   t  d d d t d t |  g d t d t t i d ƒ d t t i d ƒ ƒ} | i | ƒ | i ƒ  d	 j S(
   Nt   kinits   -Fs   -ls   -rt   stdinR   R   R   i    (   R   t   TICKET_TIMER   R   R   R   t   communicatet   wait(   t   usernamet   passwordt   p(    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt
   getTickets)   s    	-c           C   s:   t  d d g d t t i d ƒ d t t i d ƒ ƒd j S(   NR#   s   -RR   R   R   i    (   R    R   R   R   (    (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt   renewTickets4   s    c          C   sq   yW t  d g t d t t i d ƒ d t t i d ƒ ƒ}  |  o t i d |  ƒ n Wn t j
 o n Xd  S(   Nt   aklogR   R   R   s   aklog failed: reason %d(   R    t   PATHSR   R   R   t   loggert   errort   OSError(   t   ret(    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt
   refreshAFS7   s    7 c         C   sY   d d  k  } | i t | d ƒ p t d ƒ ‚ n t |  | ƒ p t d ƒ ‚ n t ƒ  S(   Niÿÿÿÿt   sshds   Invalid credentials.s   Unable to get tickets.(   t   pamt   authenticatet   USERR   R+   R"   (   R(   R)   R5   (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyR6   ?   s    t   RenewTicketsTimerc           B   s)   e  Z e e d  „ Z d „  Z d „  Z RS(   c         C   s5   t  t |  ƒ i ƒ  | |  _ t ƒ  |  _ | |  _ d  S(   N(   t   superR8   t   __init__t   timeoutR   t   eventt   on_auth_expire(   t   selfR=   R   (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyR:   K   s    	c         C   sX   xQ |  i  i ƒ  p@ t ƒ  o t d ƒ t ƒ  n |  i ƒ  |  i  i |  i ƒ q Wd  S(   Ni   (   R<   t   is_setR,   R   R3   R=   R'   R;   (   R>   (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt   runQ   s     


c         C   s   |  i  i ƒ  d  S(   N(   R<   t   set(   R>   (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt   stopZ   s    (   t   __name__t
   __module__t   nopt   RENEW_TIMEOUTR:   R@   RB   (    (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyR8   J   s   		((   t
   subprocessR    R   R   R   t   pwdt
   exceptionsR   t   settingsR   R   R   R   R   R   R	   t	   threadingR
   R   t   loggingt	   getLoggerRC   R/   R.   R   RF   R%   RE   t   getpwuidt   geteuidt   pw_nameR7   R   R   R"   R+   R,   R3   R6   R8   (    (    (    s>   /mit/zmobile/testing/lib/python2.6/site-packages/zserv/auth.pyt   <module>   s,   								