;ò su›Ac@sœdZdZdkZdkZy dkZWnej o dZn&XyeiƒWn dZnXdZdd„Z dd„Z e d„Z d „Z dS( s ldapdns.py - basic functions for dealing dc-style DNs and SRV RRs (c) by Michael Stroeder This module is distributed under the terms of the GPL (GNU GENERAL PUBLIC LICENSE) Version 2 (see http://www.gnu.org/copyleft/gpl.html) $Id: ldapdns.py,v 1.18 2004/11/17 15:59:47 michael Exp $ Requirements: This module uses module DNS: http://pydns.sourceforge.net Python compability note: This module only works with Python 2.0+ since string methods instead of string module and list comprehensions are used. s0.0.5NiiscCs¡tii|iƒƒ}g}xett|ƒdddƒD]G}||i ddƒ\}}|djoPn|i |iƒƒq;W|iƒdi|ƒSdS(s5convert dc-style DN to DNS domain name (see RFC 2247)iiÿÿÿÿs=sdcs.N(sldaputilsbases explode_dnsdnslowers dn_componentssdns_componentssrangeslensissplitsattrtypesvaluesappendsstripsreversesjoin(sdnsattrtypes dn_componentssisdns_componentssvalue((s./pylib/ldapdns.pysdcdn2dnsdomain#s  cCs?digi}|idƒD]}|d|ƒq~ƒSdS(s5convert DNS domain name to dc-style DN (see RFC 2247)s,s.sdc=%sN(sjoinsappends_[1]sdomainssplitsd(sdomains_[1]sd((s./pylib/ldapdns.pysdnsdomain2dcdn0scCsÛ| ogSn|tjotiddƒ}ntiddd|ƒ}|id|ƒ}gi}|i D]Q}|ddjo:||dd|dd |dd |dd fƒqoqo~}|i ƒ|Sd S( s½ Look up SRV RR with name _ldap._tcp.dns_name and return list of tuples of results. dns_name Domain name dns_resolver Address/port tuple of name server to use. sqtypessrvsservers _ldap._tcp.%sstypenamesSRVsdataiiiiN(sdns_names dns_resolversNonesDNSsRequestssrv_reqsreqs srv_resultsappends_[1]sanswerssresssrv_result_answersssort(sdns_names dns_resolverssrv_reqs srv_results_[1]ssrv_result_answerssres((s./pylib/ldapdns.pysldapSRV:s  k cCs¡|oto‹ytt|ƒƒ}Wn%titifj o }gSqXgi }|D]4\}}}}|d|d||djfƒqZ~SngSdS(Ns%s%ss:%di…(sdnsdns_module_availsldapSRVsdcdn2dnsdomains dns_resultsDNSsErrorssocketserrorsesappends_[1]spriosweightsportshost(sdnsespriosweights_[1]shosts dns_resultsport((s./pylib/ldapdns.pys dcDNSLookupZs M(s__doc__s __version__ssockets ldaputil.basesldaputilsDNSs ImportErrorsdns_module_availsParseResolvConfsdcdn2dnsdomainsdnsdomain2dcdnsNonesldapSRVs dcDNSLookup( sdns_module_availsdnsdomain2dcdnssocketsldaputilsldapSRVsDNSs __version__sdcdn2dnsdomains dcDNSLookup((s./pylib/ldapdns.pys?s