# -*- coding: utf-8 -*- from module.plugins.internal.Account import Account from module.common.json_layer import json_loads class RPNetBiz(Account): __name__ = "RPNetBiz" __type__ = "account" __version__ = "0.17" __status__ = "testing" __config__ = [("mh_mode" , "all;listed;unlisted", "Filter hosters to use" , "all"), ("mh_list" , "str" , "Hoster list (comma separated)", "" ), ("mh_interval", "int" , "Reload interval in minutes" , 60 )] __description__ = """RPNet.biz account plugin""" __license__ = "GPLv3" __authors__ = [("Dman", "dmanugm@gmail.com")] def grab_hosters(self, user, password, data): res = self.load("https://premium.rpnet.biz/client_api.php", get={'username': user, 'password': password, 'action' : "showHosterList"}) hoster_list = json_loads(res) #: If account is not valid thera are no hosters available if 'error' in hoster_list: return [] #: Extract hosters from json file return hoster_list['hosters'] def grab_info(self, user, password, data): #: Get account information from rpnet.biz res = self.get_account_status(user, password) try: if res['accountInfo']['isPremium']: #: Parse account info. Change the trafficleft later to support per host info. account_info = {'validuntil': float(res['accountInfo']['premiumExpiry']), 'trafficleft': -1, 'premium': True} else: account_info = {'validuntil': None, 'trafficleft': None, 'premium': False} except KeyError: #: Handle wrong password exception account_info = {'validuntil': None, 'trafficleft': None, 'premium': False} return account_info def signin(self, user, password, data): #: Get account information from rpnet.biz res = self.get_account_status(user, password) #: If we have an error in the res, we have wrong login information if 'error' in res: self.fail_login() def get_account_status(self, user, password): #: Using the rpnet API, check if valid premium account res = self.load("https://premium.rpnet.biz/client_api.php", get={'username': user, 'password': password, 'action': "showAccountInformation"}) self.log_debug("JSON data: %s" % res) return json_loads(res)