Ñò *qRc@sddkZddkZddkZddkZddkZddkZddklZlZy#ddkl Z l Z e i Z Wnxej olddkZ ddkZeidd!djo ddkZ ddklZ qüddkl Z e Z nXy*dd klZdd klZeZWn eZnXdd klZdd klZdd klZl Z l!Z!ddgZ"e#edƒo ei$pd„Z$dei%fd„ƒYZ&de'fd„ƒYZ(de(fd„ƒYZ)de*fd„ƒYZ+dS(iÿÿÿÿN(tdatetimet timedelta(tHMACtSHAiii(tsha(tsha1(taes(tgenerateCryptoKeys(tclsmap(tBeakerException(t b64decodet b64encodetSett SignedCookietSessiontgetpidcCsdS(t((((s2/usr/lib/python2.6/site-packages/beaker/session.pyt+scBs,eZdZdd„Zd„Zd„ZRS(s7Extends python cookie to give digital signature supportcCs ||_tii||ƒdS(N(tsecrettCookiet BaseCookiet__init__(tselfRtinput((s2/usr/lib/python2.6/site-packages/beaker/session.pyR/s cCs_|idƒ}ti|i|dtƒiƒ}||d jo d|fS|d|fSdS(Nt"i((tstripRtnewRtSHA1t hexdigesttNone(Rtvaltsig((s2/usr/lib/python2.6/site-packages/beaker/session.pyt value_decode3s " cCs8ti|i|tƒiƒ}t|ƒd||ffS(Ns%s%s(RRRRRtstr(RRR((s2/usr/lib/python2.6/site-packages/beaker/session.pyt value_encode;sN(t__name__t __module__t__doc__RRR R"(((s2/usr/lib/python2.6/site-packages/beaker/session.pyR -s  c Bs¤eZdZd eed d dd ed d ed d„ Zd„Zd„Ze eƒZd„Z d„Z d„Z d„Z ed „Zd „Zd „Zd „ZRS(s6Session object that uses container package for storagesbeaker.session.idcKsõ|p!|o d|_q1d|_n ||_| p t|i|_||_||_||_||_||_||_| |_ | |_ t |_ | |_ | |_||_h|_|io¸|iddƒ}| oKyt| d|ƒ|_Wq@tij ot| ddƒ|_q@Xntid|ƒ|_|i o0|ii|iƒo|i|ii|_qn|idj|_|io&|iƒtiƒ|d<|dRit _decrypt_dataRARaRjR9t_create_cookie( RR.R0R1R3R4R~RR7tkwargsRE((s2/usr/lib/python2.6/site-packages/beaker/session.pyRAsD            - cCs|dS(NR*((R((s2/usr/lib/python2.6/site-packages/beaker/session.pyR^pscCs|dS(NR|((R((s2/usr/lib/python2.6/site-packages/beaker/session.pyR8tscCsª|iowttidƒƒd }t|i|i|dƒ}ti|ƒ}ti |i ƒddƒ}|t|i |ƒƒSti |i ƒddƒ}t|ƒSdS(s0Serialize, encipher, and base64 the session dicti(iitprotocoliN( R~R tosturandomRRRtAEStcPickletdumpsRjtprocess(RtnonceR~t ctrcipherRu((s2/usr/lib/python2.6/site-packages/beaker/session.pyt _encrypt_dataxs  cCs°|io||i|iid }t|i|i|dƒ}ti|ƒ}t|i|iidƒ}|i |ƒ}t i |ƒSt|i|iiƒ}t i |ƒSdS(sHBas64, decipher, then un-serialize the data for the session dictiiN( R~R(R0R>RRRR‡R RŠRˆtloads(RR‹R~RŒtpayloadRu((s2/usr/lib/python2.6/site-packages/beaker/session.pyR…s  cCs\ttdtiƒthƒtiƒtƒfƒiƒƒiddƒiddƒidƒS(Ns%f%s%f%sRFRGRHRIRJ( R RRAR8RQRRRRSRT(R((s2/usr/lib/python2.6/site-packages/beaker/session.pyR€”s!cCsI|o|iodS|o|iƒ|i|iƒn|iƒdS(s5Saves the data for this session to persistent storageN(R?RaRiR9R‚(RRt((s2/usr/lib/python2.6/site-packages/beaker/session.pyRvšs  cCs|iddƒdS(s7Delete the 'expires' attribute on this Session, if any.t_expiresN(tpopR(R((s2/usr/lib/python2.6/site-packages/beaker/session.pytexpire£scCs d|jotiƒ|d       !#cCs|iƒ|iƒdS(s(Delete the cookie, and clear the sessionN(R`Ra(R((s2/usr/lib/python2.6/site-packages/beaker/session.pyRbÑs cCs|iƒ|iƒ|d((s2/usr/lib/python2.6/site-packages/beaker/session.pyt __setattr__ýscCs|iƒi|ƒdS(N(Ržt __delattr__(Rtname((s2/usr/lib/python2.6/site-packages/beaker/session.pyR¤scCs|iƒ|S(N(Rž(RR0((s2/usr/lib/python2.6/site-packages/beaker/session.pyt __getitem__scCs||iƒ|((s2/usr/lib/python2.6/site-packages/beaker/session.pyt __setitem__scCs|iƒi|ƒdS(N(Ržt __delitem__(RR0((s2/usr/lib/python2.6/site-packages/beaker/session.pyR¨ scCs|iƒiƒS(N(Ržt__repr__(R((s2/usr/lib/python2.6/site-packages/beaker/session.pyR© scCst|iƒiƒƒS(s!Only works for proxying to a dict(titerRžtkeys(R((s2/usr/lib/python2.6/site-packages/beaker/session.pyt__iter__scCs|iƒi|ƒS(N(RžR=(RR0((s2/usr/lib/python2.6/site-packages/beaker/session.pyt __contains__scCs;|id}thdtd||}|iodS|S(NR•R2R8(R™RR5R?R(RR8R›Rd((s2/usr/lib/python2.6/site-packages/beaker/session.pyt get_by_ids   cCst|id|iidƒo|iƒiƒn|iƒidtƒdS(sCPersist the session to the storage If its set to autosave, then the entire session will be saved regardless of if save() has been called. Otherwise, just the accessed time will be updated if save() was not called, or the session will be saved if save() was called. R•tautoR¯RtN(R™R:RžRvRU(R((s2/usr/lib/python2.6/site-packages/beaker/session.pytpersist$s cCs|iidtƒS(NR¯(R™R:R5(R((s2/usr/lib/python2.6/site-packages/beaker/session.pytdirty5scCs|iddj S(NR—(R™R(R((s2/usr/lib/python2.6/site-packages/beaker/session.pytaccessed8s(R#R$R%RRžR¡R£R¤R¦R§R¨R©R¬R­R®RvRbR±R²R³(((s2/usr/lib/python2.6/site-packages/beaker/session.pyR”Ýs$                (ii(,RˆRthmacR…RQRARRt Crypto.HashRRRRRt ImportErrortsyst version_infoRthashlibtpycryptopp.cipherRt beaker.cryptoRRUR}R5t beaker.cacheRtbeaker.exceptionsR t beaker.utilR R R t__all__RoRRR RqRR{tobjectR”(((s2/usr/lib/python2.6/site-packages/beaker/session.pyts@              #ê³