From 1d06a2f5b9d13a4cb11f313436023f4a9067ca5f Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: Nov 12 2016 17:17:24 +0000 Subject: Use the new autocleanup system for transactions Merges: #164 Signed-off-by: Patrick Uiterwijk Reviewed-by: Ralph Bean --- diff --git a/ipsilon/util/data.py b/ipsilon/util/data.py index be3428c..3528fb3 100644 --- a/ipsilon/util/data.py +++ b/ipsilon/util/data.py @@ -895,6 +895,8 @@ class UserStore(Store): class TranStore(Store): + _auto_cleanup_tables = ['transactions'] + def __init__(self, path=None): super(TranStore, self).__init__('transactions.db') self.table = 'transactions' @@ -920,17 +922,6 @@ class TranStore(Store): else: raise NotImplementedError() - def _cleanup(self): - # pylint: disable=protected-access - table = SqlQuery(self._db, self.table, UNIQUE_DATA_TABLE)._table - in_one_hour = datetime.datetime.now() - datetime.timedelta(hours=1) - sel = select([table.c.uuid]). \ - where(and_(table.c.name == 'origintime', - table.c.value <= str(in_one_hour))) - # pylint: disable=no-value-for-parameter - d = table.delete().where(table.c.uuid.in_(sel)) - return d.execute().rowcount - class SAML2SessionStore(Store): diff --git a/ipsilon/util/trans.py b/ipsilon/util/trans.py index 22c7641..1c6fffc 100644 --- a/ipsilon/util/trans.py +++ b/ipsilon/util/trans.py @@ -9,6 +9,8 @@ from ipsilon.util.cookies import SecureCookie TRANSTABLE = 'transactions' TRANSID = "ipsilon_transaction_id" +SESSION_DURATION = 3600 + class Transaction(Log): @@ -45,7 +47,8 @@ class Transaction(Log): def create_tid(self): data = {'provider': self.provider, 'origintime': str(datetime.now())} - self.transaction_id = self._ts.new_unique_data(TRANSTABLE, data) + self.transaction_id = self._ts.new_unique_data(TRANSTABLE, data, + ttl=SESSION_DURATION) self._set_cookie() self.debug('Transaction: %s %s' % (self.provider, self.transaction_id)) @@ -55,7 +58,7 @@ class Transaction(Log): self.cookie.send() cookiedata = {'cookie': self.cookie.name} data = {self.transaction_id: cookiedata} - self._ts.save_unique_data(TRANSTABLE, data) + self._ts.save_unique_data(TRANSTABLE, data, ttl=SESSION_DURATION) def _get_cookie(self, data=None): if data is None: @@ -80,7 +83,7 @@ class Transaction(Log): def store(self, data): savedata = {self.transaction_id: data} - self._ts.save_unique_data(TRANSTABLE, savedata) + self._ts.save_unique_data(TRANSTABLE, savedata, ttl=SESSION_DURATION) def retrieve(self): data = self._ts.get_unique_data(TRANSTABLE,