Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
 ‹EYc@spdZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZd	„Zej
jd
ej
jej
jeƒƒƒedƒZx+ejD] ZeeeedeƒƒqÈWx1ejjD]#Zeejeed
eƒƒqùWx7ejjjD]&Zeejjeedeƒƒq0Wx7ejjjD]&ZeejjeedeƒƒqjW[ej
jd
ƒeZdZdZejejdƒZejej dƒZ!e!Z"ej#j$ddƒj%ƒd2kr1e&edƒr1ejej'dƒZ"nd„Z(d„Z)d„Z*dej+j,fd„ƒYZ-de.fd „ƒYZ/d!e.fd"„ƒYZ0e0d#e/ƒƒZ+ej1e2dd$„Z4d%„Z5d&„Z6d'„Z7d
d
d
d
d(„Z8d)„Z9d*„Z:d+„Z;d,„Z<d-„Z=ed.ddd
e>d/„Z?ed.ddd
d0„Z@d1„ZAe@ejB_@e?ejB_?dS(3s1greendns - non-blocking DNS support for Eventlet
iÿÿÿÿN(tpatcher(t
_socket_nodns(tos(ttime(tselect(tsixcCs2itd6td6td6td6}tj||S(NRRRtsocket(RRRRRtimport_patched(tmodule_nametmodules((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR.s
itdnssdns.sdns.rdtypes.sdns.rdtypes.IN.sdns.rdtypes.ANY.g$@sLookup timed outsName or service not knowntEVENTLET_DEPRECATED_EAI_NODATAtt1tytyest
EAI_NODATAs#No address associated with hostnamecCsMt|tjƒstSytjj|ƒWntjjk
rDtSXt	SdS(s+Return True if host is a valid IPv4 addressN(
t
isinstanceRtstring_typestFalseR
tipv4t	inet_atont	exceptiontSyntaxErrortTrue(thost((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytis_ipv4_addr\scCsct|tjƒstS|jddƒd}ytjj|ƒWntjj	k
rZtSXt
SdS(s+Return True if host is a valid IPv6 addresst%iiN(RRRRtsplitR
tipv6RRRR(R((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytis_ipv6_addrhscCst|ƒpt|ƒS(s3Return True if host is a valid IPv4 or IPv6 address(RR(R((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt
is_ip_addrustHostsAnswercBseZdZed„ZRS(s%Answer class for HostsResolver objectcCs„d|_||_||_||_||_|rL|rLtjjƒ‚n||_	t
|dƒrwtjƒ|jnd|_
dS(s^Create a new answer

        :qname: A dns.name.Name instance of the query name
        :rdtype: The rdatatype of the query
        :rdclass: The rdataclass of the query
        :rrset: The dns.rrset.RRset with the response, must have ttl attribute
        :raise_on_no_answer: Whether to raise dns.resolver.NoAnswer if no
           answer.
        tttliN(tNonetresponsetqnametrdtypetrdclasstcanonical_nameR
tresolvertNoAnswertrrsetthasattrRR!t
expiration(tselfR$R%R&R*traise_on_no_answer((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt__init__}s
					
	(t__name__t
__module__t__doc__RR/(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR zst
HostsResolvercBs\eZdZded„Zd„Zd„Zej	j
ejje
ded„Zd„ZRS(sºClass to parse the hosts file

    Attributes
    ----------

    :fname: The filename of the hosts file in use.
    :interval: The time between checking for hosts file modification
    cCs¡i|_i|_i|_||_||_|dkr~tjdkrTd|_q~tjdkr~tjj	dƒ|_q~nd|_
|jr|jƒndS(Ntposixs
/etc/hoststnts'%SystemRoot%\system32\drivers\etc\hostsi(t_v4t_v6t_aliasestintervaltfnameR"Rtnametpatht
expandvarst
_last_loadt_load(R-R:R9((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR/s								cCs†g}ybt|jdƒJ}x@|D]8}|jƒ}|r%|ddkr%|j|ƒq%q%WWdQXWnttfk
rnX|S(s½Read the contents of the hosts file

        Return list of lines, comment lines and empty lines are
        excluded.

        Note that this performs disk I/O so can be blocking.
        trUit#N(topenR:tstriptappendtIOErrortOSError(R-tlinestfptline((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt
_readlines­s
cCs|jƒ}|jjƒ|jjƒ|jjƒxÊ|D]Â}|jƒ}t|ƒdkrdq:n|jdƒ}t|ƒr‹|j}n0t	|ƒr:|j
dƒr¬q:n|j}nq:|jdƒ}|||<x%|D]}|||<||j|<qÛWq:Wtjƒ|_dS(sjLoad hosts file

        This will unconditionally (re)load the data from the hosts
        file.
        iitfe80N(
RJR6tclearR7R8RtlentpopRRt
startswithRR>(R-RGRItpartstiptipmaptcnametalias((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR?Às,






c
Cs~tjƒ}|j|j|kr/|jƒntjj}t|tj	ƒrh|}tj
j|ƒ}nt|ƒ}tj
j|||ƒ}	|j|j||	_|tjjkr6|tjjkr6|jj|ƒ}
|
r|jƒr|jj|d ƒ}
n|
rh|	jtjjjj|||
ƒƒqhn2|tjjkrÉ|tjjkrÉ|jj|ƒ}
|
r˜|jƒr˜|jj|d ƒ}
n|
rh|	jtjjjj|||
ƒƒqhnŸ|tjjkrh|tjjkrh|jj|ƒ}|r+|jƒr+|jj|d ƒ}n|rh|	jtjjjj||tj
j|ƒƒƒqhnt||||	|ƒS(sYQuery the hosts file

        The known rdtypes are dns.rdatatype.A, dns.rdatatype.AAAA and
        dns.rdatatype.CNAME.

        The ``rdclass`` parameter must be dns.rdataclass.IN while the
        ``tcp`` and ``source`` parameters are ignored.

        Return a HostAnswer instance or raise a dns.resolver.NoAnswer
        exception.
        iÿÿÿÿ(RR>R9R?R
t
rdataclasstINRRRR;t	from_texttstrR*tRRsetR!t	rdatatypetAR6tgettis_absolutetaddtrdtypestAAAAR7tCNAMER8tANYR (R-R$R%R&ttcptsourceR.tnowR;R*taddrRS((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytqueryßs<

$+$+$"cCsˆg}||jkr%|j|}n|}|j|ƒx<tj|jƒD](\}}||krK|j|ƒqKqKW|j|ƒ|S(s1Return a list of all the aliases of a given cname(R8RDRt	iteritemstremove(R-thostnametaliasestcannonRTRS((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt
getaliasess

N(R0R1R2R"t	HOSTS_TTLR/RJR?R
RZR[RURVRRRgRm(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR3“s		,t
ResolverProxycBsheZdZddd„Zd„Zejjej	j
edeejjejj
fd„Zd„ZRS(sResolver class which can also use /etc/hosts

    Initialise with a HostsResolver instance in order for it to also
    use the hosts file.
    s/etc/resolv.confcCs ||_||_|jƒdS(shInitialise the resolver proxy

        :param hosts_resolver: An instance of HostsResolver to use.

        :param filename: The filename containing the resolver
           configuration.  The default value is correct for both UNIX
           and Windows, on Windows it will result in the configuration
           being read from the Windows registry.
        N(t_hostst	_filenameRL(R-thosts_resolvertfilename((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR/%s
		cCs4tjjd|jƒ|_tjjƒ|j_dS(NRs(R
R(tResolverRqt	_resolvertLRUCachetcache(R-((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyRL3sc
sYdddg‰ˆdkr$d‰ntˆtjƒrNtjjˆdƒ‰n‡fd†}‡‡‡fd†}	|jrä|tjj	krä||krä||jj
ˆ|dtƒräˆddk	s׈ddk	rá|	ƒSqän||jj
ˆ||||dtƒt
ˆƒdkrR||jj
ˆjtjjƒ||||dtƒn|	ƒS(s9Query the resolver, using /etc/hosts if enabled.

        Behavior:
        1. if hosts is enabled and contains answer, return it now
        2. query nameservers for qname
        3. if qname did not contain dots, pretend it was top-level domain,
           query "foobar." and append to previous result
        is0.0.0.0cs¦y|||Ž}Wntk
r3}|ˆd<tSX|jdk	r¢t|jƒr¢ˆddkro|ˆd<nˆdjj|jƒˆdct|jƒ7<ntS(Niii(t	ExceptionRR*R"RMtunion_updateR(tfuntargstkwargstate(tresult(sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytstepIs

cs™ˆddk	r=ˆr5ˆddkr5tjj‚nˆdSˆddk	r}ˆsmtˆdtjjƒr}ˆd‚q}ntjjdˆfƒ‚dS(Niiitqnames(R"R
R(R)RtNXDOMAIN((R$R.R(sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytendWs R.iN(R"RRRR
R;RWRpRURVRgRRuRMtconcatenatetroot(
R-R$R%R&RcRdR.t_hosts_rdtypesR€Rƒ((R$R.RsN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyRg7s 	
' 
%cCs¢|jr|jj|ƒ}ng}xwtry|jj|tjjƒ}Wn$tjj	tjj
fk
rrPq'X|jd„|jDƒƒ|dj
}q'W|S(s4Return a list of all the aliases of a given hostnamecss|]}t|jƒVqdS(N(RXttarget(t.0trr((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pys	<genexpr>si(RpRmRRuRgR
RZRaR(R)R‚textendR*R‡(R-RjRktans((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyRmus		N(R0R1R2R"R/RLR
RZR[RURVRRR`RgRm(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyRos		<RrcCs|tjkrtjj}n3|tjkr<tjj}ntjtjdƒ‚|dkrft
}nyiy|j||d|ƒSWnHtj
jk
rÍ|sÇt
tjj|ƒ|tjjdtƒS‚nXWn9tjjk
rît‚ntjjk
r
t‚nXdS(séResolve a name for a given family using the global resolver proxy.

    This method is called by the global getaddrinfo() function.

    Return a dns.resolver.Answer instance.  If there is no answer it's
    rrset will be emtpy.
    sAddress family not supportedR.N(RtAF_INETR
RZR[tAF_INET6R`tgaierrort
EAI_FAMILYR"R(RgR‚R R;tNameRURVRRtTimeouttEAI_EAGAIN_ERRORtDNSExceptiontEAI_NODATA_ERROR(R;tfamilytraisest_proxyR%((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytresolve‰s(			cCs„ytj|tjjƒ}WnPtjjk
r6|Stjjk
rRt‚n.tjj	k
rnt
‚nXt|djƒSdS(s'Return the canonical name of a hostnameiN(
R(RgR
RZRaR)RR‘R’R“R”RXR‡(RR‹((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt
resolve_cname©s	
cCsQytj|ƒSWn9tjjk
r0t‚ntjjk
rLt‚nXdS(s×Return a list of for aliases for the given hostname

    This method does translate the dnspython exceptions into
    socket.gaierror exceptions.  If no aliases are available an empty
    list will be returned.
    N(R(RmR
RR‘R’R“R”(R((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyRm·s	c	Csù|tj@rt‚ng}|tjkrïd}xœtjtjgD]ˆ}yt||tƒ}WnCtj	k
r¥}|j
tjtj
tj
fkrœ‚n|}qDX|j
rD|jd„|j
DƒƒqDqDW|dk	ræ|ræ|‚qæn÷|tjkr©|tj@r©t|tjtƒ}|j
rKg|j
D]}|j^q3}n|s_|tj@ræt|tjtƒ}|j
r¦g|j
D]}d|j^q‡}q¦qæn=t||tƒ}|j
ræg|j
D]}|j^qÎ}nt|jƒ|fS(sTResolve a hostname to a list of addresses

    Helper function for getaddrinfo.
    css|]}|jVqdS(N(taddress(RˆR‰((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pys	<genexpr>Ùss::ffff:N(RtAI_NUMERICHOSTtEAI_NONAME_ERRORt	AF_UNSPECR"RRŒR˜RRŽterrnot	EAI_AGAINR”R*RŠtAI_V4MAPPEDRštAI_ALLRXR$(	RR•tflagstaddrsterrtqfamilytanswerR~R‰((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt_getaddrinfo_lookupÆs8
	!
	!	"	,	"c	Csªt|tjƒr-|jdƒjdƒ}n|d	k	rat|ƒrat|||ƒ\}}n|}|g}|tj	Bdtj
A@}g}	d	}
xr|D]j}y"tj||||||ƒ}Wn2tjk
r÷}
|tj
@rñ|
}
q›n‚nX|	j|ƒq›W|	s6|
r|
‚ntjtjdƒ‚n|tj
@r¦t|ƒspt|ƒjdƒjdƒ}n|	d}|d|d|d||df|	d<n|	S(
sCReplacement for Python's socket.getaddrinfo

    This does the A and AAAA lookups asynchronously after which it
    calls the OS' getaddrinfo(3) using the AI_NUMERICHOST flag.  This
    flag ensures getaddrinfo(3) does not use the network itself and
    allows us to respect all the other arguments like the native OS.
    tidnatasciiiÿÿsNo address foundiiiiN(RRRtencodetdecodeR"RR§RR›tAI_CANONNAMEtgetaddrinfoterrort
AI_ADDRCONFIGRŠRŽt
EAI_NONAMER™(RtportR•tsocktypetprotoR¢R$R£taiflagstresR¤RftaiR~((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR­ës:	

	
!
,cCs't|ƒr|St|ƒ}|djS(s-Replacement for Python's socket.gethostbynamei(RR˜Rš(RjR*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt
gethostbynamescCsŒt|ƒr|g|gfSt|ƒ}t|ƒ}g|jD]}|j^q>}t|jƒ}|ddkr|d }n|||fS(s0Replacement for Python's socket.gethostbyname_exiÿÿÿÿt.(RR˜RmR*RšRXR$(RjR‹RkR‰R£R$((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytgethostbyname_exs
cCs+y|\}}Wn>ttfk
rPt|tƒsG~tdƒ‚qQt‚nX|tj@rt|tj@rtt‚nt|ƒrDyet	j
tjj
|ƒtjjƒ}t|ƒdkrËtjdƒ‚n|djjdtƒ}Wq!tjjk
r|tj@rAt‚qAq!tjjk
r@|tj@rAt‚qAq!XnÝyTt	j
|ƒ}t|ƒdkrztjdƒ‚n|tj@r—|dj}nWnKtjjk
r·t‚n/tjjk
råtjtjdfƒ‚nX|tj@s!|tj@rdp	d}tj||ƒ}n||fS(	sTReplacement for Python's socket.getnameinfo.

    Currently only supports IPv4.
    s(getnameinfo() argument 1 must be a tupleis'sockaddr resolved to multiple addressesitomit_final_dots#No address associated with hostnametudpRc(t
ValueErrort	TypeErrorRttupleRœRtNI_NAMEREQDtNI_NUMERICHOSTRR(RgR
treversenametfrom_addressRZtPTRRMR®R‡tto_textRRR‘R’R“RšRŽRtNI_NUMERICSERVtNI_DGRAMt
getservbyport(tsockaddrR¢RR±R*R³((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytgetnameinfo(sJ
	


	
cCs›d}xŽ|dkr–y|j|ƒ}Wn9tjk
rc|tjƒdkrdtjj‚qdnX|dkryt‚n|t|ƒ}||}q	W|S(scoro friendly replacement for dns.query._net_write
    Read the specified number of bytes from sock.  Keep trying until we
    either get the desired amount, or we hit EOF.
    A Timeout exception will be raised if the operation is not completed
    by the expiration time.
    Rig(	trecvRttimeoutRR
RR‘tEOFErrorRM(tsocktcountR,tstn((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt	_net_read]s	cCs€d}t|ƒ}xg||kr{y||j||ƒ7}Wqtjk
rw|tjƒdkrxtjj‚qxqXqWdS(sÈcoro friendly replacement for dns.query._net_write
    Write the specified data to the socket.
    A Timeout exception will be raised if the operation is not completed
    by the expiration time.
    igN(RMtsendRRËRR
RR‘(RÍtdataR,tcurrenttl((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt
_net_writessi5cCsV|jƒ}|dkrGytjj|ƒ}WqGtjj}qGXn|tjjkrƒ||f}	|dk	rË||f}qËnH|tjjkrË||ddf}	|dk	rË||ddf}qËntj|tjƒ}
|
j	|ƒztj
j|ƒ}|dk	r|
j|ƒny|
j
||	ƒWn9tjk
rm|tjƒdkrntjj‚qnnXxy|
jdƒ\}}Wn9tjk
rÅ|tjƒdkrÆtjj‚qÆnX||	krÖPn|sqtj
jd||	fƒ‚qqqqWd|
jƒXtjj|d|jd|jƒ}
|j|
ƒsRtj
jƒ‚n|
S(secoro friendly replacement for dns.query.udp
    Return the response obtained after sending a query via UDP.

    @param q: the query
    @type q: dns.message.Message
    @param where: where to send the message
    @type where: string containing an IPv4 or IPv6 address
    @param timeout: The number of seconds to wait before the query times out.
    If None, the default, wait forever.
    @type timeout: float
    @param port: The port to which to send the message.  The default is 53.
    @type port: int
    @param af: the address family to use.  The default is None, which
    causes the address family to use to be inferred from the form of of where.
    If the inference attempt fails, AF_INET is used.
    @type af: int
    @rtype: dns.message.Message object
    @param source: source address.  The default is the IPv4 wildcard address.
    @type source: string
    @param source_port: The port from which to send the message.
    The default is 0.
    @type source_port: int
    @param ignore_unexpected: If True, ignore responses from unexpected
    sources.  The default is False.
    @type ignore_unexpected: booligiÿÿs$got a response from %s instead of %sNtkeyringtrequest_mac(tto_wireR"R
tinettaf_for_addressRŒRRt
SOCK_DGRAMt
settimeoutRgt_compute_expirationtbindtsendtoRËRRR‘trecvfromtUnexpectedSourcetclosetmessaget	from_wireR×tmactis_responsetBadResponse(tqtwhereRËR±tafRdtsource_porttignore_unexpectedtwiretdestinationRÏR,RÂtr((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyR»„sT
	$cCs.|jƒ}|dkrGytjj|ƒ}WqGtjj}qGXn|tjjkrƒ||f}|dk	rË||f}qËnH|tjjkrË||ddf}|dk	rË||ddf}qËntj|tjƒ}	|	j	|ƒzêtj
j|ƒ}
|dk	r|	j|ƒny|	j
|ƒWn9tjk
rj|
tjƒdkrktjj‚qknXt|ƒ}tjd|ƒ|}t|	||
ƒt|	d|
ƒ}
tjd|
ƒ\}t|	||
ƒ}Wd|	jƒXtjj|d|jd|jƒ}|j|ƒs*tj
jƒ‚n|S(sÞcoro friendly replacement for dns.query.tcp
    Return the response obtained after sending a query via TCP.

    @param q: the query
    @type q: dns.message.Message object
    @param where: where to send the message
    @type where: string containing an IPv4 or IPv6 address
    @param timeout: The number of seconds to wait before the query times out.
    If None, the default, wait forever.
    @type timeout: float
    @param port: The port to which to send the message.  The default is 53.
    @type port: int
    @param af: the address family to use.  The default is None, which
    causes the address family to use to be inferred from the form of of where.
    If the inference attempt fails, AF_INET is used.
    @type af: int
    @rtype: dns.message.Message object
    @param source: source address.  The default is the IPv4 wildcard address.
    @type source: string
    @param source_port: The port from which to send the message.
    The default is 0.
    @type source_port: intigs!HiNR×RØ(RÙR"R
RÚRÛRŒRRtSOCK_STREAMRÝRgRÞRßtconnectRËRRR‘RMtstructtpackRÖRÑtunpackRãRäRåR×RæRçRè(RéRêRËR±RëRdRìRîRïRÏR,RÕttcpmsgtldataRð((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyRcÑsH
$cCstjƒdS(N(R(RL(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pytresets(R
Rsyes(CR2RótsysteventletRteventlet.greenRRRRteventlet.supportRRR<tinserttabspathtdirnamet__file__R
t__all__tpkgtsetattrR_RVRbRNRtDNS_QUERY_TIMEOUTRnRŽRŸR’R°RœR”tenvironR\tlowerR+RRRRR(tAnswerR tobjectR3RoRŒRR"R˜R™RmR§R­R·R¹RÉRÑRÖRR»RcRøRg(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/eventlet/support/greendns.pyt<module>sl!	+!$$!		
	‹h 			%(		
	5		LD