[rhmessaging-commits] rhmessaging commits: r3043 - mgmt/trunk/cumin/python/cumin.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Wed Jan 14 17:46:59 EST 2009


Author: justi9
Date: 2009-01-14 17:46:59 -0500 (Wed, 14 Jan 2009)
New Revision: 3043

Modified:
   mgmt/trunk/cumin/python/cumin/__init__.py
   mgmt/trunk/cumin/python/cumin/user.py
Log:
Implement user session expiration

Modified: mgmt/trunk/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/__init__.py	2009-01-14 22:01:54 UTC (rev 3042)
+++ mgmt/trunk/cumin/python/cumin/__init__.py	2009-01-14 22:46:59 UTC (rev 3043)
@@ -17,7 +17,7 @@
 from page import MainPage
 from stat import StatChartPage
 from action import ActionPage
-from user import LoginPage, UserSession
+from user import LoginPage, UserSession, UserSessionExpireThread
 from datetime import timedelta
 from qpid.util import URL
 
@@ -71,6 +71,7 @@
         self.unprotected_pages = unprotected
 
         self.user_sessions_by_id = dict()
+        self.user_session_expire_thread = UserSessionExpireThread(self)
 
     def check(self):
         if not os.path.isdir(self.home):
@@ -85,6 +86,7 @@
 
     def start(self):
         self.model.start()
+        self.user_session_expire_thread.start()
 
     def stop(self):
         self.model.stop()

Modified: mgmt/trunk/cumin/python/cumin/user.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/user.py	2009-01-14 22:01:54 UTC (rev 3042)
+++ mgmt/trunk/cumin/python/cumin/user.py	2009-01-14 22:46:59 UTC (rev 3043)
@@ -4,7 +4,7 @@
 from time import sleep
 from threading import Thread, Event
 from random import randint
-from datetime import datetime
+from datetime import datetime, timedelta
 from crypt import crypt
 from qpid.datatypes import uuid4
 
@@ -29,9 +29,29 @@
     def delete(self):
         del self.app.user_sessions_by_id[self.id]
 
-class UserSessionDeleteThread(Thread):
-    pass # every minute cycle through and delete expired sessions
+class UserSessionExpireThread(Thread):
+    def __init__(self, app):
+        super(UserSessionExpireThread, self).__init__()
 
+        self.app = app
+        self.setDaemon(True)
+
+    def run(self):
+        while True:
+            self.expire_sessions()
+            sleep(60)
+
+    def expire_sessions(self):
+        when = datetime.now() - timedelta(hours=2)
+        count = 0
+
+        for session in self.app.user_sessions_by_id.values():
+            if session.created < when:
+                session.delete()
+                count += 1
+
+        log.debug("Expired %i sessions", count)
+
 class LoginPage(Page):
     def __init__(self, app, name):
         super(LoginPage, self).__init__(app, name)




More information about the rhmessaging-commits mailing list