-í ™º‘;csÛdZ dkZ dkZdkZdkZdkZdkZdkZeiZei Z dk Z dk Z !dfd„ƒYZ {dfd„ƒYZ †eid‰eiƒZdS(s<$Id: auth_handler.py,v 1.6 2000/06/01 00:35:30 rushing Exp $Ns auth_handlercs\!"dd„Z)d„Z-d„ZQd„ZZd„Zbd„Zjd„ZRS( NsdefaultcsU"#t|ƒ|_$||_%||_&tiƒ|_'tiƒ|_dS(N( sdictionary_authorizersdictsselfs authorizershandlersrealmscounters pass_counts fail_count(sselfsdictshandlersrealm((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys__init__"s   cs)+|ii|ƒSdS(N(sselfshandlersmatchsrequest(sselfsrequest((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pysmatch)scsB-/tt|iƒ}1|o 2ti|ƒ}3|djoÍ4tidƒ}5y6t i |ƒ}Wn-78d|GH9|i dƒ:dSnX;ti |dƒ}<|ii|ƒo3=|iiƒ>||_?|ii|ƒnA|i|ƒnEd|GHF|iƒnO|i|ƒdS(Nsbasicis!malformed authorization info <%s>is:s#unknown/unsupported auth method: %s(s get_headers AUTHORIZATIONsrequestsheadersschemesstringslowersgroupscookiesbase64s decodestringsdecodedserrorssplits auth_infosselfs authorizers authorizes pass_counts incrementshandlershandle_requestshandle_unauthorized(sselfsrequestsdecodedscookies auth_infosscheme((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pyshandle_request-s(      cs[QT|iiƒU|iitƒVd|d<Wd|i|d<X|idƒdS(Nscloses ConnectionsBasic realm="%s"sWWW-Authenticatei‘( sselfs fail_counts incrementsrequestschannelsset_terminatorsNonesrealmserror(sselfsrequest((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pyshandle_unauthorizedQs  cs~Z[\|iii}]tttiƒƒƒd }^tt|ƒƒ}_t i |||gdƒ}`|i|ƒSdS(sEA digest-authentication , constructed as suggested in RFC 2069iÿÿÿÿs:N(srequestschannelsserversipsstrslongstimesnowsidsselfs private_keysstringsjoinsnonces apply_hash(sselfsrequestsnonces private_keysipsnow((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys make_nonceZs csLbcdtiƒ}e|i|ƒf|iƒ}hti|ƒd SdS(s;Apply MD5 to a string , then wrap it in base64 encoding.iÿÿÿÿN( smd5snewsmsupdatesssdigestsdsbase64s encodestring(sselfsssdsm((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys apply_hashbs csˆjltid|iƒg}rt|idƒos|i|iiƒƒnt|itidƒƒwti t i |ƒƒSdS(NsB
  • Authorization Extension : Unauthorized requests: %s
      sstatuss
    ( s producersssimple_producersselfs fail_countsrshasattrshandlersappendsstatusscomposite_producers http_serversfifo(sselfsr((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pysstatusjs (s__init__smatchshandle_requestshandle_unauthorizeds make_nonces apply_hashsstatus(((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys auth_handler!s  $  sdictionary_authorizercs{|d„Zd„ZRS(Ncs|}||_dS(N(sdictsself(sselfsdict((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys__init__|scsR€|\}}|ii|ƒo|i||jo ‚dSn„dSdS(Nii(s auth_infosusernamespasswordsselfsdictshas_key(sselfs auth_infosusernamespassword((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys authorizes* (s__init__s authorize(((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pysdictionary_authorizer{s sAuthorization: \([^ ]+\) \(.*\)(sRCS_IDsbase64smd5sregexsstringstimescountersdefault_handlers split_paths get_headers http_servers producerss auth_handlersdictionary_authorizerscompilescasefolds AUTHORIZATION(sregexs split_pathsbase64sstringsRCS_IDscountersdefault_handlers producerss AUTHORIZATIONsdictionary_authorizers http_serverstimes auth_handlers get_headersmd5((sK/usr/ports/www/adzapper/work/adzapper-0.4.0/src/medusa-old1/auth_handler.pys?s            Z