ó
E®Uc           @   sÐ   d  Z  d Z d d l Z d d l Z d d l m Z m Z m Z m Z d d l	 m
 Z
 d d l Z d e j f d „  ƒ  YZ d e j f d	 „  ƒ  YZ d
 „  Z d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s7   Support for parsing Samba-related command-line options.t   restructuredTextiÿÿÿÿN(   t   Credentialst   AUTO_USE_KERBEROSt   DONT_USE_KERBEROSt   MUST_USE_KERBEROS(   t
   Hostconfigt   SambaOptionsc           B   sV   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   s+   General Samba-related command line options.c         C   s  d d l  m } t j j |  | d ƒ |  j d d d d d t d	 d
 d d d |  j ƒ|  j d d d d d t d	 d d d d |  j	 ƒ|  j d d d d t d	 d d d d |  j
 ƒ|  j d d d d t d	 d d d d |  j ƒd  |  _ | ƒ  |  _ d  |  _ d  S(   Niÿÿÿÿ(   t   LoadParms   Samba Common Optionss   -ss   --configfilet   actiont   callbackt   typet   metavart   FILEt   helps   Configuration files   -ds   --debuglevelt
   DEBUGLEVELs   debug levels   --optiont   OPTIONs%   set smb.conf option from command lines   --realmt   REALMs   set the realm name(   t   samba.paramR   t   optparset   OptionGroupt   __init__t
   add_optiont   strt   _load_configfilet   intt   _set_debuglevelt   _set_optiont
   _set_realmt   Nonet   _configfilet   _lpt   realm(   t   selft   parserR   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   %   s$    



	c         C   s   |  j  S(   s?   Return path to the smb.conf file specified on the command line.(   R   (   R    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   get_loadparm_path9   s    c         C   s   | |  _  d  S(   N(   R   (   R    t   optiont   opt_strt   argR!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   =   s    c         C   sE   | d k  r( t  j d | | f ƒ ‚ n  |  j j d t | ƒ ƒ d  S(   Ni    s   invalid %s option value: %ss   debug level(   R   t   OptionValueErrorR   t   setR   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   @   s    	c         C   s    |  j  j d | ƒ | |  _ d  S(   NR   (   R   R'   R   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   F   s    c         C   sˆ   | j  d ƒ d k r' t j d ƒ ‚ n  | j d ƒ } y |  j j | d | d ƒ Wn, t k
 rƒ } t j d | | f ƒ ‚ n Xd  S(   Nt   =iÿÿÿÿs&   --option option takes a 'a=b' argumenti    i   s$   invalid --option option value %r: %s(   t   findR   R&   t   splitR   R'   t	   Exception(   R    R#   R$   R%   R!   t   at   e(    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   J   s    c         C   sj   |  j  d k	 r% |  j j |  j  ƒ n> t j d ƒ d k	 rV |  j j t j d ƒ ƒ n |  j j ƒ  |  j S(   s?   Return loadparm object with data specified on the command line.t   SMB_CONF_PATHN(   R   R   R   t   loadt   ost   getenvt   load_default(   R    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   get_loadparmU   s    c         C   s   t  |  j ƒ  ƒ S(   N(   R   R3   (   R    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   get_hostconfig_   s    (   t   __name__t
   __module__t   __doc__R   R"   R   R   R   R   R3   R4   (    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   "   s   							
t   VersionOptionsc           B   s    e  Z d  Z d „  Z d „  Z RS(   s/   Command line option for printing Samba version.c      	   C   s?   t  j j |  | d ƒ |  j d d d d d |  j d d ƒd  S(   Ns   Version Optionss   -Vs	   --versionR   R	   R   s   Display version number(   R   R   R   R   t   _display_version(   R    R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   e   s    	c         C   s%   d d  l  } | j GHt j d ƒ d  S(   Niÿÿÿÿi    (   t   sambat   versiont   syst   exit(   R    R#   R$   R%   R!   R:   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR9   k   s    (   R5   R6   R7   R   R9   (    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR8   c   s   	c         C   s_   |  j  ƒ  d	 k r t S|  j  ƒ  d
 k r, t S|  j  ƒ  d k rB t St j d | |  f ƒ ‚ d  S(   Nt   yest   truet   1t   not   falset   0t   autos   invalid %s option value: %s(   s   yesR?   R@   (   RA   RB   RC   (   RD   (   t   lowerR   R   R   R   R&   (   R%   R$   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   parse_kerberos_argq   s    	t   CredentialsOptionsc           B   sw   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z e d „ Z RS(   s0   Command line options for specifying credentials.c         C   sÜ  | |  _  | d  k	 r% d | |  _ n	 d |  _ t |  _ d  |  _ t |  _ t j	 j
 |  | |  j ƒ |  j d d d d d d |  j d t d	 d
 ƒ|  j d d d d d d	 d d t d |  j ƒ|  j d d d d d d d t d	 d d |  j ƒ|  j d d d d d d d t d	 d d |  j ƒ|  j d d d d d	 d d |  j ƒ|  j d d d d d d d t d	 d d |  j ƒ|  j d d d d d d d t d	 d  d |  j ƒ|  j d! d" d d d	 d# d |  j ƒt ƒ  |  _ d  S($   Ns   Credentials Options (%s)s   Credentials Optionss   --simple-bind-dnR   t   DNR   R	   R
   R   s   DN to use for a simple binds
   --passwordt   PASSWORDt   Passwords   -Us
   --usernamet   USERNAMEt   Usernames   -Ws   --workgroupt	   WORKGROUPt	   Workgroups   -Ns	   --no-passs   Don't ask for a passwords   -ks
   --kerberost   KERBEROSs   Use Kerberost    s   --ipaddresst	   IPADDRESSs   IP address of servers   -Ps   --machine-passs#   Use stored machine account password(   t   special_nameR   t   sectiont   Truet   ask_for_passwordt	   ipaddresst   Falset   machine_passR   R   R   t   _add_optiont   _set_simple_bind_dnR   t   _set_passwordt   _parse_usernamet   _parse_workgroupt   _set_no_passwordt   _set_kerberost   _set_ipaddresst   _set_machine_passR   t   creds(   R    R!   RR   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   €   sD    					


c         O   s   |  j  d  k r |  j | | Ž  Sd } xC | D]; } | j d ƒ sG q, n  | | j d d |  j  ƒ f 7} q, W|  j | | Ž  d  S(   Ns   --s   --%s-(    (   RR   R   R   t
   startswitht   replace(   R    t   args1t   kwargst   args2R,   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyRY   ¦   s    $c         C   s   |  j  j | ƒ t |  _ d  S(   N(   Rb   t   parse_stringRW   RX   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR\   ±   s    c         C   s   |  j  j | ƒ d  S(   N(   Rb   t
   set_domain(   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR]   µ   s    c         C   s&   |  j  j | ƒ t |  _ t |  _ d  S(   N(   Rb   t   set_passwordRW   RU   RX   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR[   ¸   s    	c         C   s   t  |  _ d  S(   N(   RW   RU   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR^   ½   s    c         C   s   t  |  _ d  S(   N(   RT   RX   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyRa   À   s    c         C   s   | |  _  d  S(   N(   RV   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR`   Ã   s    c         C   s   |  j  j t | | ƒ ƒ d  S(   N(   Rb   t   set_kerberos_stateRF   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR_   Æ   s    c         C   s   |  j  j | ƒ d  S(   N(   Rb   t   set_bind_dn(   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyRZ   É   s    c         C   s   |  j  j | ƒ |  j r, |  j  j | ƒ n |  j rE |  j  j ƒ  n  | r† |  j  j ƒ  r† y |  j  j | ƒ Wq† t k
 r‚ q† Xn  |  j  S(   sˆ   Obtain the credentials set on the command-line.

        :param lp: Loadparm object to use.
        :return: Credentials object
        (   Rb   t   guessRX   t   set_machine_accountRU   t   set_cmdline_callbackst   authentication_requestedR+   (   R    t   lpt   fallback_machine(    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   get_credentialsÌ   s    		N(   R5   R6   R7   R   R   RY   R\   R]   R[   R^   Ra   R`   R_   RZ   RW   Rs   (    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyRG   }   s   &									t   CredentialsOptionsDoublec           B   sP   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 d „ Z
 RS(   s?   Command line options for specifying credentials of two servers.c         C   s(  t  j |  | ƒ t |  _ |  j d d d d d d |  j d t d d ƒ|  j d	 d d
 d d d d d t d |  j ƒ|  j d d d d d d t d d d |  j ƒ|  j d d d d d d t d d d |  j	 ƒ|  j d d d d d ƒ|  j d d d d d d t d d d |  j
 ƒt ƒ  |  _ d  S(   Ns   --simple-bind-dn2R   t   DN2R   R	   R
   R   s   DN to use for a simple binds   --password2t	   PASSWORD2RJ   s   --username2t	   USERNAME2s   Username for second servers   --workgroup2t
   WORKGROUP2s   Workgroup for second servers
   --no-pass2t
   store_trues.   Don't ask for a password for the second servers   --kerberos2t	   KERBEROS2s   Use Kerberos(   RG   R   RT   t   no_pass2R   t   _set_simple_bind_dn2R   t   _set_password2t   _parse_username2t   _parse_workgroup2t   _set_kerberos2R   t   creds2(   R    R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR   æ   s,    	


c         C   s   |  j  j | ƒ d  S(   N(   R   Rh   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR~   þ   s    c         C   s   |  j  j | ƒ d  S(   N(   R   Ri   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR     s    c         C   s   |  j  j | ƒ t |  _ d  S(   N(   R   Rj   RW   R{   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR}     s    c         C   s   |  j  j t | | ƒ ƒ d  S(   N(   R   Rk   RF   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR€     s    c         C   s   |  j  j | ƒ d  S(   N(   R   Rl   (   R    R#   R$   R%   R!   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyR|     s    c         C   sX   | r |  j  j | ƒ n |  j  j ƒ  s8 |  j  j ƒ  n  |  j rQ |  j  j ƒ  n  |  j  S(   sÅ   Obtain the credentials set on the command-line.

        :param lp: Loadparm object to use.
        :param guess: Try guess Credentials from environment
        :return: Credentials object
        (   R   Rm   t   get_usernamet   set_anonymousR{   Ro   (   R    Rq   Rm   (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   get_credentials2  s    	(   R5   R6   R7   R   R~   R   R}   R€   R|   RT   R„   (    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyRt   ã   s   						(   R7   t   __docformat__R   R0   t   samba.credentialsR   R   R   R   t   samba.hostconfigR   R<   R   R   R8   RF   RG   Rt   (    (    (    s0   /usr/lib/python2.7/dist-packages/samba/getopt.pyt   <module>   s   "A	f