ó
E®Uc           @   si   d  d l  Z  d  d l Z d  d l Z d  d l j Z d  d l m Z m Z m	 Z	 d e f d „  ƒ  YZ
 d S(   iÿÿÿÿN(   t   Commandt   CommandErrort   Optiont   cmd_testparmc           B   s<  e  Z d  Z d Z i e j d 6e j d 6Z e d d e	 d d ƒe d d e	 d d	 ƒe d
 d e	 d d ƒe d d e	 d d ƒe d d d d e
 d d ƒe d d d d d e
 d d ƒe d d e	 d d ƒe d d d d e
 d d ƒg Z g  Z d d d d e
 d e
 d d „ Z d „  Z d „  Z d „  Z d „  Z RS(    s$   Syntax check the configuration file.s   %prog [options]t	   sambaoptst   versionoptss   --section-namet   typet   helps!   Limit testparm to a named sections   --parameter-names#   Limit testparm to a named parameters   --client-namesH   Client DNS name for 'hosts allow' checking (should match reverse lookup)s   --client-ips,   Client IP address for 'hosts allow' checkings   --suppress-promptt   actiont
   store_truet   defaults   Suppress prompt for enters   -vs	   --verboses   Show default options toos   --servers   Set %L macro to servernames   --show-all-parameterss*   Show the parameters, type, possible valuesc         C   sÊ  |
 r t  d ƒ ‚ n  |	 r* t  d ƒ ‚ n  | d  k	 rQ | d  k rQ t d ƒ ‚ n  y | j ƒ  } Wn t k
 r‚ } t | ƒ ‚ n Xt j d ƒ |  j d ƒ } | j d | j	 ƒ | j d ƒ |  j
 | | ƒ } | oæ |  j | | ƒ } | d  k	 r| d  k	 r|  j | | | | ƒ n– | d  k	 s2| d  k	 rw| d  k r^| | j t j | j | ƒ q°| j t j | | ƒ n9 | s|  j j d ƒ t j j ƒ  n  | j t j | ƒ | rºd  St d	 ƒ ‚ d  S(
   Ns   --server not yet implementeds)   --show-all-parameters not yet implementedsH   Both a DNS name and an IP address are required for the host access checki   t   testparms   Loaded smb config files from %ss   Loaded services file OK.s6   Press enter to see a dump of your service definitions
s   Invalid smb.conf(   t   NotImplementedErrort   NoneR   t   get_loadparmt   RuntimeErrort   sambat   set_debug_levelt
   get_loggert   infot
   configfilet   do_global_checkst   do_share_checkst   check_client_accesst   dumpt   syst   stdoutt   default_servicet   dump_a_parametert   outft   writet   stdint   readline(   t   selfR   R   t   section_namet   parameter_namet	   client_ipt   client_namet   verboset   suppress_promptt   show_all_parameterst   servert   lpt   errt   loggert   valid(    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyt   runI   s<    
c         C   s‘  t  } | j d ƒ } t j | ƒ s= | j d | ƒ t } n  | j d ƒ } t j | ƒ st | j d | ƒ t } n  | j d ƒ } t j j | ƒ s® | j d | ƒ t } n  | j d ƒ } t j j | ƒ sè | j d | ƒ t } n  | j d	 ƒ } t	 | ƒ d
 k r| j d ƒ t } n  | d k rA| j d ƒ t } n  | j d ƒ }	 | j d ƒ j
 ƒ  }
 |	 d k r|
 d k r| j d ƒ n  | S(   Ns   netbios names+   netbios name %s is not a valid netbios namet	   workgroups-   workgroup name %s is not a valid netbios namet   lockdirs    lock directory %s does not exists   pid directorys   pid directory %s does not exists   winbind separatori   s=   the 'winbind separator' parameter must be a single character.t   +sC   'winbind separator = +' might cause problems with group membership.s   server roles   unix charsets"   active directory domain controllers   domain controllert   dcs   UTF-8t   UTF8sX   When acting as Active Directory domain controller, unix charset is expected to be UTF-8.(   s"   active directory domain controllers   domain controllerR2   (   s   UTF-8R3   (   t   Truet   getR   t   valid_netbios_namet   errort   Falset   ost   patht   isdirt   lent   uppert   warning(   R!   R*   R,   R-   t   netbios_nameR/   R0   t   piddirt   winbind_separatort   rolet   charset(    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyR   w   sB    								
c         C   s   t  |  j ƒ ‚ d  S(   N(   R   t   allow_access(   R!   t	   deny_listt
   allow_listt   cnamet   caddr(    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyRD   ©   s    c         C   s  t  } x7 | j ƒ  D]) } t | ƒ d k r | j d ƒ Pq q WxÔ | j ƒ  D]Æ } | j d | ƒ } | j d | ƒ } | rÅ xE | D]: } d | k s¢ d | k r„ | j d | | ƒ t } q„ q„ Wn  | rM xE | D]: } d | k sð d | k rÒ | j d | | ƒ t } qÒ qÒ WqM qM W| S(	   Ni   s¶   You have some share names that are longer than 12 characters. These may not be accessible to some older clients. (Eg. Windows9x, WindowsMe, and not listed in smbclient in Samba 3.0.)s
   hosts denys   hosts allowt   *t   ?sB   Invalid character (* or ?) in hosts deny list (%s) for service %s.sC   Invalid character (* or ?) in hosts allow list (%s) for service %s.(   R4   t   servicesR<   R>   R5   R7   R8   (   R!   R*   R,   R-   t   sRE   RF   t   entry(    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyR   ¬   s,    	
	
c         C   s¤   x | j  ƒ  D] } |  j | j d ƒ | j d ƒ | | ƒ r† |  j | j d | ƒ | j d | ƒ | | ƒ r† | j d | | | ƒ q | j d | | | ƒ q Wd  S(   Ns
   hosts denys   hosts allows#   Allow connection from %s (%s) to %ss"   Deny connection from %s (%s) to %s(   RK   RD   R5   R   (   R!   R*   R,   RG   RH   RL   (    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyR   É   s    !	$N(   t   __name__t
   __module__t   __doc__t   synopsist   optionst   SambaOptionst   VersionOptionst   takes_optiongroupsR   t   strR8   t   takes_optionst
   takes_argsR   R.   R   RD   R   R   (    (    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyR   (   s:   
		+	2		(   R9   R   R   t   samba.getoptt   getoptRR   t   samba.netcmdR    R   R   R   (    (    (    s9   /usr/lib/python2.7/dist-packages/samba/netcmd/testparm.pyt   <module>!   s
   