ó
b=0Yc           @   s/   d  d l  Z  d  d l Z d d d „  ƒ  YZ d S(   iÿÿÿÿNt   ClPwdc           B   s   e  Z d  e f d „  ƒ  YZ d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d d „ Z RS(   t   NoSuchUserExceptionc           B   s   e  Z d  „  Z RS(   c         C   s   t  j |  d | f ƒ d  S(   Ns   No such user (%s)(   t	   Exceptiont   __init__(   t   selft   user(    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyR      s    (   t   __name__t
   __module__R   (    (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyR      s   c         C   sR   i  |  _  i  |  _ i  |  _ i  |  _ | d  k rE |  j d ƒ |  _ n	 | |  _ d  S(   Niô  (   t   _user_key_mapt   _uid_key_mapt   _user_full_mapt   _uid_full_mapt   Nonet   get_sys_min_uidt   _min_uid(   R   t   min_uid(    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyR   	   s    				c         C   s   |  j  ƒ  |  j S(   N(   t   _load_passwd_databaseR   (   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_user_dict   s    
c         C   s   |  j  ƒ  |  j S(   N(   R   R	   (   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_uid_dict   s    
c         C   s   |  j  ƒ  |  j S(   N(   R   R
   (   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_user_full_dict   s    
c         C   s   |  j  ƒ  |  j S(   N(   R   R   (   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_uid_full_dict   s    
c         C   s9   y |  j  ƒ  | SWn  t k
 r4 t j | ƒ ‚ n Xd S(   s*   
        Return pw_entry for user
        N(   R   t   KeyErrorR    R   (   R   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_pw_by_name#   s    c         C   s9   y |  j  ƒ  | SWn  t k
 r4 t j | ƒ ‚ n Xd S(   s7   
        Return list of passwd entries for uid
        N(   R   R   R    R   (   R   t   uid(    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_pw_by_uid,   s    c         C   s<   y |  j  ƒ  | j SWn  t k
 r7 t j | ƒ ‚ n Xd S(   s&   
        Returns uid for user
        N(   R   t   pw_uidR   R    R   (   R   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_uid5   s    c         C   s<   y |  j  ƒ  | j SWn  t k
 r7 t j | ƒ ‚ n Xd S(   s`   
        Returns homedir for a user
        @param user: string
        @return: string
        N(   R   t   pw_dirR   R    R   (   R   R   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   get_homedir>   s    c         C   sÔ   |  j  sÐ xÄ t j ƒ  D]³ } | |  j | j <| j |  j  k rQ g  |  j  | j <n  |  j  | j j | ƒ | j |  j k r | |  j | j <| j |  j	 k r¯ g  |  j	 | j <n  |  j	 | j j | ƒ q q Wn  d S(   sZ   
        Loads the passwd database and fills user_to_uid and user_to_homedir maps
        N(
   R   t   pwdt   getpwallR
   t   pw_nameR   t   appendR   R   R	   (   R   t   entry(    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyR   I   s    	c         C   sQ   y |  j  ƒ  | } Wn  t k
 r6 t j | ƒ ‚ n Xg  | D] } | j ^ q> S(   ss   
        Return names of users with uid specified
        @param uid: int
        @return: list of strings
        (   R   R   R    R   R   (   R   R   t   entriesR!   (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt	   get_namesY   s
    iô  c         C   s†   d } t  j j | ƒ r‚ t | d ƒ } xX | D]M } | j d ƒ r. y! t | j d ƒ d j ƒ  ƒ SWq{ t k
 rw q{ Xq. q. Wn  | S(   s   
        Return system defined MIN_UID from /etc/login.def or def_min_uid
        @param def_min_uid: int
        @return: MIN_UID: int
        s   /etc/login.defst   rt   UID_MINi   (	   t   ost   patht   existst   opent
   startswitht   intt   splitt   stript
   ValueError(   R   t   def_min_uidt   LOGIN_DEF_FILEt   linest   line(    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyR   g   s    !N(   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R#   R   (    (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyR       s   
													(    (   R   R&   R    (    (    (    s2   /usr/lib/python2.7/site-packages/clcommon/clpwd.pyt   <module>   s   