Ñò ¸sWc@s@dZddklZddklZdefd„ƒYZdS(sLDAP classes used by nscfg.iÿÿÿÿ(tprint_functioni(tNssbaset LdapClientcBs¿eZdZdZdZdZdZdZdZdZ dZ ddgZ hd d e dagd 6d d e dagd 6d de dagd6dde dagd6d de dagd6d de dagd6d de dagd6d de dagd6ddedgd6ddedgd 6d d!e dagd"6d d#e dagd$6d d%ed&gd'6d d(ed)gd*6d d+ed,gd-6d.d/e dagd06d.d1e dagd26dd3e dagd46d d5e dagd66d d7ed,gd86d d9ed,gd:6d d;ed,gd<6d d=ed,gd>6Zd?ZdZhed 6ed6ed6ed6ed6ed6Zd@ZdAZd ZdBZdBZdbdcddfZdeZdfZdgZdZ„Zd[„Zd\„Zd]„Zd^„Z d_„Z!d`„Z"RS(hsfLDAP Name Service class. Represents the configuration of LDAP. See ldapclient(1m) for details.ssvc:/network/ldap/clientttldap_client_filetldap_client_creds /var/ldaptconfigs"# See ldapclient(1m) for details. tcredtastringtNS_LDAP_FILE_VERSIONtversiontNS_LDAP_BINDDNtbind_dntNS_LDAP_BINDPASSWDt bind_passwdtbooleantNS_LDAP_ENABLE_SHADOW_UPDATEtenable_shadow_updatetNS_LDAP_ADMIN_BINDDNt admin_bind_dntNS_LDAP_ADMIN_BINDPASSWDtadmin_bind_passwdtNS_LDAP_HOST_CERTPATHt host_certpathtNS_LDAP_PROFILEtprofilethosttNS_LDAP_SERVER_PREFt,tpreferred_server_listtNS_LDAP_SERVERSt server_listtNS_LDAP_SEARCH_BASEDNt search_basetNS_LDAP_SEARCH_SCOPEt search_scopet NS_LDAP_AUTHt;tauthentication_methodtNS_LDAP_CREDENTIAL_LEVELt tcredential_leveltNS_LDAP_SERVICE_SEARCH_DESCtNLtservice_search_descriptortintegertNS_LDAP_SEARCH_TIMEtsearch_time_limittNS_LDAP_BIND_TIMEtbind_time_limittNS_LDAP_SEARCH_REFtfollow_referralstNS_LDAP_CACHETTLt profile_ttltNS_LDAP_ATTRIBUTEMAPt attribute_maptNS_LDAP_OBJECTCLASSMAPtobjectclass_maptNS_LDAP_SERVICE_CRED_LEVELtservice_credential_leveltNS_LDAP_SERVICE_AUTH_METHODtservice_authentication_methodtnss_ldapitread_authorizations*solaris.smf.value.name-service.ldap.clients2.0t net_addresss0.0.0.0tnonetsimples sasl/CRAM-MD5ssasl/DIGEST-MD5ssasl/DIGEST-MD5:auth-intssasl/DIGEST-MD5:auth-confs sasl/EXTERNALs sasl/GSSAPIstls:nones tls:simplestls:sasl/CRAM-MD5stls:sasl/DIGEST-MD5stls:sasl/DIGEST-MD5:auth-intstls:sasl/DIGEST-MD5:auth-conft anonymoustproxytselftbasetonetsubcCsti|ƒdS(N(Rt__init__(RE((s../common/ldap.pyRI€scCst|idƒh}x°|iiƒD]Ÿ}|id|ƒd||<||ijox|id|ƒ|id|id|ƒ}|djoq#n|i|ddjo|iƒ}n|idƒnÐ|id |ƒ|i|d oF|i d|i d|ƒ}|djpt |ƒdjoq#qŠnX|id|i d|ƒ}|djoq#n|i|ddjo|iƒ}n|id |ƒ|djo|d jo|||| }|i | d} |i | d } |i | d} Pq˜q˜W|djowYn|id|| | ƒ| p| oû| djoî| djo|d i ƒ|d > is MAP: R+RsIllegal value (%s): %sR#sIllegal scope value: %ss ADD: R&sIllegal auth value: %sR)sIllegal cred value: %sN(RLtLEGACYtFalset load_legacyRPROt startswithtfindtendswithtsplitRWRMRNtlowert typecheckterr_msgR^t VALID_SCOPEtappendt VALID_AUTHt VALID_CRED(REterrRetlinestltidxtvalstkeytmaptmtypetismultitmseptmtemsgtmvalstmv((s../common/ldap.pyt read_fileús²              !       ! c Cs‹|idƒ|i|iƒ|iƒ\}}|o|iS|idƒ|i|iƒ|iƒ\}}|o|iS|idƒ|id|ƒt|ƒdjo|iSt }t }t }x|D]ü\}}} |id||| ƒ|djo9| djo t }qÉd | } |i | ƒ|iSqÍ|d jo t }qÍ|d jp |d jo t }qÍ||i i ƒjo|i d ƒ|iS||ii ƒjo|i dƒ|iSqÍW| p| p| od} |i | ƒ|iSxH|D]@\}}} y|i |onWq|i dƒ|iSXqW|io|iS|idƒ|i|iƒp|iS|i|iƒp|iS|iƒp|iS|idƒt }h} h} xL|ii ƒD];}|i|do#g| |<|i|d| |> R s2.0s Unsupported version: %s detectedR!RRs%Illegal property found in client files%Unknown property found in client files:Missing configuration: version, search base or server lists#Illegal property found in cred files delete customizations.s loading config pg...is adding: Rs ERR adding: s loading cred pg...s committing pg...s validating pg...ssuccessful import.(RLR[R\R’RXR`RORWtNOCONFIGRwR^RRQRNRMtno_writeRdt delcust_pgRVRStcommitRR}t add_prop_valtvalidate( RER„tcldbtcrdbthasverthasbasethasservRKtptypeRiRtmvaltmvaltype((s../common/ldap.pyt import_to_smfSsÒ                       #            cCsy|idƒ|idƒ|i|iƒp|iS|i|iƒp|iS|iƒp|iS|idƒ|iS(sUnconfigure SMF. Reset DEFPG.sunconfiguring LDAP...sDelete customizations.ssuccessful unconfigure.(RLR•RVRXRSR–Rd(RE((s../common/ldap.pyt unconfig_smfÐs    cCsÅ|iƒ}|djo¨|i|jo”|i|iƒ}|djoqd|jo`d|joSd|jp d|jo9|i|idƒ}|djp |djotStSq½qÁntS(s/Is SMF populated with this service? True/Falsesconfig/versionsconfig/search_basesconfig/preferred_server_listsconfig/server_listR!RN(tget_pgsRPRVt get_propsRRRwR^(REtpgstpropstpv((s../common/ldap.pyt is_populatedÞs       cCsé|i|iƒ|iƒoÈ|iƒ}t|ƒtgƒjoŸt|ƒdjoŒ|i|jox|i|iƒ|iƒoV|iƒ}t|ƒtgƒjo,t|ƒdjo|i|jotSnt StSqånt S(s,Was the legacy file generated from SMF data?i( R[R\t legacy_existsRxRYRWtAUTO_GENR`R^Rw(RER…((s../common/ldap.pytis_autogeneratedïs  ,  ,  N(sversionRs2.0(s search_baseRR(s server_listR@s0.0.0.0(RARBs sasl/CRAM-MD5ssasl/DIGEST-MD5ssasl/DIGEST-MD5:auth-intssasl/DIGEST-MD5:auth-confs sasl/EXTERNALs sasl/GSSAPIstls:nones tls:simplestls:sasl/CRAM-MD5stls:sasl/DIGEST-MD5stls:sasl/DIGEST-MD5:auth-intstls:sasl/DIGEST-MD5:auth-conf(RCRDsself(sbaseRGRH(#t__name__t __module__t__doc__tSERVICERvR\R`t LEGACYDIRRVtDEFPROPtDOCtALLPGSRwRPR^RMtBACKENDRSRQtPERMt READ_AUTHtREAD_AUTH_TYPEtREAD_AUTH_VALUEt VALUE_AUTHtUNCPROPR‚RƒR€RIRsR’R¡R¢R¨R«(((s../common/ldap.pyRs‚     w Y }  N(R®t __future__RtnssbaseRR(((s../common/ldap.pyts