From 29f9dc8fb3396b03d732ebcbeb1cc8f00fe13897 Mon Sep 17 00:00:00 2001 From: RaNaN Date: Wed, 25 Aug 2010 18:22:27 +0200 Subject: new dirs --- module/plugins/Account.py | 105 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 module/plugins/Account.py (limited to 'module/plugins/Account.py') diff --git a/module/plugins/Account.py b/module/plugins/Account.py new file mode 100644 index 000000000..61101347d --- /dev/null +++ b/module/plugins/Account.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- + +""" + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, + or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . + + @author: mkaay +""" + +from random import randrange +import re + +class Account(): + __name__ = "Account" + __version__ = "0.2" + __type__ = "account" + __description__ = """Account Plugin""" + __author_name__ = ("mkaay") + __author_mail__ = ("mkaay@mkaay.de") + + def __init__(self, manager, accounts): + self.manager = manager + self.core = manager.core + self.accounts = {} + self.register = {} + self.setAccounts(accounts) + + def login(self, user, data): + pass + + def setAccounts(self, accounts): + self.accounts = accounts + for user, data in self.accounts.iteritems(): + self.login(user, data) + + def updateAccounts(self, user, password, options): + if self.accounts.has_key(user): + self.accounts[user]["password"] = password + self.accounts[user]["options"] = options + else: + self.accounts[user] = {"password" : password, "options": options} + + self.login(user, self.accounts[user]) + + def removeAccount(self, user): + del self.accounts[user] + + def getAccountInfo(self, name): + return { + "validuntil": None, # -1 for unlimited + "login": name, + #"password": self.accounts[name]["password"], #@XXX: security + "options": self.accounts[name]["options"], + "trafficleft": None, # -1 for unlimited + "maxtraffic": None, + "type": self.__name__, + } + + def getAllAccounts(self): + return [self.getAccountInfo(user) for user, data in self.accounts.iteritems()] + + def getAccountRequest(self, plugin): + user, data = self.getAccountData(plugin) + req = self.core.requestFactory.getRequest(self.__name__, user) + return req + + def getAccountData(self, plugin): + if not len(self.accounts): + return None + if not self.register.has_key(plugin): + account = self.selectAccount(plugin) + self.register[plugin] = account + else: + account = self.register[plugin] + return account + + def selectAccount(self, plugin): + account = self.accounts.items()[randrange(0, len(self.accounts), 1)] + return account + + def canUse(self): + return len(self.accounts) + + def parseTraffic(self, string): #returns kbyte + string = string.strip().lower() + p = re.compile(r"(\d+[\.,]\d+)(.*)") + m = p.match(string) + if m: + traffic = float(m.group(1).replace(",", ".")) + unit = m.group(2).strip() + if unit == "gb" or unit == "gig" or unit == "gbyte" or unit == "gigabyte": + traffic *= 1024*1024 + elif unit == "mb" or unit == "megabyte" or unit == "mbyte" or unit == "mib": + traffic *= 1024 + return traffic -- cgit v1.2.3