diff options
author | Walter Purcaro <vuolter@gmail.com> | 2014-12-31 01:12:36 +0100 |
---|---|---|
committer | Walter Purcaro <vuolter@gmail.com> | 2014-12-31 01:12:36 +0100 |
commit | 5224873c278ccfc6f1b4d4289b34217cb1560053 (patch) | |
tree | a1081aef0a2e0d97a7976a1c55622c200b2b3e4b /module/plugins/hoster | |
parent | Handle methods get pyfile argument (2) (diff) | |
download | pyload-5224873c278ccfc6f1b4d4289b34217cb1560053.tar.xz |
[MegaCoNz] Fix https://github.com/pyload/pyload/issues/989
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r-- | module/plugins/hoster/MegaCoNz.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/module/plugins/hoster/MegaCoNz.py b/module/plugins/hoster/MegaCoNz.py index 00f38ff06..e404c38a1 100644 --- a/module/plugins/hoster/MegaCoNz.py +++ b/module/plugins/hoster/MegaCoNz.py @@ -47,9 +47,9 @@ from module.plugins.Hoster import Hoster class MegaCoNz(Hoster): __name__ = "MegaCoNz" __type__ = "hoster" - __version__ = "0.21" + __version__ = "0.22" - __pattern__ = r'https?://(?:www\.)?mega\.co\.nz/#(?P<TYPE>N)?!(?P<ID>[\w^_]+)!(?P<KEY>[\w,\\-]+)' + __pattern__ = r'https?://(?:www\.)?mega\.co\.nz/#(?P<TYPE>N|)!(?P<ID>[\w^_]+)!(?P<KEY>[\w,\\-]+)' __description__ = """Mega.co.nz hoster plugin""" __license__ = "GPLv3" @@ -68,11 +68,11 @@ class MegaCoNz(Hoster): def getCipherKey(self, key): """ Construct the cipher key from the given data """ - key = self.b64_decode(key) + a = array("I", self.b64_decode(key)) - k = key[0] ^ key[4], key[1] ^ key[5], key[2] ^ key[6], key[3] ^ key[7] - iv = key[4:6] + (0, 0) - meta_mac = key[6:8] + k = array("I", (a[0] ^ a[4], a[1] ^ a[5], a[2] ^ a[6], a[3] ^ a[7])) + iv = a[4:6] + array("I", (0, 0)) + meta_mac = a[6:8] return k, iv, meta_mac @@ -162,7 +162,7 @@ class MegaCoNz(Hoster): pattern = re.match(self.__pattern__, pyfile.url).groupdict() id = pattern['ID'] key = pattern['KEY'] - public = 'TYPE' not in pattern + public = pattern['TYPE'] == '' self.logDebug("ID: %s" % id, "Key: %s" % key, "Type: %s" % ("public" if public else "node")) @@ -173,7 +173,9 @@ class MegaCoNz(Hoster): else: mega = self.api_response(a="g", g=1, n=id, ssl=1)[0] - if "e" in mega: + if isinstance(mega, int): + self.checkError(mega) + elif "e" in mega: self.checkError(mega['e']) attr = self.decryptAttr(mega['at'], key) |