
8Yc           @   s  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z e j Z d  d l m	 Z	 m
 Z
 d  d l Z y e j e j d  Wn$ e j k
 r e j j d  n Xd   Z e d  r d  d l Z n  d e	 f d     YZ d	 e
 f d
     YZ d f  d     YZ d e f d     YZ e d k re j e j e j  e j d  e d  rqe   Z n	 e   Z e j e j    n  d S(   iN(   t   OptionParsert   IndentedHelpFormattert    s%   Warning: Unsupported locale setting.
c         C   s   t  j d j |   d k S(   Ni    (   t   syst   argvt   find(   t   name(    (    s#   /usr/share/authconfig/authconfig.pyt   runsAs%   s    s   authconfig-tuit   UnihelpOptionParserc           B   s   e  Z d d   Z RS(   c         C   s~   | d  k r t j } n  t j   } t | d d   } | sI | d k rR | } n  | j |  j   j |  j	 | d   d  S(   Nt   encodingt   asciit   replace(
   t   NoneR   t   stdoutt   localet   getpreferredencodingt   getattrt   writet   format_helpt   decodet   encode(   t   selft   filet   srcencodingR	   (    (    s#   /usr/share/authconfig/authconfig.pyt
   print_help,   s    	N(   t   __name__t
   __module__R   R   (    (    (    s#   /usr/share/authconfig/authconfig.pyR   +   s   t   NonWrapFormatterc           B   s   e  Z d    Z RS(   c         C   s  g  } |  j  | } |  j |  j d } t |  | k r[ d |  j d | f } |  j } n8 d |  j d | | f } d |  j d | | f } d } | j |  | j r |  j |  } | j d | d | f  n  | d d k r | j d  n  d j |  S(   Ni   s   %*s%s
R   s	   %*s%-*s  i    is   
(   t   option_stringst   help_positiont   current_indentt   lent   appendt   helpt   expand_defaultt   join(   R   t   optiont   resultt   optst	   opt_widtht   indent_firstt	   help_text(    (    s#   /usr/share/authconfig/authconfig.pyt   format_option6   s     	(   R   R   R*   (    (    (    s#   /usr/share/authconfig/authconfig.pyR   5   s   t
   Authconfigc           B   s}   e  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(   c         C   sC   t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ t  |  _ d |  _ d  S(   Ni    (   t   Falset	   nis_availt   kerberos_availt
   ldap_availt
   sssd_availt   cache_availt   fprintd_availt   retval(   R   (    (    s#   /usr/share/authconfig/authconfig.pyt   __init__Z   s    						c         C   s   d S(   Nt
   authconfig(    (   R   (    (    s#   /usr/share/authconfig/authconfig.pyt   modulec   s    c         C   s$   t  j j d |  j   | f  d  S(   Ns   %s: %s
(   R   t   stderrR   R6   (   R   t   error(    (    s#   /usr/share/authconfig/authconfig.pyt
   printErrorf   s    c         C   su   d } d } xX | D]P } | d k r2 | d 7} n  | rO | t  |  d 7} n  | | 7} | d 7} q W| d 7} | S(   Ni    t   <t   |t   =i   t   >(   t   str(   R   t   lt   addidxt   idxR!   t   item(    (    s#   /usr/share/authconfig/authconfig.pyt   listHelpi   s    

c      	   C   sB  t  d  |  j   } |  j   d k r5 | d 7} n  t | d t d t   } | j d d d d	 d	 t  d
  | j d d d d d	 t  d  | j d d d d	 t  d  | j d d d d d	 t  d  | j d d d d	 t  d  | j d d |  j t j t  d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d t  d  d	 t  d  | j d  d t  d!  d	 t  d"  | j d# d d d	 t  d$  | j d% d d d	 t  d&  | j d' d d d	 t  d(  | j d) d d d	 t  d*  | j d+ d t  d!  d	 t  d,  | j d- d t  d.  d	 t  d/  | j d0 d1 d d d	 t  d2  | j d3 d4 d d d	 t  d5  | j d6 d d d	 t  d7  | j d8 d d d	 t  d9  | j d: d t  d;  d	 t  d<  | j d= d d d	 t  d>  | j d? d d d	 t  d@  | j dA d d d	 t  dB  | j dC d d d	 t  dD  | j dE d t  dF  d	 t  dG  |  j t j	   t
  } | j dH d | d	 t  dI  | j dJ d d d	 t  dK  | j dL d d d	 t  dM  | j dN d d d	 t  dO  | j dP d d d	 t  dQ  | j dR d d d	 t  dS  | j dT d d d	 t  dU  | j dV d t  d!  d	 t  dW  | j dX d t  d!  d	 t  dY  | j dZ d t  d[  d	 t  d\  | j d] d d d	 t  d^  | j d_ d d d	 t  d`  | j da d d d	 t  db  | j dc d d d	 t  dd  | j de d d d	 t  df  | j dg d d d	 t  dh  | j di d d d	 t  dj  | j dk d d d	 t  dl  | j dm d dn d	 t  do  | j dp d t  d[  d	 t  dq  | j dr d t  ds  d	 t  dt  | j du d t  dv  d	 t  dw  | j dx dy dz d t  d{  d	 t  d|  | j d} d d~ d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d t  d  d	 t  d  | j d d t  d[  d	 t  d  | j d d t  ds  d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d t  d  d	 t  d  | j d d t  d  d	 t  d  | j d d t  d  d	 t  d  | j d d t  d  d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  | j d d t  d  d	 t  d  | j d d d d	 t  d  | j d d d d	 t  d  |  j   d k r| j dd d d	 t  d | j dd d d	 t  d n" | j ddd d d	 t  d | j dd d d	 t  d | j d	d d d	 t  d
 | j dd t  d d	 t  d | j dd t  d d	 t  d | j dd d d	 t  d | j   \ |  _ } | r|  j t  d  t j d n  |  j   d k r>|  j j r>|  j j r>|  j j r>|  j j r>|  j j r>|  j j r>|  j j r>| j   t j d n  d  S(  Ns   usage: %s [options]R5   se    {--update|--updateall|--test|--probe|--restorebackup <name>|--savebackup <name>|--restorelastbackup}t   add_help_optiont	   formatters   -hs   --helpt   actionR!   s   show this help message and exits   --enableshadows   --useshadowt
   store_trues$   enable shadowed passwords by defaults   --disableshadows%   disable shadowed passwords by defaults   --enablemd5s   --usemd5s   enable MD5 passwords by defaults   --disablemd5s    disable MD5 passwords by defaults
   --passalgot   metavars&   hash/crypt algorithm for new passwordss   --enableniss*   enable NIS for user information by defaults   --disableniss+   disable NIS for user information by defaults   --nisdomains   <domain>s   default NIS domains   --nisservers   <server>s   default NIS servers   --enableldaps+   enable LDAP for user information by defaults   --disableldaps,   disable LDAP for user information by defaults   --enableldapauths)   enable LDAP for authentication by defaults   --disableldapauths*   disable LDAP for authentication by defaults   --ldapservers#   default LDAP server hostname or URIs   --ldapbasedns   <dn>s   default LDAP base DNs   --enableldaptlss   --enableldapstarttlss&   enable use of TLS with LDAP (RFC-2830)s   --disableldaptlss   --disableldapstarttlss'   disable use of TLS with LDAP (RFC-2830)s   --enablerfc2307bissB   enable use of RFC-2307bis schema for LDAP user information lookupss   --disablerfc2307bissC   disable use of RFC-2307bis schema for LDAP user information lookupss   --ldaploadcacerts   <URL>s    load CA certificate from the URLs   --enablesmartcards0   enable authentication with smart card by defaults   --disablesmartcards1   disable authentication with smart card by defaults   --enablerequiresmartcards0   require smart card for authentication by defaults   --disablerequiresmartcards7   do not require smart card for authentication by defaults   --smartcardmodules   <module>s    default smart card module to uses   --smartcardactions(   action to be taken on smart card removals   --enablefingerprints9   enable authentication with fingerprint readers by defaults   --disablefingerprints:   disable authentication with fingerprint readers by defaults   --enableecryptfss"   enable automatic per-user ecryptfss   --disableecryptfss#   disable automatic per-user ecryptfss   --enablekrb5s)   enable kerberos authentication by defaults   --disablekrb5s*   disable kerberos authentication by defaults	   --krb5kdcs   default kerberos KDCs   --krb5adminservers   default kerberos admin servers   --krb5realms   <realm>s   default kerberos realms   --enablekrb5kdcdnss'   enable use of DNS to find kerberos KDCss   --disablekrb5kdcdnss(   disable use of DNS to find kerberos KDCss   --enablekrb5realmdnss)   enable use of DNS to find kerberos realmss   --disablekrb5realmdnss*   disable use of DNS to find kerberos realmss   --enablewinbinds.   enable winbind for user information by defaults   --disablewinbinds/   disable winbind for user information by defaults   --enablewinbindauths,   enable winbind for authentication by defaults   --disablewinbindauths-   disable winbind for authentication by defaults   --smbsecuritys   <user|server|domain|ads>s*   security mode to use for samba and winbinds
   --smbrealms5   default realm for samba and winbind when security=adss   --smbserverss	   <servers>s(   names of servers to authenticate againsts   --smbworkgroups   <workgroup>s'   workgroup authentication servers are ins   --smbidmapranges   --smbidmapuids   --smbidmapgids   <lowest-highest>s4   uid range winbind will assign to domain or ads userss   --winbindseparators   <\>s   the character which will be used to separate the domain and user part of winbind-created user names if winbindusedefaultdomain is not enableds   --winbindtemplatehomedirs   </home/%D/%U>sG   the directory which winbind-created users will have as home directoriess   --winbindtemplateshells   </bin/false>sD   the shell which winbind-created users will have as their login shells   --enablewinbindusedefaultdomains[   configures winbind to assume that users with no domain in their user names are domain userss    --disablewinbindusedefaultdomains_   configures winbind to assume that users with no domain in their user names are not domain userss   --enablewinbindofflines)   configures winbind to allow offline logins   --disablewinbindofflines+   configures winbind to prevent offline logins   --enablewinbindkrb5s+   winbind will use Kerberos 5 to authenticates   --disablewinbindkrb5s2   winbind will use the default authentication methods   --winbindjoins   <Administrator>s>   join the winbind domain or ads realm now as this administrators   --enableipav2s?   enable IPAv2 for user information and authentication by defaults   --disableipav2s@   disable IPAv2 for user information and authentication by defaults   --ipav2domains-   the IPAv2 domain the system should be part ofs   --ipav2realms   the realm for the IPAv2 domains   --ipav2servers   the server for the IPAv2 domains   --enableipav2nontps-   do not setup the NTP against the IPAv2 domains   --disableipav2nontps0   setup the NTP against the IPAv2 domain (default)s   --ipav2joins	   <account>s%   join the IPAv2 domain as this accounts   --enablewinss#   enable wins for hostname resolutions   --disablewinss$   disable wins for hostname resolutions   --enablepreferdnss3   prefer dns over wins or nis for hostname resolutions   --disablepreferdnss:   do not prefer dns over wins or nis for hostname resolutions   --enablehesiods-   enable hesiod for user information by defaults   --disablehesiods.   disable hesiod for user information by defaults   --hesiodlhss   <lhs>s   default hesiod LHSs   --hesiodrhss   <rhs>s   default hesiod RHSs   --enablesssdsO   enable SSSD for user information by default with manually managed configurations   --disablesssdsV   disable SSSD for user information by default (still used for supported configurations)s   --enablesssdauthsM   enable SSSD for authentication by default with manually managed configurations   --disablesssdauthsT   disable SSSD for authentication by default (still used for supported configurations)s   --enableforcelegacys;   never use SSSD implicitly even for supported configurationss   --disableforcelegacys4   use SSSD implicitly if it supports the configurations   --enablecachecredss5   enable caching of user credentials in SSSD by defaults   --disablecachecredss6   disable caching of user credentials in SSSD by defaults   --enablecachesX   enable caching of user information by default (automatically disabled when SSSD is used)s   --disablecaches.   disable caching of user information by defaults   --enablelocauthorizes1   local authorization is sufficient for local userss   --disablelocauthorizes1   authorize local users also through remote services   --enablepamaccesss.   check access.conf during account authorizations   --disablepamaccesss5   do not check access.conf during account authorizations   --enablesysnetauths0   authenticate system accounts by network servicess   --disablesysnetauths0   authenticate system accounts by local files onlys   --enablemkhomedirs6   create home directories for users on their first logins   --disablemkhomedirs=   do not create home directories for users on their first logins   --passminlens   <number>s   minimum length of a passwords   --passminclasss1   minimum number of character classes in a passwords   --passmaxrepeats;   maximum number of same consecutive characters in a passwords   --passmaxclassrepeatsD   maximum number of consecutive characters of same class in a passwords   --enablereqlowers6   require at least one lowercase character in a passwords   --disablereqlowers1   do not require lowercase characters in a passwords   --enablerequppers6   require at least one uppercase character in a passwords   --disablerequppers1   do not require uppercase characters in a passwords   --enablereqdigits(   require at least one digit in a passwords   --disablereqdigits#   do not require digits in a passwords   --enablereqothers2   require at least one other character in a passwords   --disablereqothers-   do not require other characters in a passwords   --enablefaillocksN   enable account locking in case of too many consecutive authentication failuress   --disablefaillocksG   disable account locking on too many consecutive authentication failuress   --faillockargss	   <options>s   the pam_faillock module optionss	   --nostarts+   do not start/stop portmap, ypbind, and nscds   --tests>   do not update the configuration files, only print new settingss   authconfig-tuis   --backs<   display Back instead of Cancel in the main dialog of the TUIs   --kickstarts1   do not display the deprecated text user interfaces   --updatesD   opposite of --test, update configuration files with changed settingss   --updatealls   update all configuration filess   --probes)   probe network for defaults and print thems   --savebackups   <name>s(   save a backup of all configuration filess   --restorebackups)   restore the backup of configuration filess   --restorelastbackupsX   restore the backup of configuration files saved before the previous configuration changes   unexpected argumenti   (   t   _R6   R   R,   R   t
   add_optionRC   t   authinfot   password_algorithmst   getSmartcardActionst   Truet
   parse_argst   optionsR9   R   t   exitt   probet   testt   updatet	   updateallt
   savebackupt   restorebackupt   restorelastbackupR   (   R   t   usaget   parsert   actshelpt   args(    (    s#   /usr/share/authconfig/authconfig.pyt   parseOptionsv   s    '
c         C   s   t  j |  j  } | j   | j rF | j rF d | j | j f GHn  | j rp | j rp d | j | j f GHn  | j r d | j | j	 p d | j
 p d f GHn  d  S(   Ns   hesiod %s/%ss   ldap %s/%s
s   krb5 %s/%s/%s
R   (   RK   t   AuthInfoR9   RR   t	   hesiodLHSt	   hesiodRHSt
   ldapServert
   ldapBaseDNt   kerberosRealmt   kerberosKDCt   kerberosAdminServer(   R   t   info(    (    s#   /usr/share/authconfig/authconfig.pyRR     s    
				c         C   sL   t  j |  j  |  _ |  j j   |  _ |  j j d  k rH t |  j _ n  d  S(   N(	   RK   t   readR9   Rf   t   copyt   pristineinfot   enableLocAuthorizeR   RN   (   R   (    (    s#   /usr/share/authconfig/authconfig.pyt   readAuthInfo  s    c         C   s   t  j t j t  j  o- t  j t j t  j  |  _ t  j t j t  j  |  _ t  j t j	 t  j  o{ t  j t j
 t  j  |  _ t  j t j t  j  o t  j t j t  j  |  _ t  j t j t  j  |  _ t  j t j t  j  |  _ d  S(   N(   t   ost   accessRK   t   PATH_YPBINDt   X_OKt   PATH_LIBNSS_NISR-   t   PATH_PAM_KRB5R.   t   PATH_PAM_LDAPt   PATH_LIBNSS_LDAPR/   t   PATH_PAM_SSSt   PATH_LIBNSS_SSSR0   t	   PATH_NSCDR1   t   PATH_PAM_FPRINTDR2   (   R   (    (    s#   /usr/share/authconfig/authconfig.pyt   testAvailableSubsys  s    c         C   s  i% d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d  6d! d" 6d# d$ 6d% d& 6d' d( 6d) d* 6d+ d, 6d- d. 6d/ d0 6d1 d2 6d3 d4 6d5 d6 6d7 d8 6d9 d: 6d; d< 6d= d> 6d? d@ 6dA dB 6dC dD 6dE dF 6dG dH 6dI dJ 6} i dK dL 6dM dN 6dO dP 6dQ dR 6dS dT 6dU dV 6dW dX 6dY dZ 6d[ d\ 6d] d^ 6d_ d` 6da db 6dc dd 6de df 6dg dh 6di dj 6dk dl 6dm dn 6do dp 6dq dr 6ds dt 6du dv 6dw dx 6dy dz 6d{ d| 6d} d~ 6d d 6d d 6d d 6} xr | j    D]d \ } } t |  j d |  rt |  j | t  n  t |  j d |  rt |  j | t  qqWy+ |  j j rmd |  j _ n d |  j _ Wn t	 k
 rn X|  j j
 r|  j j
 |  j j k r|  j j |  j j
  |  j _ |  j j |  j j
  |  j _ n  yb |  j j } | d  k rRt |  } | d k  rR|  j t d   d  |  j _ d |  _ qRn  Wn9 t k
 r|  j t d   d  |  j _ d |  _ n Xy |  j j } | d  k r't |  } | d k  r|  j t d   d  |  j _ d |  _ n  | d k r'|  j t d   d  |  j _ d |  _ q'n  Wn9 t k
 rc|  j t d   d  |  j _ d |  _ n Xyb |  j j } | d  k rt |  } | d k  r|  j t d   d  |  j _ d |  _ qn  Wn9 t k
 r|  j t d   d  |  j _ d |  _ n Xyb |  j j } | d  k rct |  } | d k  rc|  j t d   d  |  j _ d |  _ qcn  Wn9 t k
 r|  j t d   d  |  j _ d |  _ n XxT | j    D]F \ } } t |  j |  d  k rt |  j | t |  j |   qqW|  j j rS|  j j j d d  } | d |  j _ t |  d k rS| d |  j _ qSn  |  j j d  k rz|  j j |  j _ n  |  j j  ry, t |  j j   } t! j"   | |  j _# Wqt t$ f k
 r|  j t d   d |  j _# qXn  |  j j% r.|  j j& d8 k r.|  j t d   t |  j _% n  |  j j' ss|  j j( rUd |  j _) n  |  j j* rd |  j _) qn@ |  j j' t! j+ k r|  j t d   d |  j _) d |  _ n  d  S(   Nt   enableShadowt   shadowRj   t   locauthorizet   enablePAMAccesst	   pamaccesst   enableSysNetAutht
   sysnetautht   enableMkHomeDirt	   mkhomedirt   enableCachet   cachet   enableEcryptfst   ecryptfst   enableHesiodt   hesiodt
   enableLDAPt   ldapt   enableLDAPSt   ldaptlst   enableRFC2307bist
   rfc2307bist   enableLDAPAutht   ldapautht   enableKerberost   krb5t	   enableNISt   nist   kerberosKDCviaDNSt
   krb5kdcdnst   kerberosRealmviaDNSt   krb5realmdnst   enableSmartcardt	   smartcardt   enableFprintdt   fingerprintt   forceSmartcardt   requiresmartcardt   enableWinbindt   winbindt   enableWinbindAutht   winbindautht   winbindUseDefaultDomaint   winbindusedefaultdomaint   winbindOfflinet   winbindofflinet   winbindKrb5t   winbindkrb5t   enableIPAv2t   ipav2t
   ipav2NoNTPt
   ipav2nontpt
   enableWINSt   winst
   enableSSSDt   sssdt   enableSSSDAutht   sssdautht   enableForceLegacyt   forcelegacyt   enableCacheCredst
   cachecredst   preferDNSinHostst	   preferdnst   passReqLowert   reqlowert   passReqUppert   requppert   passReqDigitt   reqdigitt   passReqOthert   reqothert   enableFaillockt   faillockt   passwordAlgorithmt   passalgoR_   t	   hesiodlhsR`   t	   hesiodrhsRa   t
   ldapserverRb   t
   ldapbasednt   ldapCacertURLt   ldaploadcacertRc   t	   krb5realmRd   t   krb5kdcRe   t   krb5adminservert   smartcardModulet   smartcardmodulet   smartcardActiont   smartcardactiont	   nisDomaint	   nisdomaint	   nisServert	   nisservert   smbWorkgroupt   smbworkgroupt
   smbServerst
   smbserverst   smbSecurityt   smbsecurityt   smbRealmt   smbrealmt   smbIdmapRanget   smbidmapranget   winbindSeparatort   winbindseparatort   winbindTemplateHomedirt   winbindtemplatehomedirt   winbindTemplateShellt   winbindtemplateshellt   ipav2Domaint   ipav2domaint
   ipav2Realmt
   ipav2realmt   ipav2Servert   ipav2servert
   passMinLent
   passminlent   passMinClasst   passminclasst   passMaxRepeatt   passmaxrepeatt   passMaxClassRepeatt   passmaxclassrepeatt   faillockArgst   faillockargst   enablet   disableR   i   s!   The passminlen minimum value is 6i   s-   The passminlen option value is not an integeri    s+   The passminclass value must not be negativei   s0   The passminclass value must not be higher than 4s/   The passminclass option value is not an integers,   The passmaxrepeat value must not be negatives0   The passmaxrepeat option value is not an integers1   The passmaxclassrepeat value must not be negatives5   The passmaxclassrepeat option value is not an integert   %i   s(   Bad smart card removal action specified.sO   --enablerequiresmartcard is not supported for module 'sssd', option is ignored.t   md5t   descrypts;   Unknown password hashing algorithm specified, using sha256.t   sha256(,   t	   iteritemsR   RP   t   setattrRf   RN   R,   R   t
   ldapSchemat   AttributeErrorR   Rc   t   getKerberosKDCRd   t   getKerberosAdminServerRe   R   R   t   intR9   RI   R3   t
   ValueErrorR   R   R   t   winbindjoint   splitt   joinUserR   t   joinPasswordt	   ipav2joinR   RK   RM   R   t
   IndexErrort   enablerequiresmartcardR   R   t	   enablemd5R   t
   disablemd5RL   (   R   t   bool_settingst   string_settingst   optt   aivalt   valt   lstRA   (    (    s#   /usr/share/authconfig/authconfig.pyt   overrideSettings  sB   



$!&c         C   s   t  S(   N(   RN   (   R   (    (    s#   /usr/share/authconfig/authconfig.pyt   doUIg  s    c         C   sh   t  } |  j j r' |  j j t   } n  |  j j d  k rd |  j j t   r[ |  j j   qd t	 } n  | S(   N(
   RN   RP   R  Rf   t
   joinDomainR  R   t   joinIPADomaint   writeSysconfigR,   (   R   t   ret(    (    s#   /usr/share/authconfig/authconfig.pyR  j  s    	c         C   s   |  j  j   |  j  j r7 |  j  j   s7 d |  _ q7 n  |  j  j   |  j j rn |  j  j   s d |  _ q n! |  j  j	 |  j
  s d |  _ n  |  j   s d |  _ n  |  j  j |  j j  d  S(   Ni   i   i   i   (   Rf   t   testLDAPCACertsR   t   downloadLDAPCACertR3   t   rehashLDAPCACertsRP   RU   R   t   writeChangedRi   R  t   postt   nostart(   R   (    (    s#   /usr/share/authconfig/authconfig.pyt   writeAuthInfox  s    c         C   s  |  j    |  j j r0 |  j   t j d  n  |  j j rr t j   d k rr |  j t	 d   t j d  n  |  j
   |  j j r |  j j   } t j t |   n  |  j j r |  j j |  j j  } t j t |   n  |  j j r$|  j j |  j j  } t j t |   n  |  j   |  j   |  j   sv|  j j rf|  j t	 d   n  t j d  n  |  j j r|  j j   n
 |  j   |  j S(   Ni    s   can only be run as rooti   s   dialog was cancelledi   (   R]   RP   RR   R   RQ   RS   Rl   t   getuidR9   RI   Rk   RX   Rf   t   restoreLastR  RW   t   restoreBackupRV   t
   saveBackupRx   R  R  t	   printInfoR  R3   (   R   t   rv(    (    s#   /usr/share/authconfig/authconfig.pyt   run  s6    





(   R   R   R4   R6   R9   RC   R]   RR   Rk   Rx   R  R  R  R  R%  (    (    (    s#   /usr/share/authconfig/authconfig.pyR+   Y   s   						 $							t   AuthconfigTUIc           B   s   e  Z d    Z d   Z d   Z d   Z d d d  Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z RS(   c         C   s   d S(   Ns   authconfig-tui(    (   R   (    (    s#   /usr/share/authconfig/authconfig.pyR6     s    c         C   s/   |  j  j r+ |  j  j r+ |  j j t  n  d  S(   N(   RP   t	   kickstartR  Rf   R  RN   (   R   (    (    s#   /usr/share/authconfig/authconfig.pyR    s    c         C   s   | s
 d  Sx | r | d } | d } t  |  t k rv |  j j   r_ | d } | d } qv | d } | d } n  t j | t j  s t d  | | d | f } t j	 |  j
 t d  | t d  g  n  | d } q Wd  S(   Ni    i   i   s   The %s file was not found, but it is required for %s support to work properly.
Install the %s package, which provides this file.t   Warningt   Oki   (   t   typet   tupleRf   t   sssdSupportedRl   Rm   t   R_OKRI   t   snackt   ButtonChoiceWindowt   screen(   R   t   togglet   warningt   patht   packaget   text(    (    s#   /usr/share/authconfig/authconfig.pyt   warn  s     	



	+c   #      C   sE  t  j t d  d d  g } t  j t d  d d  g } t  j t  j f t d  d6 d  g } t  j t  j f t d  d7 d  g } t  j t  j	 f t d
  d8 d  g } t  j
 t d  d d  g } t  j t d  d d  g } t  j t d  d d  g } t  j t d  d | g }	 t  j t d  d |	 g }
 t j d d  } t j t d   } | j | d d d d d d t j t d  t |  j j   } } | j | d d d d d d t j t d  t |  j j   } } | j | d d d d d d t j t d  t |  j j   } } | j | d d d d d d t j t d  t |  j j   } } | j | d d  d d d d t j t d!  t |  j j   } } | j | d d" d d d d t j d d#  } t j t d$   } | j | d d d d d d t j t d%  t |  j j d& k   } } | j | d d d d d d t j t d'  t |  j j   } } | j | d d d d d d t j t d(  t |  j j   } } | j | d d d d d d t j t d)  t |  j j   } } | j | d d  d d d d t j t d*  t |  j j   } } | j | d d" d d d d t j t d+  t |  j j    } } | j | d d d d d d t j t d,  t |  j j!   } } | j | d d- d d d d t j d d  } | j | d d d d d. d d/ d9 | j | d d d0 d d. d d/ d: t j d d  } t j" |  j# j$ rt d1  pt d2   } t j" t d3   } | j | d d  | j | d d  t j d d  } | j | d d d d | j | d d d d t j%   }  |  j& j' | t d4   |  j( |  |  j)   } | | k r.| j*   |  j _ | j*   |  j _ | j*   |  j _ | j*   |  j _ | j*   |  j _ | j*   |  j _ | j*   rd& |  j _ n! |  j j d& k rd5 |  j _ n  | j*   |  j _ | j*   |  j _ | j*   |  j _  | j*   |  j _! | j*   |  j _ |  j j | f |  j j | f |  j j | f |  j j |
 f |  j j | f |  j j | f |  j j | f |  j j | f |  j j  |	 f g	 }! x) |! D] }" |  j+ |" d |" d  q	Wn  |  j& j,   | | k S(;   Nt   cachingt   nscds   Fingerprint readert   pam_fprintdt   Kerberost   pam_krb5s   sssd-clients   LDAP authenticationt   pam_ldapt   LDAPs   nss-pam-ldapdt   NISt   ypbinds   shadow passwords   shadow-utilst   Winbinds   samba-clients   Winbind authentications   samba-winbindi   i   s   User Informationi    t
   anchorLeftt   growxs   Cache Informations   Use LDAPi   s   Use NISi   s	   Use IPAv2i   s   Use Winbindi   i   t   Authentications   Use MD5 PasswordsR   s   Use Shadow Passwordss   Use LDAP Authentications   Use Kerbeross   Use Fingerprint readers   Use Winbind Authentications!   Local authorization is sufficienti   t	   anchorTopt   paddingt   anchorRightt   Backt   Cancelt   Nexts   Authentication ConfigurationR   (   R;  s   sssd-client(   R<  s   sssd-client(   s   nss-pam-ldapds   sssd-client(   i   i    i   i   (   i   i    i   i   (-   RK   Rv   RI   R   Rw   Rq   Rt   Rr   Rs   Ru   Rn   t   PATH_PWCONVt   PATH_WINBIND_NETt   PATH_PAM_WINBINDt   PATH_LIBNSS_WINBINDR.  t   Gridt   Labelt   setFieldt   Checkboxt   boolRf   R   R   R   R   R   R   Ry   R   R   R   R   Rj   t   ButtonRP   t   backt   FormR0  t   gridWrappedWindowt   addR%  t   selectedR6  t	   popWindow(#   R   t	   warnCachet   warnFprintdt   warnKerberost   warnLDAPAutht   warnLDAPt   warnNISt
   warnShadowt   warnWinbindNett   warnWinbindAutht   warnWinbindt   infoGridt   compR   t   cbR   R   R   R   t   authGridR   Rz   t   ldapaR   t   fprintdR   R{   t   mechGridt
   buttonGridt   cancelt   okt   mainGridt   formt   allwarningsR2  (    (    s#   /usr/share/authconfig/authconfig.pyt   getMainChoices  s    $$$(((((.((((((%%-c         C   s  t  |  } t j d |  } d }	 g  }
 xn| D]f\ } } } } | d k r t j | t t |  j |    } |
 j |  | j t j	 d  d |	 d d | j | d |	 d d n| d k rEt j	 |  } | j | d |	 d	 d d d t j
 d
 t |  j |  d | } |
 j |  | j | d |	 d d nH| d k r:t j	 |  } | j | d |	 d	 d d d d d y# t |  j |  } | j |  Wn t k
 r| d } n Xd  } g  } x* | D]" } | j | | | | k f  qWt j d  |  } |
 j |  | j | d |	 d d nS | d k rt j d | d d d d } |
 j |  | j | d |	 d d n  |	 d 7}	 q1 Wt j | rd pd d  } t j |  } t j |  } | rt j |  pd  } | j | d d  | r!| j | d d  n  | j | | r6d p9d d  t j d d  } | j | d d d	 d d d | j | d d d	 d d d t j   } |  j j | |  | j |  xt r| j   } | | k rPn  |
 } x | D] \ } } } } | d k r2t |  j | | j d  j    q| d k rct |  j | | j d  j    q| d k rt |  j | | j d  j    q| d k r| j d  qqW| | k rPn  | r|   qqW|  j j   | | k S(   Ni   i    t   tfvalueR   RF  i   RA  t   svalueRE  i(   t   hiddenRB  t   rvalueRD  t   lvaluei2   t   flexDownt   flexUpi   (   i    i    i   i    (   i    i    i   i    (   i    i    i    i   (   i    i    i    i    (   R   R.  RN  RQ  RR  R   Rf   R    RP  RO  t   Entryt   indexR  R   t   RadioBart   TextboxReflowedRS  RU  R0  RV  RW  RN   R%  R   t   popRX  t   valuet   getSelectionRY  (   R   t   dtitlet   itemst	   canceltxtt   oktxtt
   anothertxtt	   anothercbt   rowst   questionGridt   rowt   widgetst   tt   desct   attrR  Rf  Re  t   selt
   buttonlistt   vt   radioBarRk  Rl  Rm  t   anotherRn  Ro  t   wcopy(    (    s#   /usr/share/authconfig/authconfig.pyt   getGenericChoices6  s    $"$% 	%%%c         C   s   d t  d  d d f d t  d  d d f d t  d  d d f g } |  j t  d	  | t  d
  | rr t  d  p{ t  d  d t  d  d |  j S(   NRs  s   Domain:R   i    s   Realm:R   s   Server:R   s   IPAv2 SettingsRG  RI  R)  R  s   Join DomainR  (   RI   R  t   maybeGetJoinSettings(   R   t   nextt	   questions(    (    s#   /usr/share/authconfig/authconfig.pyt   getIPAv2Settings  s    *c         C   s   d t  d  d d  f d t  d  d d f d t  d  d	 d f g } |  j t  d
  | t  d  | rr t  d  p{ t  d   S(   NRr  s   Use TLSR   Rs  s   Server:Ra   i    s   Base DN:Rb   s   LDAP SettingsRG  RI  R)  (   RI   R   R  (   R   R  R  (    (    s#   /usr/share/authconfig/authconfig.pyt   getLDAPSettings  s
    c         C   sj   d t  d  d d f d t  d  d d f g } |  j t  d  | t  d  | r] t  d	  pf t  d
   S(   NRs  s   Domain:R   i    s   Server:R   s   NIS SettingsRG  RI  R)  (   RI   R  (   R   R  R  (    (    s#   /usr/share/authconfig/authconfig.pyt   getNISSettings  s    c         C   s   d t  d  d d f d t  d  d d f d t  d  d d f d	 t  d
  d d  f d	 t  d  d d  f g } |  j t  d  | t  d  | r t  d  p t  d   S(   NRs  s   Realm:Rc   i    s   KDC:Rd   s   Admin Server:Re   Rr  s"   Use DNS to resolve hosts to realmsR   s!   Use DNS to locate KDCs for realmsR   s   Kerberos SettingsRG  RI  R)  (   RI   R   R  (   R   R  R  (    (    s#   /usr/share/authconfig/authconfig.pyt   getKerberosSettings  s    c         C   s   d t  d  d d f d t  d  d d f g } |  j j sK d |  j _ n  |  j t  d	  | t  d
  t  d   r |  j j   |  j j   |  j j r |  j j t	  n |  j j
 r |  j j t	  n  |  j j   n  t	 S(   NRs  s   Domain Administrator:R  i    s	   Password:R  i   t   Administrators   Join SettingsRH  R)  (   RI   Rf   R  R  R0  t   suspendRT   R   R  RN   R   R  t   resume(   R   R  (    (    s#   /usr/share/authconfig/authconfig.pyt   getJoinSettings  s    c         C   s   d t  d  d  d  f g } t j |  j  } | j   |  j j   t } |  j j |  r |  j	 t  d  | t  d  t  d   } n  | r |  j j
   n  |  j   t S(   NRv  s   Some of the configuration changes you've made should be saved to disk before continuing.  If you do not save them, then your attempt to join the domain may fail.  Save changes?s   Save Settingst   Not   Yes(   RI   R   RK   Rg   R9   RT   Rf   R,   t   differsR  R   R  RN   (   R   R  t	   orig_infoR  (    (    s#   /usr/share/authconfig/authconfig.pyR    s    	

c         C   s   d d g } d d d d d d g } d	   } t  | |  } d
 t d  d | f d t d  d d f d t d  d d f d t d  d d f d
 t d  d | f g } |  j t d  | t d  | r t d  p t d  d t d  d |  j S(   Nt   adst   domains   /sbin/nologins   /bin/shs	   /bin/bashs	   /bin/tcshs   /bin/kshs   /bin/zshc         S   s   t  j |  t  j  S(   N(   Rl   Rm   Ro   (   t   shell(    (    s#   /usr/share/authconfig/authconfig.pyt   shellexists  s    Ru  s   Security Model:R   Rs  s   Domain:R   i    s   Domain Controllers:R   s
   ADS Realm:R   s   Template Shell:R   s   Winbind SettingsRG  RI  R)  R  s   Join DomainR  (   t   filterRI   R  R  (   R   R  t   securityt   shellsR  R  (    (    s#   /usr/share/authconfig/authconfig.pyt   getWinbindSettings  s    		*c         C   s:  d } t  } x!| d k r/| d k r/|  j j   | d k rO |  j   } n| d k r |  j j r|  j j p |  j j p |  j j p |  j j p |  j j	 p |  j j
 } |  j |  } qn>| d k r-|  j j s |  j j r|  j j p|  j j p|  j j	 p|  j j
 } |  j |  } qn | d k r~|  j j r|  j j pf|  j j	 pf|  j j
 } |  j |  } qn | d k r|  j j r|  j j	 p|  j j
 } |  j |  } qn? | d k r|  j j	 s|  j j
 rt  } |  j |  } qn  |  j j   | r"| d 7} q | d 8} q W| d k S(	   Ni   i    i   i   i   i   i   i   (   R,   Rf   RT   Rq  R   R   R   R   R   R   R   R  R  R  R  R  (   R   R  t   rct   more(    (    s#   /usr/share/authconfig/authconfig.pyt
   getChoices  sT    c         C   sB   t  d  |  j j } t j |  j t  d  | t  d  g  d  S(   Ns   To connect to a LDAP server with TLS protocol enabled you need a CA certificate which signed your server's certificate. Copy the certificate in the PEM format to the '%s' directory.
Then press OK.R(  R)  (   RI   Rf   t   ldapCacertDirR.  R/  R0  (   R   R5  (    (    s#   /usr/share/authconfig/authconfig.pyt   displayCACertsMessage  s    	c         C   s   |  j  j r t Sz t j   |  _ |  j   } |  j j t d   |  j j	 d d | d  |  j
   s{ |  j j   t S|  j j r |  j j   r |  j   n  Wd  |  j j   Xt S(   NsN    <Tab>/<Alt-Tab> between elements   |   <Space> selects   |  <F12> next screeni    s    - (c) 1999-2005 Red Hat, Inc.(   RP   R'  RN   R.  t   SnackScreenR0  R6   t   pushHelpLineRI   t   drawRootTextR  t   finishR,   Rf   R   R  R  (   R   t   packageversion(    (    s#   /usr/share/authconfig/authconfig.pyR    s    N(   R   R   R6   R  R6  Rq  R   R  R  R  R  R  R  R  R  R  R  R  (    (    (    s#   /usr/share/authconfig/authconfig.pyR&    s   				r_									-	t   __main__R5   (   RK   t   acutilt   gettextRl   t   signalR   t   lgettextRI   t   optparseR    R   R   t	   setlocalet   LC_ALLt   ErrorR7   R   R   R.  R   R   R+   R&  R   t   SIGINTt   SIG_DFLt
   textdomainR6   RQ   R%  (    (    (    s#   /usr/share/authconfig/authconfig.pyt   <module>   s2   0		
$  P 	