This commit is contained in:
ahmedbodi 2014-01-09 09:50:39 +00:00
parent 1c6f8b772d
commit 32205b9a7c

View File

@ -3,6 +3,7 @@ import time
from datetime import datetime from datetime import datetime
import Queue import Queue
import signal import signal
import Cache
import lib.settings as settings import lib.settings as settings
@ -19,8 +20,7 @@ class DBInterface():
self.q = Queue.Queue() self.q = Queue.Queue()
self.queueclock = None self.queueclock = None
self.usercache = {} self.cache = Cache.Cache()
self.clearusercache()
self.nextStatsUpdate = 0 self.nextStatsUpdate = 0
@ -67,11 +67,6 @@ class DBInterface():
return DB_None.DB_None() return DB_None.DB_None()
def clearusercache(self):
log.debug("DBInterface.clearusercache called")
self.usercache = {}
self.usercacheclock = reactor.callLater(settings.DB_USERCACHE_TIME , self.clearusercache)
def scheduleImport(self): def scheduleImport(self):
# This schedule's the Import # This schedule's the Import
if settings.DATABASE_DRIVER == "sqlite": if settings.DATABASE_DRIVER == "sqlite":
@ -163,19 +158,16 @@ class DBInterface():
# Force username and password to be strings # Force username and password to be strings
username = str(username) username = str(username)
password = str(password) password = str(password)
wid = username + ":-:" + password if not settings.USERS_CHECK_PASSWORD and self.user_exists(username):
if wid in self.usercache:
return True return True
elif not settings.USERS_CHECK_PASSWORD and self.user_exists(username): elif self.cache.get(username) == password:
self.usercache[wid] = 1
return True return True
elif self.dbi.check_password(username, password): elif self.dbi.check_password(username, password):
self.usercache[wid] = 1 self.cache.set(username, password)
return True return True
elif settings.USERS_AUTOADD == True: elif settings.USERS_AUTOADD == True:
self.insert_user(username, password) self.insert_user(username, password)
self.usercache[wid] = 1 self.cache.set(username, password)
return True return True
log.info("Authentication for %s failed" % username) log.info("Authentication for %s failed" % username)
@ -188,6 +180,8 @@ class DBInterface():
return self.dbi.get_user(id) return self.dbi.get_user(id)
def user_exists(self, username): def user_exists(self, username):
if self.cache.get(username) is not None:
return True
user = self.dbi.get_user(username) user = self.dbi.get_user(username)
return user is not None return user is not None
@ -195,11 +189,13 @@ class DBInterface():
return self.dbi.insert_user(username, password) return self.dbi.insert_user(username, password)
def delete_user(self, username): def delete_user(self, username):
self.mc.delete(username)
self.usercache = {} self.usercache = {}
return self.dbi.delete_user(username) return self.dbi.delete_user(username)
def update_user(self, username, password): def update_user(self, username, password):
self.usercache = {} self.mc.delete(username)
self.mc.set(username, password)
return self.dbi.update_user(username, password) return self.dbi.update_user(username, password)
def update_worker_diff(self, username, diff): def update_worker_diff(self, username, diff):