class SessionTokenLib(Base): ''' kargs key from config resource must be exactly same as request attribute name rtkey as attribute from config resource will return request string istead of return response string ''' def __init__(self,url): Base.__init__(self, url) self.url = url self.mail = Mail(url) def __getKey(self): key = 'This is insecure, change' encryptedKey = hashlib.sha512(key).hexdigest() encryptedKey = encryptedKey.decode('hex') return encryptedKey[0:16] def __decrypt(self, encrypedToken): obj = AES.new(self.__getKey(), AES.MODE_ECB) decode_hex = encrypedToken.decode('hex') crypt = obj.decrypt(decode_hex) return crypt def __encrypt(self, originToken): BS = 16 pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS) #unpad = lambda s : s[0:-ord(s[-1])] obj = AES.new(self.__getKey(), AES.MODE_ECB) cryptToken = obj.encrypt(pad(originToken)) return cryptToken.encode('hex') def api_call_emptyfolder(self,**kargs): try: emptyFolderRes = self.mail.empty_folder(**kargs) domain = re.findall('http://(.*):', kargs['host'])[0] originToken = self.client.session.cookies._cookies[domain]['/']['webtoptoken'].value token = self.__decrypt(originToken) origin_expired_time = re.findall(',([0-9]+),', token)[0] return self.client.session.cookies._cookies[domain]['/']['webtopsessionid'].value + ' | ' + origin_expired_time except Exception,e: if 'AUTHENTICATION_REQUIRED' in str(e): return 'AUTHENTICATION_REQUIRED' else: raise e