Ñò /èêJc @sdZdZdddddddd d g Zd d kZd d klZlZdZdZdZ hdd 6dd6dd6dd6Z hd d6ed6ed6e d6Z e dƒZe dƒZd„Zd„Zddd„ƒYZd eifd„ƒYZd dd„ƒYZd S(sE ldapurl - handling of LDAP URLs as described in RFC 4516 See http://www.python-ldap.org/ for details. \$Id: ldapurl.py,v 1.43 2009/08/16 18:45:31 stroeder Exp $ Python compability note: This module only works with Python 2.0+ since 1. string methods are used instead of module string and 2. list comprehensions are used. s2.3.10t SEARCH_SCOPEtSEARCH_SCOPE_STRtLDAP_SCOPE_BASEtLDAP_SCOPE_ONELEVELtLDAP_SCOPE_SUBTREEt isLDAPUrltLDAPUrlExtensiontLDAPUrlExtensionstLDAPUrliÿÿÿÿN(tquotetunquoteiiittbasetonetsubcCs9|iƒ}|idƒp|idƒp |idƒS(s* Returns 1 if s is a LDAP URL, 0 else sldap://sldaps://sldapi://(tlowert startswith(tsts_lower((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR1s cCs"t|ƒiddƒiddƒS(s Returns URL encoding of string st,s%2Ct/s%2F(R treplace(R((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt ldapUrlEscape<scBsYeZdZd dd d d„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( s Class for parsing and unparsing LDAP URL extensions as described in RFC 4516. Usable class attributes: critical Boolean integer marking the extension as critical extype Type of extension exvalue Value of extension icCs7||_||_||_|o|i|ƒndS(N(tcriticaltextypetexvaluet_parse(tselft extensionStrRRR((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt__init__Os    cCsÛ|iƒ}|pd\|_|_dS|ddj|_|ddjo|diƒ}ny"|iddƒ\|_|_Wn&tj o|d|_|_nXt|iiƒƒ|_|iiƒ|_dS(Nit!it=(NN(tstriptNoneRRRtsplitt ValueErrorR (Rt extension((s-/usr/lib64/python2.6/site-packages/ldapurl.pyRVs "cCsd|idjodd|idj|ifSdd|idj|it|ipdƒfSdS(Ns%s%sRis%s%s=%sR (RR!RRR (R((s-/usr/lib64/python2.6/site-packages/ldapurl.pytunparsehs cCs |iƒS(N(R%(R((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt__str__qscCs/d|ii|iitt|ƒƒ|ifS(Ns<%s.%s instance at %s: %s>(t __class__t __module__t__name__thextidt__dict__(R((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt__repr__ts   cCs6|i|ijo#|i|ijo|i|ijS(N(RRR(Rtother((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt__eq__|scCs|i|ƒ S(N(R/(RR.((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt__ne__‚sN( R)R(t__doc__R!RRR%R&R-R/R0(((s-/usr/lib64/python2.6/site-packages/ldapurl.pyRAs     cBsYeZdZd d„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( sE Models a collection of LDAP URL extensions as dictionary type cCsBtii|ƒx+|phiƒD]\}}|||(R'R(R)R*R+R7(R((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR-¤s   cCs|i|ijS(N(R7(RR.((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR/¬scCsHxA|iƒidƒD]*}|ot|ƒ}|||iR=R%(RR<R6((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR%¸sN( R)R(R1R!RR:R=R&R-R/RDR%(((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR†s      c Bs¾eZdZhdd6dd6Zddddddddddd„ Zd„Zd „Zd „Zd „Z d „Z d „Z dddd„Z d„Z d„Zd„Zd„Zd„ZRS(sš Class for parsing and unparsing LDAP URLs as described in RFC 4516. Usable class attributes: urlscheme URL scheme (either ldap, ldaps or ldapi) hostport LDAP host (default '') dn String holding distinguished name (default '') attrs list of attribute types (default None) scope integer search scope for ldap-module filterstr String representation of LDAP Search Filters (see RFC 2254) extensions Dictionary used as extensions store who Maps automagically to bindname LDAP URL extension cred Maps automagically to X-BINDPW LDAP URL extension tbindnametwhosX-BINDPWtcredtldapR c Cs¢||_||_||_||_||_||_|p thƒ|_|djo|i |ƒn| djo | |_ n| djo | |_ ndS(N( t urlschemethostporttdntattrstscopet filterstrRt extensionsR!RRFRG( RtldapUrlRIRJRKRLRMRNRORFRG((s-/usr/lib64/python2.6/site-packages/ldapurl.pyRÙs          cCs‚|i|ijoo|i|ijo\|i|ijoI|i|ijo6|i|ijo#|i|ijo|i|ijS(N(RIRJRKRLRMRNRO(RR.((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR/ïscCs|i|ƒ S(N(R/(RR.((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR0ùsc CsÉt|ƒp td‚n|iddƒ\}}|iƒ|_|idjotd|i‚n|idƒ}|id ƒ}|d jo*|d jot|ƒ|_d |_d S|d jo?|d jp ||jo%t|| ƒ|_||d}nR|djo;|d jp ||jo!t|| ƒ|_||}n td ‚|id dƒ}t |ƒ}|djot|dƒiƒ|_n|djo1|do&t|diƒƒidƒ|_ n|djoN|diƒ}yt ||_ Wq8t j otdt|ƒ‚q8Xn|djo7|diƒ} | p d |_q|t| ƒ|_n|djo<|do$tƒ|_|ii|dƒqÅd |_nd S(sn parse a LDAP URL and set the class attributes urlscheme,host,dn,attrs,scope,filterstr,extensions s2Parameter ldap_url does not seem to be a LDAP URL.s://iRHtldapstldapis,LDAP URL contains unsupported URL scheme %s.Rt?iÿÿÿÿR Ns$Something completely weird happened!iiiRisJSearch scope must be either one of base, one or sub. LDAP URL contained %si(RHRQRR(RR#R"R RItfindR RJRKtlenRLRRMtKeyErrortreprR!RNRRORD( Rtldap_urltschemetrestt slash_post qemark_post paramlistt paramlist_lenRMRN((s-/usr/lib64/python2.6/site-packages/ldapurl.pyRüsT   ''   &       cCsIxB|iƒD]4}t||ƒdjot||||ƒq q WdS(s¦ Apply defaults to all class attributes which are None. defaults Dictionary containing a mapping from class attributes to default values N(R;tgetattrR!tsetattr(RtdefaultsR5((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt applyDefaults5s cCs=|idjot|iƒ}n |i}d|i|fS(sE Returns LDAP URL suitable to be passed to ldap.initialize() RRs%s://%s(RIRRJ(RRJ((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt initializeUrlAs cCså|idjo d}ndi|iƒ}t|i}|idjo d}nt|iƒ}t|iƒ}|idjot|i ƒ}n |i }d|i|||||f}|i o|d|i i ƒ}n|S(s= Returns LDAP URL depending on class attributes set. R RRRs%s://%s/%s?%s?%s?%sRSN( RLR!R>RRMRNRRKRIRJROR%(Rt attrs_strt scope_strRNRKRJRX((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR%Ls"     cCsX|djo|iƒ}n|djo d}n d|}d|||iƒ|fS(s Complete R s target="%s"s%sN(R!R%(Rt urlPrefixthrefTextt hrefTargetttarget((s-/usr/lib64/python2.6/site-packages/ldapurl.pythtmlHREFgs    cCs |iƒS(N(R%(R((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR&vscCs/d|ii|iitt|ƒƒ|ifS(Ns<%s.%s instance at %s: %s>(R'R(R)R*R+R,(R((s-/usr/lib64/python2.6/site-packages/ldapurl.pyR-ys   cCs‰|ii|ƒoY|i|}|ii|ƒo1|i|idj ot|i|iƒ}q…dSntd|ii|f‚|S(Ns%s has no attribute %s( t attr2extypethas_keyRORR!R tAttributeErrorR'R)(RR8Rtresult((s-/usr/lib64/python2.6/site-packages/ldapurl.pyt __getattr__s cCs†|ii|ƒob|i|}|djot||ƒq‚|djo&td|dt|ƒƒ|i| s.  "    E6