[Zope-dev] Re: BrowserIdManager help!
Tres Seaver
tseaver at palladion.com
Mon May 12 11:34:09 EDT 2008
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Miles wrote:
> Hi,
>
> I am attempting to integrate a zope site with some other applications.
>
> I'm trying to get another application to set the _ZopeId browser/session
> cookie, so that users can move between the two with a single login.
>
> This requires me to reproduce the code below, so a valid broser Id is
> returned:
>
> (from Products.Sessions.BrowserIdManager 505:512)
>
> def getB64TStamp(
> b2a=binascii.b2a_base64,gmtime=time.gmtime, time=time.time,
> b64_trans=b64_trans, split=string.split,
> TimeStamp=TimeStamp.TimeStamp, translate=string.translate
> ):
> t=time()
> ts=split(b2a(`TimeStamp(*gmtime(t)[:5]+(t%60,))`)[:-1],'=')[0]
> return translate(ts, b64_trans)
>
> Unfortunately, I don't know any C, and the TimeStamp function is only
> available in C. I'm hoping someone can spare a few minutes to explain
> how this function could be coded in python so I can understand it, and
> produce a non-python function to return valid browser ids.
>
> I hope that makes sense!
This should do to get the eight-byte representation used by TimeStamp
(the value inside the backquotes):
- --------------------------- %< ---------------------------------------
import struct
from time import gmtime
from time import time
SCONV = 60.0 / float(1<<16) / float(1<<16)
def _toEightBytes(year, month, day, hour, minutes, seconds):
years_offset = year - 1900
months_offset = (years_offset * 12) + (month - 1)
days_offset = months_offset * 31 + (day - 1)
hours_offset = (days_offset * 24) + hour
minutes_offset = (hours_offset * 60) + minutes
seconds_exp = int(seconds / SCONV)
return struct.pack('>L',
minutes_offset) + struct.pack('>L', seconds_exp)
def TimeStamp__data(now=None):
""" Return the current time as an 8-byte string.
"""
if now is None:
now = time()
zulu = gmtime(now)
seconds = now % 60
args = zulu[:5] + (seconds,)
return _toEightBytes(*args)
- --------------------------- %< ---------------------------------------
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFIKGNx+gerLs4ltQ4RAlQYAKDPZTJakP3crES4Bk3B06HAxJ1uTQCgn+Vm
oeZIFt1Whn2vxTmL4yrBFYg=
=u0+E
-----END PGP SIGNATURE-----
More information about the Zope-Dev
mailing list