diff options
Diffstat (limited to 'module/plugins/accounts')
| -rw-r--r-- | module/plugins/accounts/DdlstorageCom.py | 44 | 
1 files changed, 41 insertions, 3 deletions
| diff --git a/module/plugins/accounts/DdlstorageCom.py b/module/plugins/accounts/DdlstorageCom.py index 6c610aa84..7404348a4 100644 --- a/module/plugins/accounts/DdlstorageCom.py +++ b/module/plugins/accounts/DdlstorageCom.py @@ -1,13 +1,51 @@  # -*- coding: utf-8 -*- +from hashlib import md5 +from time import mktime, strptime +  from module.plugins.internal.XFSPAccount import XFSPAccount +from module.common.json_layer import json_loads +from module.utils import parseFileSize + +# DDLStorage API Documentation: +# http://www.ddlstorage.com/cgi-bin/api_req.cgi?req_type=doc  class DdlstorageCom(XFSPAccount):      __name__ = "DdlstorageCom" -    __version__ = "0.01" +    __version__ = "1.00"      __type__ = "account"      __description__ = """DDLStorage.com account plugin""" -    __author_name__ = ("zoidberg") -    __author_mail__ = ("zoidberg@mujmail.cz") +    __author_name__ = ("stickell") +    __author_mail__ = ("l.stickell@yahoo.it")      MAIN_PAGE = "http://ddlstorage.com/" + +    def loadAccountInfo(self, user, req): +        password = self.accounts[user]['password'] +        api_data = req.load('http://www.ddlstorage.com/cgi-bin/api_req.cgi', +                            post={'req_type': 'user_info', +                                  'client_id': 53472, +                                  'user_login': user, +                                  'user_password': md5(password).hexdigest(), +                                  'sign': md5('user_info%d%s%s%s' % (53472, user, md5(password).hexdigest(), +                                                                     '25JcpU2dPOKg8E2OEoRqMSRu068r0Cv3')).hexdigest()}) +        api_data = api_data.replace('<pre>', '').replace('</pre>', '') +        self.logDebug('Account Info API data: ' + api_data) +        api_data = json_loads(api_data) + +        if api_data['status'] != 'OK':  # 'status' must be always OK for a working account +            return {"premium": False, "valid": False} + +        if api_data['account_type'] == 'REGISTERED': +            premium = False +            validuntil = None +        else: +            premium = True +            validuntil = int(mktime(strptime(api_data['premium_expire'], "%Y-%m-%d %H:%M:%S"))) + +        if api_data['usr_bandwidth_available'] == 'UNLIMITED': +            trafficleft = -1 +        else: +            trafficleft = parseFileSize(api_data['usr_bandwidth_available']) / 1024 + +        return {"premium": premium, "validuntil": validuntil, "trafficleft": trafficleft} | 
