+\hddlZddlZddlmZddlZddlZddlZddlZddl Zddl ZejjdZ GddZdZdZdZy) N)urlparsez_dns.resolver.arpac,eZdZdZdZdZdZddZy) _SVCBInfoc<||_||_||_||_yN)bootstrap_addressporthostname nameservers)selfrr r r s K/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/dns/_ddr.py__init__z_SVCBInfo.__init__s !2   &cL|dD]\}}|dk(s ||jk(syy)zIVerify that the _SVCBInfo's address is in the cert's subjectAltName (SAN)subjectAltNamez IP AddressTF)r)r certnamevalues r ddr_check_certificatez_SVCBInfo.ddr_check_certificate!s8 01 KD%|#1G1G(G rctjj}|j}|jj |_|Sr)dnsquerysslcreate_default_context TLSVersionTLSv1_2minimum_version)r rctxs r make_tls_contextz_SVCBInfo.make_tls_context(s4iimm((*!nn44 rc |j}tj|z}tj|j|j f|5}|j ||j5}|jtjj||j|j}|j|cdddcdddS#1swYnxYw dddy#1swYyxYw)N)server_hostname)rtimesocketcreate_connectionrr wrap_socketr settimeoutrr _remaining do_handshake getpeercertr)r lifetimer expirationstsrs r ddr_tls_check_syncz_SVCBInfo.ddr_tls_check_sync.s##%YY[8+  % %  # #TYY /  8 DMMB 8b cii22:>?!~~'11$7  8 8 8 8 8 8 8 8 8 8s%C:2AC$ C:$C- )C::DNc ~K|tjj}|j}t j|z}|j tj j|jtjdd|j|jf|||jd{4d{}|jtjj|d{}|j!|cdddd{S7e7^7*7 #1d{7swYyxYww)Nr)r asyncbackendget_default_backendrr" make_socketinetaf_for_addressrr# SOCK_STREAMr r r)rr'r)r r*backendrr+r-rs r ddr_tls_check_asyncz_SVCBInfo.ddr_tls_check_async:s  ?&&::IIMM#++"6"6"?"?"G"GHE}EKK$8$8$C;;s#**,D??3'Tz|TF!D6$0C  ""3>>#?#?EV#WX U?|   ,,->dK  U?|   ,,->dDQ  { a  LL#4dD+N OW+PX L#  s:J++ J76J7cg}t|}|D]/} |j|r|j|j1|S#t$rY?wxYw)VReturn a list of TLS-validated resolver nameservers extracted from an SVCB answer.)rar.extendr rUrYr*r rZinfos r _get_nameservers_syncrgsfK *6 2E &&x0""4#3#34    s,A AAcKg}t|}|D]7} |j|d{r|j|j9|S7##t$rYIwxYww)rcN)rar7rdr rUres r _get_nameservers_asyncrisrK *6 2E --h777""4#3#34  8   s8AAAA AA AAAA)r#r" urllib.parserdns.asyncbackendrdns.inetdns.namedns.nameserver dns.querydns.rdtypes.svcbbaser from_text_local_resolver_namerrargrir;rr rssU  !xx))*>?0404f1h  r