U e5d#, @sddddddddgZdd lZdd lZdd lZdd lZdd lZdd lZdd lZdd l Z dd l Z dd l mZd Zd ad d Zee jjZdZddZdZddZdddddddgZdddddd d!d"d#d$d%d&g ZgZeD]Zeeqdtd'd(Z dud)d*Z!d d d d d+Z"e#d,ej$Z%d-d.Z&d/d0Z'e#d1ej$Z(e#d2ej)ej$BZ*e#d3ej+ej$BZ,d4d5Z-e#d6ej+ej$BZ.d7d8Z/d9d:Z0e#d;Z1e#d<Z2e#d=Z3e#d>Z4d?d@Z5e#dAZ6dBdCZ7dDdEZ8dFdGZ9e#dHej$Z:dIdJZ;dKdLZe#dQej$Z?dRdSZ@dTdUZAdVdWZBdXdYZCdZZDe#d[ZEd\d]ZFd^d_ZGd`daZHdbdcZIGddddZJGdeddZKGdfddeKZLdgdhZMdidjZNGdkdldlZOGdmddZPGdnddeQZRGdoddePZSdpdqZTGdrddeSZUGdsddeSZVd S)vCookie CookieJar CookiePolicyDefaultCookiePolicy FileCookieJar LWPCookieJar LoadErrorMozillaCookieJarN)timegmFcGs(tsdStsddl}|datj|S)Nr zhttp.cookiejar)debugloggerloggingZ getLogger)argsr r&/usr/lib64/python3.8/http/cookiejar.py_debug,s  rzQa filename was not supplied (nor was the CookieJar instance initialised with one)cCsJddl}ddl}ddl}|}|d||}|jd|dddS)Nr zhttp.cookiejar bug! %s) stacklevel)iowarnings tracebackStringIO print_excgetvaluewarn)rrrfmsgrrr_warn_unhandled_exception:s  ricCs|dd\}}}}}}|tkrd|kr4dkrnnhd|krLdkrnnPd|krddkrnn8d|kr|dkrnn d|krdkrnnt|SdSdS) N r ;=) EPOCH_YEARr )ttyearmonthZmdayhourminsecrrr_timegmIs&8   r,ZMonZTueZWedZThuZFriZSatZSunZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCs@|dkrtj}n tj|}d|j|j|j|j|j|jfS)Nz%04d-%02d-%02d %02d:%02d:%02dZ) datetimeutcnowutcfromtimestampr'r(dayr)minutesecondtZdtrrr time2isozWs   r5cCsR|dkrtj}n tj|}dt||jt|jd|j|j |j |j fS)Nz#%s, %02d-%s-%04d %02d:%02d:%02d GMTr) r-r.r/DAYSZweekdayr0MONTHSr(r'r)r1r2r3rrr time2netscapejs     r8)ZGMTUTCZUTZz^([-+])?(\d\d?):?(\d\d)?$cCsjd}|tkrd}nTt|}|rfdt|d}|drR|dt|d}|ddkrf| }|S)Nr ir<r-) UTC_ZONES TIMEZONE_REsearchintgroup)tzoffsetmrrroffset_from_tz_strings  rFc Cst|}|tjkrdSzt|d}Wn^tk rz t|}Wntk r`YYdSXd|krvdkrnn|}nYdSYnX|dkrd}|dkrd}|dkrd}t|}t|}t|}t|}|dkr6ttd}|d} |} ||| }| | } t | dkr6| dkr.|d}n|d}t |||||||f} | dk r|dkrdd}| }t |} | dkrdS| | } | S)Nrr r id2r9) rAr-ZMAXYEAR MONTHS_LOWERindexlower ValueErrortime localtimeabsr,upperrF) r0monyrhrr*r+rCZimonZcur_yrrEZtmpr4rDrrr _str2timesV          rTzV^[SMTWF][a-z][a-z], (\d\d) ([JFMASOND][a-z][a-z]) (\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$z+^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)[a-z]*,?\s*a^ (\d\d?) # day (?:\s+|[-\/]) (\w+) # month (?:\s+|[-\/]) (\d+) # year (?: (?:\s+|:) # separator before clock (\d\d?):(\d\d) # hour:min (?::(\d\d))? # optional seconds )? # optional clock \s* (?: ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+) # timezone \s* )? (?: \(\w+\) # ASCII representation of timezone in parens. \s* )?$c Cst|}|rl|}t|dd}t|d|t|dt|dt|dt|df}t|S| }t d|d}dgd\}}}}}} } t |}|dk r|\}}}}}} } ndSt |||||| | S) Nrrr r;)STRICT_DATE_REr@groupsrIrJrKrAfloatr,lstrip WEEKDAY_REsubLOOSE_HTTP_DATE_RErT) textrEgrQr&r0rRrSr*r+rCrrr http2times$   rba^ (\d{4}) # year [-\/]? (\d\d?) # numerical month [-\/]? (\d\d?) # day (?: (?:\s+|[-:Tt]) # separator before clock (\d\d?):?(\d\d) # hour:min (?::?(\d\d(?:\.\d*)?))? # optional seconds (and fractional) )? # optional clock \s* (?: ([-+]?\d\d?:?(:?\d\d)? |Z|z) # timezone (Z is "zero meridian", i.e. GMT) \s* )?$c Csd|}dgd\}}}}}}}t|}|dk rL|\}}}}}}}} ndSt|||||||S)NrX)r\ ISO_DATE_REr@rZrT) r`r0rQrRrSr*r+rCrE_rrriso2time+s  recCs*|d\}}|jd||j|dS)Nr )spanstring)matchstartendrrr unmatchedLsrkz^\s*([^=\s;,]+)z&^\s*=\s*\"([^\"\\]*(?:\\.[^\"\\]*)*)\"z^\s*=\s*([^\s;,]*)z\\(.)c Csg}|D]}|}g}|rt|}|rt|}|d}t|}|rft|}|d}td|}n.t|}|rt|}|d}|}nd}| ||fq| dr| dd}|r| |g}qt dd|\}} |}q|r| |q|S)Nrz\1,z^[=\s;]*rW)HEADER_TOKEN_REr@rkrBHEADER_QUOTED_VALUE_REHEADER_ESCAPE_REr^HEADER_VALUE_RErstripappendr\ startswithresubn) Z header_valuesresultr`Z orig_textpairsrEnamevalueZnon_junkZ nr_junk_charsrrrsplit_header_wordsUs>.         rz([\"\\])cCs|g}|D]h}g}|D]F\}}|dk rPtd|sDtd|}d|}d||f}||q|r|d|qd|S)Nz^\w+$\\\1z"%s"%s=%s; , )rtr@HEADER_JOIN_ESCAPE_REr^rrjoin)Zlistsheadersrwattrkvrrrjoin_header_wordss      rcCs0|dr|dd}|dr,|dd}|S)N"r)rsendswithr`rrr strip_quotess     rc Csd}g}|D]}g}d}t|dD]\}}|}|d\}} } |}|sb|dkr&qnq&| rn| nd} |dkr|} | |kr| }|dkr| dk rt| } d}n|dkr| dk rtt| } ||| fq&|r |s|d ||q |S) N)expiresdomainpathsecureversionportmax-ageF;=r rTr)r0) enumeratesplitstrip partitionrKrrbrr) Z ns_headersZ known_attrsrvZ ns_headerrw version_setZiiZparamkeysepvallcrrrparse_ns_headerss>   rz\.\d+$cCs:t|rdS|dkrdS|ddks2|ddkr6dSdS)NFrWr .rTIPV4_REr@rrrris_HDNs rcCsl|}|}||krdSt|s(dS||}|dksB|dkrFdS|dsTdSt|ddshdSdS)NTFrr rr)rKrrfindrs)ABirrr domain_matchs  rcCst|rdSdSNFTrrrrrliberal_is_HDNFs rcCs`|}|}t|r t|s0||kr,dSdS|d}|rL||rLdS|s\||kr\dSdS)NTFr)rKrrsr)rr initial_dotrrruser_domain_matchPs  rz:\d+$cCsB|}tj|d}|dkr,|dd}td|d}|S)NrrWZHost) get_full_urlurllibparseZurlparseZ get_header cut_port_rer^rK)requesturlhostrrr request_hostes  rcCs4t|}}|ddkr,t|s,|d}||fS)Nrr.local)rfindrr@)rerhnreq_hostrrreff_request_hostus rcCs4|}tj|}t|j}|ds0d|}|S)N/)rrrZurlsplit escape_pathrrs)rrpartsrrrr request_paths    rcCs`|j}|d}|dkrX||dd}z t|Wq\tk rTtd|YdSXnt}|S)N:r rznonnumeric port: '%s')rrrArLrDEFAULT_HTTP_PORT)rrrrrrr request_ports    rz%/;:@&=+$,!~*'()z%([0-9a-fA-F][0-9a-fA-F])cCsd|dS)Nz%%%sr)rBrP)rhrrruppercase_escaped_charsrcCstj|t}tt|}|SN)rrZquoteHTTP_PATH_SAFEESCAPED_CHAR_REr^r)rrrrrs  rcCsP|d}|dkrL||dd}|d}t|rL|dksD|dkrLd|S|S)Nrr rZlocal)rr)hrbrrrreachs  rcCs$t|}t|t|jsdSdSdSNTF)rrrZorigin_req_host)rrrrris_third_partys rc@sJeZdZdddZddZdddZd d Zdd d Zd dZddZ dS)rFcCs|dk rt|}| dk r$tt| } |dkr<|dkr)rrrryrx)rplimitZ namevaluerrr__str__)s   zCookie.__str__cCslg}dD]$}t||}|d|t|fq|dt|j|dt|jd|jjd|fS)N)rrxryrrrrrrrrrrrrr}zrest=%sz rfc2109=%sz%s(%s)r)getattrrrreprrr __class____name__r)rrrxrrrr__repr__3s zCookie.__repr__)F)N)N) r __module__ __qualname__rrrrrrrrrrrrs *   c@s,eZdZddZddZddZddZd S) rcCs tdSrNotImplementedErrorrcookierrrrset_okKszCookiePolicy.set_okcCs tdSrrrrrr return_okTszCookiePolicy.return_okcCsdSNTr)rrrrrrdomain_return_okXszCookiePolicy.domain_return_okcCsdSrr)rrrrrrpath_return_ok]szCookiePolicy.path_return_okN)rrrrrrrrrrrrBs  c @seZdZdZdZdZdZeeBZdddddddddedddf d d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZdS)7rrrrUr NTF)ZhttpsZwsscCsv||_||_||_||_||_||_| |_| |_| |_| |_ | |_ |dk rVt ||_ nd|_ |dk rlt |}||_ dS)Nr)netscaperfc2965rfc2109_as_netscape hide_cookie2 strict_domainstrict_rfc2965_unverifiablestrict_ns_unverifiablestrict_ns_domainstrict_ns_set_initial_dollarstrict_ns_set_pathsecure_protocolstuple_blocked_domains_allowed_domains)rblocked_domainsallowed_domainsrrrrrrrrrrrrrrrms" zDefaultCookiePolicy.__init__cCs|jSr)rrrrrrsz#DefaultCookiePolicy.blocked_domainscCst||_dSr)rr)rrrrrset_blocked_domainssz'DefaultCookiePolicy.set_blocked_domainscCs |jD]}t||rdSqdSr)rr)rrZblocked_domainrrr is_blockeds  zDefaultCookiePolicy.is_blockedcCs|jSr)rrrrrrsz#DefaultCookiePolicy.allowed_domainscCs|dk rt|}||_dSr)rr)rrrrrset_allowed_domainssz'DefaultCookiePolicy.set_allowed_domainscCs.|jdkrdS|jD]}t||rdSqdSr)rr)rrZallowed_domainrrris_not_alloweds    z"DefaultCookiePolicy.is_not_allowedcCs@td|j|jdD]&}d|}t||}|||sdSqdS)N - checking cookie %s=%s)r verifiabilityrxrrrZset_ok_FTrrxryrrrrnZfn_namefnrrrrs  zDefaultCookiePolicy.set_okcCsZ|jdkrtd|j|jdS|jdkr:|js:tddS|jdkrV|jsVtddSdS)Nz0 Set-Cookie2 without version attribute (%s=%s)Fr $ RFC 2965 cookies are switched off$ Netscape cookies are switched offT)rrrxryrrrrrrset_ok_versions z"DefaultCookiePolicy.set_ok_versioncCsJ|jrFt|rF|jdkr*|jr*tddS|jdkrF|jrFtddSdSNr z> third-party RFC 2965 cookie during unverifiable transactionFz> third-party Netscape cookie during unverifiable transactionTZ unverifiablerrrrrrrrrset_ok_verifiabilitysz(DefaultCookiePolicy.set_ok_verifiabilitycCs0|jdkr,|jr,|jdr,td|jdSdS)Nr $z' illegal name (starts with '$'): '%s'FT)rrrxrsrrrrr set_ok_names   zDefaultCookiePolicy.set_ok_namecCsL|jrHt|}|jdks(|jdkrH|jrH||j|sHtd|j|dSdS)Nr z7 path attribute %s is not a prefix of request path %sFT)rrrrrrr)rrrreq_pathrrr set_ok_paths  zDefaultCookiePolicy.set_ok_pathc Cs||jrtd|jdS||jr8td|jdS|jrt|\}}|j}|jr|ddkr|d}|dd|}|dkr||dd}||d|} | dkrt |dkrtd |dS| dr|dd} n|} | ddk} | s|d krtd |dS|j dkrX||sX| dsXd||sXtd ||dS|j dksr|j|j@rt||std ||dS|j dks|j|j@r|dt | } | ddkrt|std| |dSdS)N" domain %s is in user block-listF& domain %s is not in user allow-listrrr r)coZacZcomZeduZorgZnetZgovZmilrAZaeroZbizcatZcoopinfoZjobsZmobiZmuseumrxZproZtravelZeuz& country-code second level domain %srz/ non-local domain %s contains no embedded dotzO effective request-host %s (even with added initial dot) does not end with %sz5 effective request-host %s does not domain-match %sz. host prefix %s for domain %s contains a dotT)rrrrrrrcountrrKlenrsrrrrDomainRFC2965MatchrDomainStrictNoDotsrr@) rrrrrrrjZtldZsldZundotted_domainZ embedded_dotsZ host_prefixrrr set_ok_domains|                  z!DefaultCookiePolicy.set_ok_domainc Cs|jrt|}|dkrd}nt|}|jdD]@}z t|Wn"tk rbtd|YdSX||kr0qq0td||jdSdS)N80rlz bad port %s (not numeric)Fz$ request port (%s) not found in %sT)rrstrrrrArLrrrrZreq_portrrrr set_ok_port+s&   zDefaultCookiePolicy.set_ok_portcCs@td|j|jdD]&}d|}t||}|||sdSqdS)Nr)rrrrrrZ return_ok_FTr r rrrr@s   zDefaultCookiePolicy.return_okcCs<|jdkr|jstddS|jdkr8|js8tddSdS)Nr r FrT)rrrrrrrrreturn_ok_versionRsz%DefaultCookiePolicy.return_ok_versioncCsJ|jrFt|rF|jdkr*|jr*tddS|jdkrF|jrFtddSdSrrrrrrreturn_ok_verifiability[sz+DefaultCookiePolicy.return_ok_verifiabilitycCs"|jr|j|jkrtddSdS)Nz( secure cookie with non-secure requestFT)rtyperrrrrrreturn_ok_securegsz$DefaultCookiePolicy.return_ok_securecCs||jrtddSdS)Nz cookie expiredFT)r_nowrrrrrreturn_ok_expiresms z%DefaultCookiePolicy.return_ok_expirescCsN|jrJt|}|dkrd}|jdD]}||kr&qJq&td||jdSdS)Nr"rlz0 request port %s does not match cookie port %sFT)rrrrr$rrrreturn_ok_portssz"DefaultCookiePolicy.return_ok_portcCst|\}}|j}|r*|ds*d|}n|}|jdkr^|j|j@r^|js^||kr^tddS|jdkrt||std||dS|jdkrd| |std||dSdS)Nrr zQ cookie with unspecified domain does not string-compare equal to request domainFzQ effective request-host name %s does not domain-match RFC 2965 cookie domain %sz; request-host %s does not match Netscape cookie domain %sT) rrrsrrDomainStrictNonDomainrrrr)rrrrrr dotdomainrrrreturn_ok_domains6    z$DefaultCookiePolicy.return_ok_domaincCst|\}}|dsd|}|ds0d|}|rH|dsHd|}n|}||sd||sddS||r|td|dS||rtd|dSdS)NrFrrT)rrsrrrr)rrrrrr.rrrrs"        z$DefaultCookiePolicy.domain_return_okcCsbtd|t|}t|}||kr&dS||rR|dsN|||ddkrRdStd||dS)Nz- checking cookie path=%sTrrz %s does not path-match %sF)rrrrsr)rrrrZpathlenrrrrs   z"DefaultCookiePolicy.path_return_ok)rrrrr-rZ DomainLiberalZ DomainStrictrrrrrrrrrrrrr!r%rr&r'r)r+r,r/rrrrrrrcsR #   ;  cCst|}t|j|Sr)sortedkeysmapr)Zadictr1rrrvals_sorted_by_keys r3c csVt|}|D]D}d}z |jWntk r2YnXd}t|EdH|s |Vq dSr)r3itemsAttributeError deepvalues)mappingvaluesobjrrrr6s r6c@s eZdZdS)AbsentNrrrrrrrr:sr:c@seZdZedZedZedZedZedZ edej Z d2dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd3d$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z dS)4rz\Wr{z\.?[^.]*z[^.]*z^\.+z^\#LWP-Cookies-(\d+\.\d+)NcCs(|dkrt}||_t|_i|_dSr)r_policy _threadingRLock _cookies_lock_cookiesrpolicyrrrrs  zCookieJar.__init__cCs ||_dSr)r<rArrr set_policyszCookieJar.set_policycCsg}|j||sgStd||j|}|D]T}|j||sFq2||}|D].}|j||srtdqVtd||qVq2|S)Nz!Checking %s for cookies to returnz not returning cookiez it's a match) r<rrr@r1rr8rrr)rrrcookiesZcookies_by_pathrZcookies_by_namerrrr_cookies_for_domains     zCookieJar._cookies_for_domaincCs*g}|jD]}||||q|Sr)r@r1extendrE)rrrDrrrr_cookies_for_requestszCookieJar._cookies_for_requestc Cs<|jddddd}g}|D]}|j}|sHd}|dkrH|d||jdk rz|j|jrz|dkrz|jd|j}n|j}|jdkr||jn|d |j|f|dkr|j r|d |j |j d r|j }|j s| d r|d d}|d ||jdk rd}|jr,|d|j}||q|S)NcSs t|jSr)rr)arrrz)CookieJar._cookie_attrs..T)rreverseFr z $Version=%sr|r}z $Path="%s"rrz $Domain="%s"z$Portz="%s")sortrrrry non_word_rer@quote_rer^rxrrrrsrrr) rrDrattrsrrryrrrrr _cookie_attrssF        zCookieJar._cookie_attrscCstd|jztt|j_|_||}| |}|r^| ds^| dd ||jj r|jjs| ds|D]}|jdkr|| ddqq|W5|jX|dS)Nadd_cookie_headerrr~ZCookie2rz $Version="1")rr?acquirereleaserArMr<r*rGrPZ has_headerZadd_unredirected_headerrrrrclear_expired_cookies)rrrDrOrrrrrQIs*        zCookieJar.add_cookie_headerc Csg}d}d}|D]z}|d\}}d}d} i} i} |ddD]0\} } | }||ks`||krd|} | |krx| dkrxd} | | krq>| dkr| dkrtdd} qr| } | d kr|rq>| dkrtd q>| d kr d}z t| } Wn*tk rtd d} YqrYnXd } |j| } | |ks4| |krh| dkr^| d kr^td| d} qr| | | <q>| | | <q>| rzq|||| | fq|S)N)rr)rrrrrrr commenturlr FrTrz% missing value for domain attributerzM missing or invalid value for expires attribute: treating as session cookierz? missing or invalid (non-numeric) value for max-age attribute)rrrUz! missing value for %s attribute)rKrrArLr*rr)r attrs_set cookie_tuples boolean_attrs value_attrsZ cookie_attrsrxryZ max_age_setZ bad_cookiestandardrrrrrrr_normalized_cookie_tuplesjsh          z#CookieJar._normalized_cookie_tuplescCs&|\}}}}|dt}|dt}|dt} |dt} |dd} | dk rtz t| } Wntk rrYdSX|dd} |dd} |d d}|d d}|tk r|d krd }t|}nXd}t|}|d }|dkr| dkr|d|}n|d|d}t|dkrd }|tk }d}|r:t| d}|tkrVt |\}}|}n| dsjd|}d}| tk r| dkrt |} nd }t dd | } nd} | tkrd} d } nH| |jkrz||||Wntk rYnXtd|||dSt| ||| ||||||| | | |||S)NrrrrrrFrrrUrWTrrr rrz\s+z2Expiring cookie, domain='%s', path='%s', name='%s')rr:rArLrrrrboolrsrrrtr^r*clearKeyErrorrr)rtuprrxryrZrrrrrrrrrrrrrrrrrrrr_cookie_from_cookie_tuples                      z#CookieJar._cookie_from_cookie_tuplecCs6||}g}|D]}|||}|r||q|Sr)r[r`rr)rrVrrWrDr_rrrr_cookies_from_attrs_set's   z!CookieJar._cookies_from_attrs_setcCsHt|jdd}|dkr |jj }|D]}|jdkr$d|_|r$d|_q$dS)NrrTr )rr<rrr)rrDZ rfc2109_as_nsrrrr_process_rfc2109_cookies0s  z"CookieJar._process_rfc2109_cookiesc Cs:|}|dg}|dg}tt|j_|_|jj}|jj}|sN|rf|sV|rf|s^|rf|sj|sjgSz|t ||}Wnt k rt g}YnX|r6|r6z|t ||} Wnt k rt g} YnX| | |r&i} |D]} d| | j| j| jf<q| fdd} t| | } | r6|| |S)Nz Set-Cookie2z Set-CookiecSs|j|j|jf}||kSr)rrrx)Z ns_cookielookuprrrrno_matching_rfc2965isz3CookieJar.make_cookies..no_matching_rfc2965)rZget_allrArMr<r*rrrarz ExceptionrrrbrrrxfilterrF) rresponserrZ rfc2965_hdrsZns_hdrsrrrDZ ns_cookiesrcrrdrrr make_cookies<s^         zCookieJar.make_cookiescCsN|jz2tt|j_|_|j||r:||W5|jXdSr) r?rRrSrArMr<r*r set_cookierrrrset_cookie_if_okss  zCookieJar.set_cookie_if_okcCsl|j}|jzJ|j|kr&i||j<||j}|j|krDi||j<||j}|||j<W5|jXdSr)r@r?rRrSrrrx)rrcZc2Zc3rrrris     zCookieJar.set_cookiecCsbtd||jz8|||D]&}|j||r&td|||q&W5|jXdS)Nzextract_cookies: %sz setting cookie: %s) rrr?rRrSrhr<rri)rrgrrrrrextract_cookiess  zCookieJar.extract_cookiescCst|dk r2|dks|dkr td|j|||=n>|dk rX|dkrJtd|j||=n|dk rj|j|=ni|_dS)Nz8domain and path must be given to remove a cookie by namez.domain must be given to remove cookies by path)rLr@)rrrrxrrrr]s  zCookieJar.clearcCsD|jz(|D]}|jr||j|j|jqW5|jXdSr)r?rRrSrr]rrrx)rrrrrclear_session_cookiess  zCookieJar.clear_session_cookiescCsP|jz4t}|D]"}||r||j|j|jqW5|jXdSr) r?rRrSrMrr]rrrx)rrrrrrrTs  zCookieJar.clear_expired_cookiescCs t|jSr)r6r@rrrr__iter__szCookieJar.__iter__cCsd}|D] }|d}q|S)Nr rr)rrrrrr__len__s zCookieJar.__len__cCs2g}|D]}|t|qd|jjd|fSNz<%s[%s]>r)rrrrrrrrrrrrrszCookieJar.__repr__cCs2g}|D]}|t|qd|jjd|fSrp)rrr#rrrrqrrrrszCookieJar.__str__)N)NNN)!rrrrtcompilerMrNZstrict_domain_reZ domain_reZdots_reASCIImagic_rerrCrErGrPrQr[r`rarbrhrjrirlr]rmrTrnrorrrrrrrs6      ;!a\  7   c@s eZdZdS)rNr;rrrrrsc@s4eZdZd ddZd ddZd ddZdd d ZdS)rNFcCs2t|||dk rt|}||_t||_dSr)rrosfspathfilenamer\ delayload)rrxryrBrrrrs   zFileCookieJar.__init__cCs tdSrr)rrxignore_discardignore_expiresrrrsaveszFileCookieJar.savec CsJ|dkr"|jdk r|j}nttt|}|||||W5QRXdSr)rxrLMISSING_FILENAME_TEXTopen _really_loadrrxrzr{rrrrloads   zFileCookieJar.loadcCs|dkr"|jdk r|j}ntt|jzFt|j}i|_z| |||Wnt k rn||_YnXW5|jXdSr) rxrLr}r?rRrSrZdeepcopyr@rOSError)rrxrzr{Z old_staterrrrevert s    zFileCookieJar.revert)NFN)NFF)NFF)NFF)rrrrr|rrrrrrrs  cCs |j|jfd|jfd|jfg}|jdk r8|d|jf|jrH|d|jrX|d|jrh|d|j rx|d|j r|dt t |j f|j r|d |jr|d |jf|jr|d |jft|j}|D]}||t|j|fq|d t|jft|gS) Nrrr) path_specN) port_specN) domain_dotN)rNr)rNrrUr)rxryrrrrrrrrrrr5r[rrrr0rr1r#rr)rrr1rrrrlwp_cookie_str$s:        rc@s(eZdZd ddZd ddZdd ZdS) rTcCsTt}g}|D]2}|s |jr q|s0||r0q|dt|qd|dgS)NzSet-Cookie3: %s rW)rMrrrrrr)rrzr{rrrrrrr as_lwp_strMs zLWPCookieJar.as_lwp_strNFc CsX|dkr"|jdk r|j}nttt|d"}|d||||W5QRXdS)Nwz#LWP-Cookies-2.0 )rxrLr}r~writerrrrrr|]s   zLWPCookieJar.savecCs0|}|j|s$d|}t|t}d}d} d} z|} | dkrPq| |s\q<| t|d} t| gD]f} | d\} }i}i}| D] }d||<q| ddD]n\}}|dk r| }nd}|| ks|| kr|}|| kr|dkrd }|||<q|| kr|||<q|||<q|j }|d }|d }|dk rJt |}|dkrXd }|d }|d }t |d| ||d|d|||d|d|d|d|||d|d|}|s|j rqz|s||rqz||qzqq|drT|dd}|ds*|dkrpq*|d\}} } } } } }| dk} | dk} | dkr|} d}|d}d }| dkrd} d }t d | |dd || || d | | |ddi}|s|j rq*|s | |r q*| |q*WnBt k r2Yn,tk r\ttd ||fYnXdS) Nz4%r does not look like a Netscape format cookies filerWrr)#r TRUErFTr z+invalid Netscape format cookies file %r: %r)rMrrur@rrrrsrrrrrirrer)rrrxrzr{rrrrrrrrrxryrrrkrrrrsr     zMozillaCookieJar._really_loadNFc Cs|dkr"|jdk r|j}nttt|d}||jt}|D]}|sV|jrVqF|sf||rfqF|j rrd}nd}|j drd}nd}|j dk rt |j } nd} |jdkrd} |j} n |j} |j} |d|j ||j|| | | gdqFW5QRXdS)NrrZFALSErrWrr)rxrLr}r~rrrMrrrrrsrr#ryrxrr) rrxrzr{rrrrrrrxryrrrr| sH        zMozillaCookieJar.save)NFF) rrrrtrsrurrr|rrrrrs A)N)N)W__all__rvrr-rtrMZ urllib.parserZurllib.requestZ threadingr=Z http.clientZhttpZcalendarr r r rr#ZclientZ HTTP_PORTrr}rr%r,r6r7rIr(rrrKr5r8r>rsrtr?rFrTrYIr]Xr_rbrcrerkrmrnrprorzrrrrrrrrrrrrrrrrrrrrrrrr3r6r:rrrrrrrrrrrs     8  8 !    U D'    #b!b7x