summaryrefslogtreecommitdiffstats
path: root/module/plugins/accounts
diff options
context:
space:
mode:
authorGravatar Radek Senfeld <rush@logic.cz> 2014-12-22 01:13:39 +0100
committerGravatar Walter Purcaro <vuolter@gmail.com> 2014-12-22 01:13:39 +0100
commit12ae02902dade75c4808e7ec8d6b35c983cc1212 (patch)
treea4ea6603af86e0358718481e554c494e6ed4fd2c /module/plugins/accounts
parent[SimpleHoster] Improve checkFile (diff)
downloadpyload-12ae02902dade75c4808e7ec8d6b35c983cc1212.tar.xz
[WebshareCz] Fixed hoster with added account
Diffstat (limited to 'module/plugins/accounts')
-rw-r--r--module/plugins/accounts/WebshareCz.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/module/plugins/accounts/WebshareCz.py b/module/plugins/accounts/WebshareCz.py
new file mode 100644
index 000000000..f8e3eeb73
--- /dev/null
+++ b/module/plugins/accounts/WebshareCz.py
@@ -0,0 +1,68 @@
+# -*- coding: utf-8 -*-
+
+import re
+
+from hashlib import md5, sha1
+from passlib.hash import md5_crypt
+from time import mktime, strptime, time
+
+from module.plugins.Account import Account
+
+
+class WebshareCz(Account):
+ __name__ = "WebshareCz"
+ __type__ = "account"
+ __version__ = "0.07"
+
+ __description__ = """Webshare.cz account plugin"""
+ __license__ = "GPLv3"
+ __authors__ = [("rush", "radek.senfeld@gmail.com")]
+
+
+ VALID_UNTIL_PATTERN = r'<vip_until>(.+)</vip_until>'
+
+ TRAFFIC_LEFT_PATTERN = r'<bytes>(.+)</bytes>'
+
+
+ def loadAccountInfo(self, user, req):
+ html = req.load("https://webshare.cz/api/user_data/",
+ post={'wst': self.infos['wst']},
+ decode=True)
+
+ self.logDebug("Response: " + html)
+
+ expiredate = re.search(self.VALID_UNTIL_PATTERN, html).group(1)
+ self.logDebug("Expire date: " + expiredate)
+
+ validuntil = mktime(strptime(expiredate, "%Y-%m-%d %H:%M:%S"))
+ trafficleft = self.parseTraffic(re.search(self.TRAFFIC_LEFT_PATTERN, html).group(1))
+ premium = validuntil > time()
+
+ return {'validuntil': validuntil, 'trafficleft': -1, 'premium': premium}
+
+
+ def login(self, user, data, req):
+ salt = req.load("https://webshare.cz/api/salt/",
+ post={'username_or_email': user,
+ 'wst' : ""},
+ decode=True)
+
+ if "<status>OK</status>" not in salt:
+ self.wrongPassword()
+
+ salt = re.search('<salt>(.+)</salt>', salt).group(1)
+ password = sha1(md5_crypt.encrypt(data["password"], salt=salt)).hexdigest()
+ digest = md5(user + ":Webshare:" + password).hexdigest()
+
+ login = req.load("https://webshare.cz/api/login/",
+ post={'digest' : digest,
+ 'keep_logged_in' : 1,
+ 'password' : password,
+ 'username_or_email': user,
+ 'wst' : ""},
+ decode=True)
+
+ if "<status>OK</status>" not in login:
+ self.wrongPassword()
+
+ self.infos['wst'] = re.search('<token>(.+)</token>', login).group(1)