new
This commit is contained in:
110
server/session.py
Normal file
110
server/session.py
Normal file
@ -0,0 +1,110 @@
|
||||
import time
|
||||
import threading
|
||||
from logger import Logger
|
||||
|
||||
|
||||
|
||||
class SessionContainer(threading.Thread):
|
||||
def __init__(self, checkPeriod, expiryTime):
|
||||
threading.Thread.__init__(self)
|
||||
self.checkPeriod = checkPeriod
|
||||
self.expiryTime = expiryTime
|
||||
self.sessions = {}
|
||||
self.sessionsLock = threading.Lock()
|
||||
|
||||
def get(self, sid):
|
||||
if not sid:
|
||||
return None
|
||||
try:
|
||||
self.sessionsLock.acquire()
|
||||
session = self.sessions[sid]
|
||||
session.updateTimestamp()
|
||||
return session
|
||||
except KeyError:
|
||||
return None
|
||||
finally:
|
||||
self.sessionsLock.release()
|
||||
|
||||
def delete(self, sid):
|
||||
if sid:
|
||||
try:
|
||||
self.sessionsLock.acquire()
|
||||
del self.sessions[sid]
|
||||
except KeyError:
|
||||
pass
|
||||
finally:
|
||||
self.sessionsLock.release()
|
||||
|
||||
def add(self, session):
|
||||
try:
|
||||
self.sessionsLock.acquire()
|
||||
self.sessions[session.getId()] = session
|
||||
finally:
|
||||
self.sessionsLock.release()
|
||||
|
||||
def run(self):
|
||||
while True:
|
||||
try:
|
||||
self.sessionsLock.acquire()
|
||||
|
||||
currentTime = int(time.time())
|
||||
for session in self.sessions.values():
|
||||
Logger.log("SessionContainer: checking session %s, expires in %d s" % (session.getId(),
|
||||
(session.getTimestamp() + self.expiryTime) - currentTime))
|
||||
if (session.getTimestamp() + self.expiryTime) < currentTime:
|
||||
Logger.log("SessionContainer: about to drop session %s" % session.getId())
|
||||
del self.sessions[session.getId()]
|
||||
finally:
|
||||
self.sessionsLock.release()
|
||||
|
||||
time.sleep(self.checkPeriod)
|
||||
|
||||
|
||||
class Session(object):
|
||||
def __init__(self, id, params):
|
||||
self.timestamp = int(time.time())
|
||||
self.id = id
|
||||
self.params = params
|
||||
self.badmsg = ''
|
||||
self.goodmsg = ''
|
||||
self.role = ''
|
||||
|
||||
def updateTimestamp(self):
|
||||
self.timestamp = int(time.time())
|
||||
|
||||
def getTimestamp(self):
|
||||
return self.timestamp
|
||||
|
||||
def getId(self):
|
||||
return self.id
|
||||
|
||||
def setParams(self, params):
|
||||
self.params = params
|
||||
|
||||
def getParams(self):
|
||||
return self.params
|
||||
|
||||
def setGoodMsg(self, msg):
|
||||
self.goodmsg = msg
|
||||
|
||||
def setBadMsg(self, msg):
|
||||
self.badmsg = msg
|
||||
|
||||
def setRedirectTarget(self, target):
|
||||
self.redirectTarget = target
|
||||
|
||||
def setShownPage(self, page):
|
||||
self.page = page
|
||||
|
||||
def getShownPage(self):
|
||||
return self.page
|
||||
|
||||
def setAuthTuple(self, authTuple):
|
||||
self.authTuple = authTuple
|
||||
self.username = authTuple['username']
|
||||
self.password = authTuple['password']
|
||||
self.role = authTuple['role']
|
||||
|
||||
def clearMsgs(self):
|
||||
self.badmsg = ''
|
||||
self.goodmsg = ''
|
Reference in New Issue
Block a user