summaryrefslogtreecommitdiffstats
path: root/module/plugins/Account.py
diff options
context:
space:
mode:
Diffstat (limited to 'module/plugins/Account.py')
-rw-r--r--module/plugins/Account.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/module/plugins/Account.py b/module/plugins/Account.py
index e8ca26749..2d4642411 100644
--- a/module/plugins/Account.py
+++ b/module/plugins/Account.py
@@ -34,12 +34,16 @@ class Account():
__description__ = """Account Plugin"""
__author_name__ = ("mkaay")
__author_mail__ = ("mkaay@mkaay.de")
+
+ # after that time [in minutes] pyload will relogin the account
+ login_timeout = 600
def __init__(self, manager, accounts):
self.manager = manager
self.core = manager.core
self.accounts = {}
self.infos = {} # cache for account information
+ self.timestamps = {}
self.setAccounts(accounts)
def login(self, user, data, req):
@@ -49,6 +53,7 @@ class Account():
req = self.getAccountRequest(user)
try:
self.login(user, data, req)
+ self.timestamps[user] = time()
except WrongPassword:
self.core.log.warning(_("Could not login with %(plugin)s account %(user)s | %(msg)s") % {"plugin": self.__name__, "user": user, "msg": _("Wrong Password")})
data["valid"] = False
@@ -205,3 +210,14 @@ class Account():
self.core.log.warning(_("%(plugin)s Account %(user)s is expired, checking again in 1h") % {"plugin" : self.__name__, "user": user})
self.infos[user].update({"validuntil": time() - 1})
self.core.scheduler.addJob(60*60, self.getAccountInfo, [user])
+
+
+ def checkLogin(self, user):
+ """ checks if user is still logged in """
+ if self.timestamps.has_key(user):
+ if self.timestamps[user] + self.login_timeout * 60 < time():
+ self.core.log.debug("Reached login timeout for %s:%s" % (self.__name__, user))
+ self.relogin(user)
+ return False
+
+ return True \ No newline at end of file