From 1e5187cb3802c972a451c875e57ff72c41c14b6e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 2 Jan 2015 02:42:52 +0100 Subject: Fix DLC (thx mbosner) --- module/plugins/container/DLC_25.pyc | Bin 8346 -> 8340 bytes module/plugins/container/DLC_26.pyc | Bin 8319 -> 8313 bytes module/plugins/container/DLC_27.pyc | Bin 8243 -> 8237 bytes 3 files changed, 0 insertions(+), 0 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC_25.pyc b/module/plugins/container/DLC_25.pyc index 409264902..b8fde0051 100644 Binary files a/module/plugins/container/DLC_25.pyc and b/module/plugins/container/DLC_25.pyc differ diff --git a/module/plugins/container/DLC_26.pyc b/module/plugins/container/DLC_26.pyc index 685995fc2..41a4e0cb8 100644 Binary files a/module/plugins/container/DLC_26.pyc and b/module/plugins/container/DLC_26.pyc differ diff --git a/module/plugins/container/DLC_27.pyc b/module/plugins/container/DLC_27.pyc index 6c6d663e5..a6bffaf74 100644 Binary files a/module/plugins/container/DLC_27.pyc and b/module/plugins/container/DLC_27.pyc differ -- cgit v1.2.3 From e1baccf1ec914563d3b2b845906cce024e7cd3b1 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 13 Jan 2015 23:14:50 +0100 Subject: Replace 'except' with 'except Exception' --- module/plugins/container/LinkList.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py index c6173ad73..69461249e 100644 --- a/module/plugins/container/LinkList.py +++ b/module/plugins/container/LinkList.py @@ -23,7 +23,7 @@ class LinkList(Container): def decrypt(self, pyfile): try: file_enc = codecs.lookup(self.getConfig("encoding")).name - except: + except Exception: file_enc = "utf-8" file_name = fs_encode(pyfile.url) @@ -64,7 +64,7 @@ class LinkList(Container): try: txt = open(file_name, 'wb') txt.close() - except: + except Exception: self.logWarning(_("LinkList could not be cleared")) for name, links in packages.iteritems(): -- cgit v1.2.3 From cf4ded052964047de88d676045329b8fa4fca2dc Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 22 Jan 2015 21:31:19 +0100 Subject: Update plugins after CaptchaService changes --- module/plugins/container/RSDF.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 0c43f0e6c..e263c3fe3 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -39,7 +39,7 @@ class RSDF(Container): with open(infile, 'r') as rsdf: data = rsdf.read() except IOError, e: - self.fail(str(e)) + self.fail(e) if re.search(r"404 - Not Found", data) is None: data = binascii.unhexlify(''.join(data.split())) -- cgit v1.2.3 From ac7de5aa83499ff3420757dc552e86347f599763 Mon Sep 17 00:00:00 2001 From: Lukas Date: Thu, 22 Jan 2015 23:22:01 +0100 Subject: [DLC] Updated DLC decrypter --- module/plugins/container/DLC.py | 69 ++++++++++++++++++++++++++++++++++++ module/plugins/container/DLC_25.pyc | Bin 8340 -> 0 bytes module/plugins/container/DLC_26.pyc | Bin 8313 -> 0 bytes module/plugins/container/DLC_27.pyc | Bin 8237 -> 0 bytes 4 files changed, 69 insertions(+) create mode 100644 module/plugins/container/DLC.py delete mode 100644 module/plugins/container/DLC_25.pyc delete mode 100644 module/plugins/container/DLC_26.pyc delete mode 100644 module/plugins/container/DLC_27.pyc (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py new file mode 100644 index 000000000..5af41ac94 --- /dev/null +++ b/module/plugins/container/DLC.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +import base64 +import re + +from Crypto.Cipher import AES +from xml.dom.minidom import parseString + +from module.plugins.Container import Container + + +class DLC(Container): + __name__ = "DLC" + __pattern__ = r'.*\.dlc$' + __version__ = "0.2" + __description__ = """DLC Container Decode Plugin""" + __author_name__ = ("RaNaN", "spoob", "mkaay", "Schnusch") + __author_mail__ = ("RaNaN@pyload.org", "spoob@pyload.org", "mkaay@mkaay.de", "Schnusch@users.noreply.github.com") + + key = "cb99b5cbc24db398" + iv = "9bc24cb995cb8db3" + dlc_api_url = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data=" + + def decrypt(self, pyfile): + infile = pyfile.url.replace("\n", "") + + dlc = open(infile, "r") + data = dlc.read().strip() + dlc.close() + if not data.endswith("=="): + if data.endswith("="): + data += "=" + else: + data += "==" + dlckey = data[-88:] + dlcdata = data[:-88] + dlcdata = base64.standard_b64decode(dlcdata) + rc = self.req.load(self.dlc_api_url + dlckey) + rc = re.search(r'(.+)', rc).group(1) + rc = base64.standard_b64decode(rc) + obj = AES.new(self.key, AES.MODE_CBC, self.iv) + dlckey = obj.decrypt(rc) + obj = AES.new(dlckey, AES.MODE_CBC, dlckey) + self.data = base64.standard_b64decode(obj.decrypt(dlcdata)) + for entry in self.getPackages(): + self.packages.append((entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name)) + + def createNewPackage(self): + return True + + def getPackages(self): + xml = parseString(self.data) + root = xml.documentElement + contentNode = root.getElementsByTagName("content")[0] + return self.parsePackages(contentNode) + + def parsePackages(self, startNode): + c = [] + for node in startNode.getElementsByTagName("package"): + c.append((base64.standard_b64decode(node.getAttribute("name")).decode("utf8", "replace"), self.parseLinks(node))) + + return c + + def parseLinks(self, startNode): + c = [] + for node in startNode.getElementsByTagName("file"): + c.append(base64.standard_b64decode(node.getElementsByTagName("url")[0].firstChild.data)) + + return c diff --git a/module/plugins/container/DLC_25.pyc b/module/plugins/container/DLC_25.pyc deleted file mode 100644 index b8fde0051..000000000 Binary files a/module/plugins/container/DLC_25.pyc and /dev/null differ diff --git a/module/plugins/container/DLC_26.pyc b/module/plugins/container/DLC_26.pyc deleted file mode 100644 index 41a4e0cb8..000000000 Binary files a/module/plugins/container/DLC_26.pyc and /dev/null differ diff --git a/module/plugins/container/DLC_27.pyc b/module/plugins/container/DLC_27.pyc deleted file mode 100644 index a6bffaf74..000000000 Binary files a/module/plugins/container/DLC_27.pyc and /dev/null differ -- cgit v1.2.3 From 6022f5885243ef9589ab1296ff758f98a4002aa5 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 23 Jan 2015 00:50:06 +0100 Subject: [DLC] Cleanup --- module/plugins/container/DLC.py | 85 +++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 42 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index 5af41ac94..446e96221 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -1,69 +1,70 @@ # -*- coding: utf-8 -*- -import base64 +from __future__ import with_statement + import re +import xml +from base64 import standard_b64decode from Crypto.Cipher import AES -from xml.dom.minidom import parseString from module.plugins.Container import Container class DLC(Container): __name__ = "DLC" - __pattern__ = r'.*\.dlc$' - __version__ = "0.2" - __description__ = """DLC Container Decode Plugin""" - __author_name__ = ("RaNaN", "spoob", "mkaay", "Schnusch") - __author_mail__ = ("RaNaN@pyload.org", "spoob@pyload.org", "mkaay@mkaay.de", "Schnusch@users.noreply.github.com") + __version__ = "0.20" + __pattern__ = r'.+\.dlc$' + + __description__ = """DLC container decrypter plugin""" + __license__ = "GPLv3" + __authors__ = [("RaNaN", "RaNaN@pyload.org"), + ("spoob", "spoob@pyload.org"), + ("mkaay", "mkaay@mkaay.de"), + ("Schnusch", "Schnusch@users.noreply.github.com")] + + + def setup(self): + self.key = "cb99b5cbc24db398" + self.iv = "9bc24cb995cb8db3" + self.api_url = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data=" - key = "cb99b5cbc24db398" - iv = "9bc24cb995cb8db3" - dlc_api_url = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data=" def decrypt(self, pyfile): - infile = pyfile.url.replace("\n", "") + with open(pyfile.url.replace("\n", "")) as dlc: + data = dlc.read().strip() - dlc = open(infile, "r") - data = dlc.read().strip() - dlc.close() if not data.endswith("=="): - if data.endswith("="): - data += "=" - else: - data += "==" - dlckey = data[-88:] + data += "=" if data.endswith("=") else "==" + + dlckey = data[-88:] dlcdata = data[:-88] - dlcdata = base64.standard_b64decode(dlcdata) - rc = self.req.load(self.dlc_api_url + dlckey) + dlcdata = standard_b64decode(dlcdata) + + rc = self.req.load(self.api_url + dlckey) rc = re.search(r'(.+)', rc).group(1) - rc = base64.standard_b64decode(rc) - obj = AES.new(self.key, AES.MODE_CBC, self.iv) + rc = standard_b64decode(rc) + + obj = AES.new(self.key, AES.MODE_CBC, self.iv) dlckey = obj.decrypt(rc) - obj = AES.new(dlckey, AES.MODE_CBC, dlckey) - self.data = base64.standard_b64decode(obj.decrypt(dlcdata)) - for entry in self.getPackages(): - self.packages.append((entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name)) + obj = AES.new(dlckey, AES.MODE_CBC, dlckey) + + self.data = standard_b64decode(obj.decrypt(dlcdata)) + self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \ + for entry in self.getPackages()] - def createNewPackage(self): - return True def getPackages(self): - xml = parseString(self.data) - root = xml.documentElement - contentNode = root.getElementsByTagName("content")[0] - return self.parsePackages(contentNode) + root = xml.dom.minidom.parseString(self.data).documentElement + content = root.getElementsByTagName("content")[0] + return self.parsePackages(content) + def parsePackages(self, startNode): - c = [] - for node in startNode.getElementsByTagName("package"): - c.append((base64.standard_b64decode(node.getAttribute("name")).decode("utf8", "replace"), self.parseLinks(node))) + return [(standard_b64decode(node.getAttribute("name")).decode("utf8", "replace"), self.parseLinks(node)) \ + for node in startNode.getElementsByTagName("package")] - return c def parseLinks(self, startNode): - c = [] - for node in startNode.getElementsByTagName("file"): - c.append(base64.standard_b64decode(node.getElementsByTagName("url")[0].firstChild.data)) - - return c + return [standard_b64decode(node.getElementsByTagName("url")[0].firstChild.data) \ + for node in startNode.getElementsByTagName("file")] -- cgit v1.2.3 From 64b48b5cae505aa0bab310687cf2f6c9f48057f1 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 23 Jan 2015 00:51:00 +0100 Subject: Improve container __pattern__ --- module/plugins/container/CCF.py | 4 ++-- module/plugins/container/LinkList.py | 4 ++-- module/plugins/container/RSDF.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index bca535175..c6e642cca 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -16,9 +16,9 @@ from module.utils import save_join class CCF(Container): __name__ = "CCF" - __version__ = "0.20" + __version__ = "0.21" - __pattern__ = r'.+\.ccf' + __pattern__ = r'.+\.ccf$' __description__ = """CCF container decrypter plugin""" __license__ = "GPLv3" diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py index 69461249e..9c76c4341 100644 --- a/module/plugins/container/LinkList.py +++ b/module/plugins/container/LinkList.py @@ -8,9 +8,9 @@ from module.utils import fs_encode class LinkList(Container): __name__ = "LinkList" - __version__ = "0.12" + __version__ = "0.13" - __pattern__ = r'.+\.txt' + __pattern__ = r'.+\.txt$' __config__ = [("clear", "bool", "Clear Linklist after adding", False), ("encoding", "string", "File encoding (default utf-8)", "")] diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index e263c3fe3..0c36293ec 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -12,9 +12,9 @@ from module.utils import fs_encode class RSDF(Container): __name__ = "RSDF" - __version__ = "0.24" + __version__ = "0.25" - __pattern__ = r'.+\.rsdf' + __pattern__ = r'.+\.rsdf$' __description__ = """RSDF container decrypter plugin""" __license__ = "GPLv3" -- cgit v1.2.3 From dd28d119cfed07388f687d05cd6479aa4850469f Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 25 Jan 2015 02:28:56 +0100 Subject: [DLC] Fix https://github.com/pyload/pyload/issues/1074 --- module/plugins/container/DLC.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index 446e96221..f3fd4b808 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -3,7 +3,7 @@ from __future__ import with_statement import re -import xml +import xml.dom.minidom from base64 import standard_b64decode from Crypto.Cipher import AES @@ -13,7 +13,7 @@ from module.plugins.Container import Container class DLC(Container): __name__ = "DLC" - __version__ = "0.20" + __version__ = "0.21" __pattern__ = r'.+\.dlc$' __description__ = """DLC container decrypter plugin""" @@ -55,7 +55,7 @@ class DLC(Container): def getPackages(self): - root = xml.dom.minidom.parseString(self.data).documentElement + root = xml.dom.minidom.parseString(self.data).documentElement content = root.getElementsByTagName("content")[0] return self.parsePackages(content) -- cgit v1.2.3 From 7a0c370482142b113ab70fa1bb1446223a707c62 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 27 Jan 2015 18:10:23 +0100 Subject: [DLC] Improve --- module/plugins/container/DLC.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index f3fd4b808..53349c5c7 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -9,11 +9,12 @@ from base64 import standard_b64decode from Crypto.Cipher import AES from module.plugins.Container import Container +from module.utils import decode class DLC(Container): __name__ = "DLC" - __version__ = "0.21" + __version__ = "0.22" __pattern__ = r'.+\.dlc$' __description__ = """DLC container decrypter plugin""" @@ -21,7 +22,8 @@ class DLC(Container): __authors__ = [("RaNaN", "RaNaN@pyload.org"), ("spoob", "spoob@pyload.org"), ("mkaay", "mkaay@mkaay.de"), - ("Schnusch", "Schnusch@users.noreply.github.com")] + ("Schnusch", "Schnusch@users.noreply.github.com"), + ("Walter Purcaro", "vuolter@gmail.com")] def setup(self): @@ -34,14 +36,13 @@ class DLC(Container): with open(pyfile.url.replace("\n", "")) as dlc: data = dlc.read().strip() - if not data.endswith("=="): - data += "=" if data.endswith("=") else "==" + data += '=' * (-len(data) % 4) dlckey = data[-88:] dlcdata = data[:-88] dlcdata = standard_b64decode(dlcdata) - rc = self.req.load(self.api_url + dlckey) + rc = self.load(self.api_url + dlckey) rc = re.search(r'(.+)', rc).group(1) rc = standard_b64decode(rc) @@ -61,7 +62,7 @@ class DLC(Container): def parsePackages(self, startNode): - return [(standard_b64decode(node.getAttribute("name")).decode("utf8", "replace"), self.parseLinks(node)) \ + return [(standard_b64decode(decode(node.getAttribute("name"))), self.parseLinks(node)) \ for node in startNode.getElementsByTagName("package")] -- cgit v1.2.3 From cb9e67a5437ddfafd6a93f5a208b9faf3f2d5575 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 29 Jan 2015 15:56:57 +0100 Subject: Some file encoding fixup + optimizations --- module/plugins/container/CCF.py | 19 +++++++++-------- module/plugins/container/DLC.py | 40 ++++++++++++++++++++---------------- module/plugins/container/LinkList.py | 28 +++++++++++++++---------- module/plugins/container/RSDF.py | 36 +++++++++++++++----------------- 4 files changed, 66 insertions(+), 57 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index c6e642cca..e7ad8f761 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -11,12 +11,13 @@ from urllib2 import build_opener from MultipartPostHandler import MultipartPostHandler from module.plugins.Container import Container -from module.utils import save_join +from module.utils import fs_encode, save_join class CCF(Container): __name__ = "CCF" - __version__ = "0.21" + __type__ = "container" + __version__ = "0.22" __pattern__ = r'.+\.ccf$' @@ -26,17 +27,17 @@ class CCF(Container): def decrypt(self, pyfile): - infile = pyfile.url.replace("\n", "") - + file = fs_encode(pyfile.url.strip()) opener = build_opener(MultipartPostHandler) - params = {"src": "ccf", - "filename": "test.ccf", - "upload": open(infile, "rb")} - tempdlc_content = opener.open('http://service.jdownloader.net/dlcrypt/getDLC.php', params).read() + + tempdlc_content = opener.open('http://service.jdownloader.net/dlcrypt/getDLC.php', + {'src' : "ccf", + 'filename': "test.ccf", + 'upload' : open(file, "rb")}).read() download_folder = self.config['general']['download_folder'] + tempdlc_name = save_join(download_folder, "tmp_%s.dlc" % pyfile.name) - tempdlc_name = save_join(download_folder, "tmp_%s.dlc" % pyfile.name) with open(tempdlc_name, "w") as tempdlc: tempdlc.write(re.search(r'(.*)', tempdlc_content, re.S).group(1)) diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index 53349c5c7..184a7b25a 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -9,13 +9,15 @@ from base64 import standard_b64decode from Crypto.Cipher import AES from module.plugins.Container import Container -from module.utils import decode +from module.utils import decode, fs_encode class DLC(Container): - __name__ = "DLC" - __version__ = "0.22" - __pattern__ = r'.+\.dlc$' + __name__ = "DLC" + __type__ = "container" + __version__ = "0.23" + + __pattern__ = r'.+\.dlc$' __description__ = """DLC container decrypter plugin""" __license__ = "GPLv3" @@ -26,31 +28,33 @@ class DLC(Container): ("Walter Purcaro", "vuolter@gmail.com")] - def setup(self): - self.key = "cb99b5cbc24db398" - self.iv = "9bc24cb995cb8db3" - self.api_url = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data=" + KEY = "cb99b5cbc24db398" + IV = "9bc24cb995cb8db3" + API_URL = "http://service.jdownloader.org/dlcrypt/service.php?srcType=dlc&destType=pylo&data=%s" def decrypt(self, pyfile): - with open(pyfile.url.replace("\n", "")) as dlc: + file = fs_encode(pyfile.url.strip()) + with open(file) as dlc: data = dlc.read().strip() data += '=' * (-len(data) % 4) dlckey = data[-88:] - dlcdata = data[:-88] - dlcdata = standard_b64decode(dlcdata) + dlcdata = standard_b64decode(data[:-88]) + + try: + rc = re.search(r'(.+)', self.load(self.API_URL % dlckey)).group(1) + + except Exception: + self.fail(_("DLC file is corrupted")) - rc = self.load(self.api_url + dlckey) - rc = re.search(r'(.+)', rc).group(1) - rc = standard_b64decode(rc) + else: + rc = standard_b64decode(rc) - obj = AES.new(self.key, AES.MODE_CBC, self.iv) - dlckey = obj.decrypt(rc) - obj = AES.new(dlckey, AES.MODE_CBC, dlckey) + dlckey = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) - self.data = standard_b64decode(obj.decrypt(dlcdata)) + self.data = standard_b64decode(AES.new(dlckey, AES.MODE_CBC, dlckey).decrypt(dlcdata)) self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \ for entry in self.getPackages()] diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py index 9c76c4341..cff1b9915 100644 --- a/module/plugins/container/LinkList.py +++ b/module/plugins/container/LinkList.py @@ -8,11 +8,12 @@ from module.utils import fs_encode class LinkList(Container): __name__ = "LinkList" - __version__ = "0.13" + __type__ = "container" + __version__ = "0.14" __pattern__ = r'.+\.txt$' - __config__ = [("clear", "bool", "Clear Linklist after adding", False), - ("encoding", "string", "File encoding (default utf-8)", "")] + __config__ = [("clear" , "bool" , "Clear Linklist after adding" , False), + ("encoding", "string", "File encoding (default utf-8)", "" )] __description__ = """Read link lists in txt format""" __license__ = "GPLv3" @@ -22,38 +23,42 @@ class LinkList(Container): def decrypt(self, pyfile): try: - file_enc = codecs.lookup(self.getConfig("encoding")).name - except Exception: - file_enc = "utf-8" + encoding = codecs.lookup(self.getConfig("encoding")).name - file_name = fs_encode(pyfile.url) + except Exception: + encoding = "utf-8" - txt = codecs.open(file_name, 'r', file_enc) - links = txt.readlines() + file = fs_encode(pyfile.url.strip()) + txt = codecs.open(file, 'r', encoding) + links = txt.readlines() curPack = "Parsed links from %s" % pyfile.name packages = {curPack:[],} for link in links: link = link.strip() + if not link: continue if link.startswith(";"): continue + if link.startswith("[") and link.endswith("]"): # new package curPack = link[1:-1] packages[curPack] = [] continue + packages[curPack].append(link) + txt.close() # empty packages fix delete = [] - for key,value in packages.iteritems(): + for key, value in packages.iteritems(): if not value: delete.append(key) @@ -62,8 +67,9 @@ class LinkList(Container): if self.getConfig("clear"): try: - txt = open(file_name, 'wb') + txt = open(file, 'wb') txt.close() + except Exception: self.logWarning(_("LinkList could not be cleared")) diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 0c36293ec..20a0d34cd 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -6,13 +6,16 @@ import base64 import binascii import re +from Crypto.Cipher import AES + from module.plugins.Container import Container from module.utils import fs_encode class RSDF(Container): __name__ = "RSDF" - __version__ = "0.25" + __type__ = "container" + __version__ = "0.26" __pattern__ = r'.+\.rsdf$' @@ -22,35 +25,30 @@ class RSDF(Container): ("spoob", "spoob@pyload.org")] - def decrypt(self, pyfile): - - from Crypto.Cipher import AES + KEY = "8C35192D964DC3182C6F84F3252239EB4A320D2500000000" + IV = "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - infile = fs_encode(pyfile.url.replace("\n", "")) - Key = binascii.unhexlify('8C35192D964DC3182C6F84F3252239EB4A320D2500000000') - IV = binascii.unhexlify('FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF') + def decrypt(self, pyfile): + Key = binascii.unhexlify(self.KEY) IV_Cipher = AES.new(Key, AES.MODE_ECB) - IV = IV_Cipher.encrypt(IV) + IV = IV_Cipher.encrypt(binascii.unhexlify(self.IV)) obj = AES.new(Key, AES.MODE_CFB, IV) try: - with open(infile, 'r') as rsdf: + file = fs_encode(pyfile.url.strip()) + with open(file, 'r') as rsdf: data = rsdf.read() + except IOError, e: self.fail(e) - if re.search(r"404 - Not Found", data) is None: - data = binascii.unhexlify(''.join(data.split())) - data = data.splitlines() + if re.search(r"404 - Not Found", data): + return - for link in data: - if not link: - continue - link = base64.b64decode(link) - link = obj.decrypt(link) + for link in binascii.unhexlify(''.join(data.split())).splitlines(): + if not link: + link = obj.decrypt(base64.b64decode(link)) decryptedUrl = link.replace('CCF: ', '') self.urls.append(decryptedUrl) - - self.logDebug("Adding package %s with %d links" % (pyfile.package().name, len(self.urls))) -- cgit v1.2.3 From 79725268402043906f619f7c09e848e02ab8a17b Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sat, 31 Jan 2015 22:00:59 +0100 Subject: Spare code cosmetics --- module/plugins/container/DLC.py | 14 +++++--------- module/plugins/container/RSDF.py | 3 +-- 2 files changed, 6 insertions(+), 11 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index 184a7b25a..589beab4e 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -5,7 +5,6 @@ from __future__ import with_statement import re import xml.dom.minidom -from base64 import standard_b64decode from Crypto.Cipher import AES from module.plugins.Container import Container @@ -41,20 +40,17 @@ class DLC(Container): data += '=' * (-len(data) % 4) dlckey = data[-88:] - dlcdata = standard_b64decode(data[:-88]) + dlcdata = data[:-88].decode('base64') try: - rc = re.search(r'(.+)', self.load(self.API_URL % dlckey)).group(1) + rc = re.search(r'(.+)', self.load(self.API_URL % dlckey)).group(1).decode('base64') except Exception: self.fail(_("DLC file is corrupted")) - else: - rc = standard_b64decode(rc) - dlckey = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) - self.data = standard_b64decode(AES.new(dlckey, AES.MODE_CBC, dlckey).decrypt(dlcdata)) + self.data = AES.new(dlckey, AES.MODE_CBC, dlckey).decrypt(dlcdata).decode('base64') self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \ for entry in self.getPackages()] @@ -66,10 +62,10 @@ class DLC(Container): def parsePackages(self, startNode): - return [(standard_b64decode(decode(node.getAttribute("name"))), self.parseLinks(node)) \ + return [(decode(node.getAttribute("name")).decode('base64'), self.parseLinks(node)) \ for node in startNode.getElementsByTagName("package")] def parseLinks(self, startNode): - return [standard_b64decode(node.getElementsByTagName("url")[0].firstChild.data) \ + return [node.getElementsByTagName("url")[0].firstChild.data.decode('base64') \ for node in startNode.getElementsByTagName("file")] diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 20a0d34cd..06b3c3b2b 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -2,7 +2,6 @@ from __future__ import with_statement -import base64 import binascii import re @@ -49,6 +48,6 @@ class RSDF(Container): for link in binascii.unhexlify(''.join(data.split())).splitlines(): if not link: - link = obj.decrypt(base64.b64decode(link)) + link = obj.decrypt(link.decode('base64')) decryptedUrl = link.replace('CCF: ', '') self.urls.append(decryptedUrl) -- cgit v1.2.3 From 4722e1f6a0c5978617de52e1ec4611e5d6067142 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 3 Feb 2015 00:22:10 +0100 Subject: Use method pop to remove item from dict --- module/plugins/container/LinkList.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py index cff1b9915..86c5f88e7 100644 --- a/module/plugins/container/LinkList.py +++ b/module/plugins/container/LinkList.py @@ -63,7 +63,7 @@ class LinkList(Container): delete.append(key) for key in delete: - del packages[key] + packages.pop(key, None) if self.getConfig("clear"): try: -- cgit v1.2.3 From 193cb8dbe1b24c24fb919461f16b2215e85da739 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 3 Feb 2015 16:09:13 +0100 Subject: Update container plugins --- module/plugins/container/CCF.py | 29 +++++++++++++++++------------ module/plugins/container/DLC.py | 17 +++++++++-------- module/plugins/container/LinkList.py | 28 ++++++++++------------------ module/plugins/container/RSDF.py | 19 +++++++++---------- 4 files changed, 45 insertions(+), 48 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index e7ad8f761..452b9bb65 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -4,8 +4,6 @@ from __future__ import with_statement import re -from os import makedirs -from os.path import exists from urllib2 import build_opener from MultipartPostHandler import MultipartPostHandler @@ -17,28 +15,35 @@ from module.utils import fs_encode, save_join class CCF(Container): __name__ = "CCF" __type__ = "container" - __version__ = "0.22" + __version__ = "0.23" __pattern__ = r'.+\.ccf$' __description__ = """CCF container decrypter plugin""" __license__ = "GPLv3" - __authors__ = [("Willnix", "Willnix@pyload.org")] + __authors__ = [("Willnix", "Willnix@pyload.org"), + ("Walter Purcaro", "vuolter@gmail.com")] def decrypt(self, pyfile): file = fs_encode(pyfile.url.strip()) opener = build_opener(MultipartPostHandler) - tempdlc_content = opener.open('http://service.jdownloader.net/dlcrypt/getDLC.php', - {'src' : "ccf", - 'filename': "test.ccf", - 'upload' : open(file, "rb")}).read() + dlc_content = opener.open('http://service.jdownloader.net/dlcrypt/getDLC.php', + {'src' : "ccf", + 'filename': "test.ccf", + 'upload' : open(file, "rb")}).read() download_folder = self.config['general']['download_folder'] - tempdlc_name = save_join(download_folder, "tmp_%s.dlc" % pyfile.name) + dlc_file = save_join(download_folder, "tmp_%s.dlc" % pyfile.name) - with open(tempdlc_name, "w") as tempdlc: - tempdlc.write(re.search(r'(.*)', tempdlc_content, re.S).group(1)) + try: + dlc = re.search(r'(.+)', dlc_content, re.S).group(1).decode('base64') - self.urls = [tempdlc_name] + except AttributeError: + self.fail(_("Container is corrupted")) + + with open(dlc_file, "w") as tempdlc: + tempdlc.write(dlc) + + self.urls = [dlc_file] diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index 589beab4e..b01e3098c 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -14,7 +14,7 @@ from module.utils import decode, fs_encode class DLC(Container): __name__ = "DLC" __type__ = "container" - __version__ = "0.23" + __version__ = "0.24" __pattern__ = r'.+\.dlc$' @@ -39,18 +39,19 @@ class DLC(Container): data += '=' * (-len(data) % 4) - dlckey = data[-88:] - dlcdata = data[:-88].decode('base64') + dlc_key = data[-88:] + dlc_data = data[:-88].decode('base64') + dlc_content = self.load(self.API_URL % dlc_key) try: - rc = re.search(r'(.+)', self.load(self.API_URL % dlckey)).group(1).decode('base64') + rc = re.search(r'(.+)', dlc_content, re.S).group(1).decode('base64') - except Exception: - self.fail(_("DLC file is corrupted")) + except AttributeError: + self.fail(_("Container is corrupted")) - dlckey = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) + cipher = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) - self.data = AES.new(dlckey, AES.MODE_CBC, dlckey).decrypt(dlcdata).decode('base64') + self.data = AES.new(cipher, AES.MODE_CBC, cipher).decrypt(dlc_data).decode('base64') self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \ for entry in self.getPackages()] diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py index 86c5f88e7..ccb9b2fa3 100644 --- a/module/plugins/container/LinkList.py +++ b/module/plugins/container/LinkList.py @@ -12,8 +12,8 @@ class LinkList(Container): __version__ = "0.14" __pattern__ = r'.+\.txt$' - __config__ = [("clear" , "bool" , "Clear Linklist after adding" , False), - ("encoding", "string", "File encoding (default utf-8)", "" )] + __config__ = [("flush" , "bool" , "Flush list after adding", False ), + ("encoding", "string", "File encoding" , "utf-8")] __description__ = """Read link lists in txt format""" __license__ = "GPLv3" @@ -28,14 +28,12 @@ class LinkList(Container): except Exception: encoding = "utf-8" - file = fs_encode(pyfile.url.strip()) - txt = codecs.open(file, 'r', encoding) - links = txt.readlines() - curPack = "Parsed links from %s" % pyfile.name - + file = fs_encode(pyfile.url.strip()) + txt = codecs.open(file, 'r', encoding) + curPack = "Parsed links from %s" % pyfile.name packages = {curPack:[],} - for link in links: + for link in txt.readlines(): link = link.strip() if not link: @@ -55,23 +53,17 @@ class LinkList(Container): txt.close() # empty packages fix - - delete = [] - for key, value in packages.iteritems(): if not value: - delete.append(key) - - for key in delete: - packages.pop(key, None) + packages.pop(key, None) - if self.getConfig("clear"): + if self.getConfig("flush"): try: txt = open(file, 'wb') txt.close() - except Exception: - self.logWarning(_("LinkList could not be cleared")) + except IOError: + self.logWarning(_("Failed to flush list")) for name, links in packages.iteritems(): self.packages.append((name, links, name)) diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 06b3c3b2b..8f9bfc0d5 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -14,14 +14,15 @@ from module.utils import fs_encode class RSDF(Container): __name__ = "RSDF" __type__ = "container" - __version__ = "0.26" + __version__ = "0.27" __pattern__ = r'.+\.rsdf$' __description__ = """RSDF container decrypter plugin""" __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.org"), - ("spoob", "spoob@pyload.org")] + ("spoob", "spoob@pyload.org"), + ("Walter Purcaro", "vuolter@gmail.com")] KEY = "8C35192D964DC3182C6F84F3252239EB4A320D2500000000" @@ -29,11 +30,10 @@ class RSDF(Container): def decrypt(self, pyfile): - Key = binascii.unhexlify(self.KEY) - IV_Cipher = AES.new(Key, AES.MODE_ECB) - IV = IV_Cipher.encrypt(binascii.unhexlify(self.IV)) + KEY = binascii.unhexlify(self.KEY) + IV = AES.new(Key, AES.MODE_ECB).encrypt(binascii.unhexlify(self.IV)) - obj = AES.new(Key, AES.MODE_CFB, IV) + cipher = AES.new(KEY, AES.MODE_CFB, IV) try: file = fs_encode(pyfile.url.strip()) @@ -47,7 +47,6 @@ class RSDF(Container): return for link in binascii.unhexlify(''.join(data.split())).splitlines(): - if not link: - link = obj.decrypt(link.decode('base64')) - decryptedUrl = link.replace('CCF: ', '') - self.urls.append(decryptedUrl) + if link: + link = cipher.decrypt(link.decode('base64')).replace('CCF: ', '') + self.urls.append(link) -- cgit v1.2.3 From c61412841c8ea6c456f7d3472166d81132b56e95 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Thu, 19 Feb 2015 16:02:32 +0100 Subject: [LinkList] Rename to TXT --- module/plugins/container/LinkList.py | 69 ------------------------------------ module/plugins/container/TXT.py | 69 ++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 69 deletions(-) delete mode 100644 module/plugins/container/LinkList.py create mode 100644 module/plugins/container/TXT.py (limited to 'module/plugins/container') diff --git a/module/plugins/container/LinkList.py b/module/plugins/container/LinkList.py deleted file mode 100644 index ccb9b2fa3..000000000 --- a/module/plugins/container/LinkList.py +++ /dev/null @@ -1,69 +0,0 @@ -# -*- coding: utf-8 -*- - -import codecs - -from module.plugins.Container import Container -from module.utils import fs_encode - - -class LinkList(Container): - __name__ = "LinkList" - __type__ = "container" - __version__ = "0.14" - - __pattern__ = r'.+\.txt$' - __config__ = [("flush" , "bool" , "Flush list after adding", False ), - ("encoding", "string", "File encoding" , "utf-8")] - - __description__ = """Read link lists in txt format""" - __license__ = "GPLv3" - __authors__ = [("spoob", "spoob@pyload.org"), - ("jeix", "jeix@hasnomail.com")] - - - def decrypt(self, pyfile): - try: - encoding = codecs.lookup(self.getConfig("encoding")).name - - except Exception: - encoding = "utf-8" - - file = fs_encode(pyfile.url.strip()) - txt = codecs.open(file, 'r', encoding) - curPack = "Parsed links from %s" % pyfile.name - packages = {curPack:[],} - - for link in txt.readlines(): - link = link.strip() - - if not link: - continue - - if link.startswith(";"): - continue - - if link.startswith("[") and link.endswith("]"): - # new package - curPack = link[1:-1] - packages[curPack] = [] - continue - - packages[curPack].append(link) - - txt.close() - - # empty packages fix - for key, value in packages.iteritems(): - if not value: - packages.pop(key, None) - - if self.getConfig("flush"): - try: - txt = open(file, 'wb') - txt.close() - - except IOError: - self.logWarning(_("Failed to flush list")) - - for name, links in packages.iteritems(): - self.packages.append((name, links, name)) diff --git a/module/plugins/container/TXT.py b/module/plugins/container/TXT.py new file mode 100644 index 000000000..585da8ac6 --- /dev/null +++ b/module/plugins/container/TXT.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- + +import codecs + +from module.plugins.Container import Container +from module.utils import fs_encode + + +class TXT(Container): + __name__ = "TXT" + __type__ = "container" + __version__ = "0.15" + + __pattern__ = r'.+\.(txt|text)$' + __config__ = [("flush" , "bool" , "Flush list after adding", False ), + ("encoding", "string", "File encoding" , "utf-8")] + + __description__ = """Read link lists in plain text formats""" + __license__ = "GPLv3" + __authors__ = [("spoob", "spoob@pyload.org"), + ("jeix", "jeix@hasnomail.com")] + + + def decrypt(self, pyfile): + try: + encoding = codecs.lookup(self.getConfig("encoding")).name + + except Exception: + encoding = "utf-8" + + file = fs_encode(pyfile.url.strip()) + txt = codecs.open(file, 'r', encoding) + curPack = "Parsed links from %s" % pyfile.name + packages = {curPack:[],} + + for link in txt.readlines(): + link = link.strip() + + if not link: + continue + + if link.startswith(";"): + continue + + if link.startswith("[") and link.endswith("]"): + # new package + curPack = link[1:-1] + packages[curPack] = [] + continue + + packages[curPack].append(link) + + txt.close() + + # empty packages fix + for key, value in packages.iteritems(): + if not value: + packages.pop(key, None) + + if self.getConfig("flush"): + try: + txt = open(file, 'wb') + txt.close() + + except IOError: + self.logWarning(_("Failed to flush list")) + + for name, links in packages.iteritems(): + self.packages.append((name, links, name)) -- cgit v1.2.3 From bc4f746e241a819bb5678125bbb96cb9a1272d82 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 24 Feb 2015 03:49:00 +0100 Subject: [RSDF] Fix https://github.com/pyload/pyload/issues/1204 --- module/plugins/container/DLC.py | 4 ++-- module/plugins/container/RSDF.py | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index b01e3098c..d1c34ef50 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -49,9 +49,9 @@ class DLC(Container): except AttributeError: self.fail(_("Container is corrupted")) - cipher = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) + key = iv = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) - self.data = AES.new(cipher, AES.MODE_CBC, cipher).decrypt(dlc_data).decode('base64') + self.data = AES.new(key, AES.MODE_CBC, iv).decrypt(dlc_data).decode('base64') self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \ for entry in self.getPackages()] diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 8f9bfc0d5..222c8d6ae 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -14,7 +14,7 @@ from module.utils import fs_encode class RSDF(Container): __name__ = "RSDF" __type__ = "container" - __version__ = "0.27" + __version__ = "0.28" __pattern__ = r'.+\.rsdf$' @@ -31,9 +31,10 @@ class RSDF(Container): def decrypt(self, pyfile): KEY = binascii.unhexlify(self.KEY) - IV = AES.new(Key, AES.MODE_ECB).encrypt(binascii.unhexlify(self.IV)) + IV = binascii.unhexlify(self.IV) - cipher = AES.new(KEY, AES.MODE_CFB, IV) + iv = AES.new(KEY, AES.MODE_ECB).encrypt(IV) + cipher = AES.new(KEY, AES.MODE_CFB, iv) try: file = fs_encode(pyfile.url.strip()) -- cgit v1.2.3 From 4195dff3ebe911c6532d0afd130085cc566e11cc Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 24 Feb 2015 23:23:21 +0100 Subject: [RSDF] Check if broken --- module/plugins/container/RSDF.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 222c8d6ae..60e15e2b5 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -14,7 +14,7 @@ from module.utils import fs_encode class RSDF(Container): __name__ = "RSDF" __type__ = "container" - __version__ = "0.28" + __version__ = "0.29" __pattern__ = r'.+\.rsdf$' @@ -47,7 +47,12 @@ class RSDF(Container): if re.search(r"404 - Not Found", data): return - for link in binascii.unhexlify(''.join(data.split())).splitlines(): - if link: + try: + for link in binascii.unhexlify(''.join(data.split())).splitlines(): + if not link: + continue link = cipher.decrypt(link.decode('base64')).replace('CCF: ', '') self.urls.append(link) + + except TypeError: + self.fail(_("Container is corrupted")) -- cgit v1.2.3 From c039d5822c4c53661813b6fd8e2252a3b633532e Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 27 Feb 2015 04:39:45 +0100 Subject: [container] Code cosmetics --- module/plugins/container/CCF.py | 6 +++--- module/plugins/container/DLC.py | 8 ++++---- module/plugins/container/RSDF.py | 19 +++++++++++-------- module/plugins/container/TXT.py | 10 +++++----- 4 files changed, 23 insertions(+), 20 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index 452b9bb65..79d7879a7 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -26,13 +26,13 @@ class CCF(Container): def decrypt(self, pyfile): - file = fs_encode(pyfile.url.strip()) - opener = build_opener(MultipartPostHandler) + fs_filename = fs_encode(pyfile.url.strip()) + opener = build_opener(MultipartPostHandler) dlc_content = opener.open('http://service.jdownloader.net/dlcrypt/getDLC.php', {'src' : "ccf", 'filename': "test.ccf", - 'upload' : open(file, "rb")}).read() + 'upload' : open(fs_filename, "rb")}).read() download_folder = self.config['general']['download_folder'] dlc_file = save_join(download_folder, "tmp_%s.dlc" % pyfile.name) diff --git a/module/plugins/container/DLC.py b/module/plugins/container/DLC.py index d1c34ef50..ff2f0104a 100644 --- a/module/plugins/container/DLC.py +++ b/module/plugins/container/DLC.py @@ -33,8 +33,8 @@ class DLC(Container): def decrypt(self, pyfile): - file = fs_encode(pyfile.url.strip()) - with open(file) as dlc: + fs_filename = fs_encode(pyfile.url.strip()) + with open(fs_filename) as dlc: data = dlc.read().strip() data += '=' * (-len(data) % 4) @@ -52,8 +52,8 @@ class DLC(Container): key = iv = AES.new(self.KEY, AES.MODE_CBC, self.IV).decrypt(rc) self.data = AES.new(key, AES.MODE_CBC, iv).decrypt(dlc_data).decode('base64') - self.packages = [(entry[0] if entry[0] else pyfile.name, entry[1], entry[0] if entry[0] else pyfile.name) \ - for entry in self.getPackages()] + self.packages = [(name or pyfile.name, links, name or pyfile.name) \ + for name, links in self.getPackages()] def getPackages(self): diff --git a/module/plugins/container/RSDF.py b/module/plugins/container/RSDF.py index 60e15e2b5..dd2d14cf7 100644 --- a/module/plugins/container/RSDF.py +++ b/module/plugins/container/RSDF.py @@ -37,22 +37,25 @@ class RSDF(Container): cipher = AES.new(KEY, AES.MODE_CFB, iv) try: - file = fs_encode(pyfile.url.strip()) - with open(file, 'r') as rsdf: + fs_filename = fs_encode(pyfile.url.strip()) + with open(fs_filename, 'r') as rsdf: data = rsdf.read() except IOError, e: self.fail(e) if re.search(r"404 - Not Found", data): - return + pyfile.setStatus("offline") - try: - for link in binascii.unhexlify(''.join(data.split())).splitlines(): + else: + try: + raw_links = binascii.unhexlify(''.join(data.split())).splitlines() + + except TypeError: + self.fail(_("Container is corrupted")) + + for link in raw_links: if not link: continue link = cipher.decrypt(link.decode('base64')).replace('CCF: ', '') self.urls.append(link) - - except TypeError: - self.fail(_("Container is corrupted")) diff --git a/module/plugins/container/TXT.py b/module/plugins/container/TXT.py index 585da8ac6..98ca426d7 100644 --- a/module/plugins/container/TXT.py +++ b/module/plugins/container/TXT.py @@ -28,10 +28,10 @@ class TXT(Container): except Exception: encoding = "utf-8" - file = fs_encode(pyfile.url.strip()) - txt = codecs.open(file, 'r', encoding) - curPack = "Parsed links from %s" % pyfile.name - packages = {curPack:[],} + fs_filename = fs_encode(pyfile.url.strip()) + txt = codecs.open(fs_filename, 'r', encoding) + curPack = "Parsed links from %s" % pyfile.name + packages = {curPack:[],} for link in txt.readlines(): link = link.strip() @@ -59,7 +59,7 @@ class TXT(Container): if self.getConfig("flush"): try: - txt = open(file, 'wb') + txt = open(fs_filename, 'wb') txt.close() except IOError: -- cgit v1.2.3 From 7beb65e991bc6d1913c3b5bb2ef69e659d5b8342 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 10 Mar 2015 01:55:52 +0100 Subject: Spare code cosmetics --- module/plugins/container/TXT.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/TXT.py b/module/plugins/container/TXT.py index 98ca426d7..d419ee060 100644 --- a/module/plugins/container/TXT.py +++ b/module/plugins/container/TXT.py @@ -23,7 +23,7 @@ class TXT(Container): def decrypt(self, pyfile): try: - encoding = codecs.lookup(self.getConfig("encoding")).name + encoding = codecs.lookup(self.getConfig('encoding')).name except Exception: encoding = "utf-8" @@ -57,7 +57,7 @@ class TXT(Container): if not value: packages.pop(key, None) - if self.getConfig("flush"): + if self.getConfig('flush'): try: txt = open(fs_filename, 'wb') txt.close() -- cgit v1.2.3 From 1ef93e913238275f7657d496ba3d2e7eeb5a30a2 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Fri, 1 May 2015 01:06:01 +0200 Subject: Use 'import' instead 'from' --- module/plugins/container/CCF.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'module/plugins/container') diff --git a/module/plugins/container/CCF.py b/module/plugins/container/CCF.py index 79d7879a7..235d5dc1d 100644 --- a/module/plugins/container/CCF.py +++ b/module/plugins/container/CCF.py @@ -2,11 +2,9 @@ from __future__ import with_statement +import MultipartPostHandler import re - -from urllib2 import build_opener - -from MultipartPostHandler import MultipartPostHandler +import urllib2 from module.plugins.Container import Container from module.utils import fs_encode, save_join @@ -27,7 +25,7 @@ class CCF(Container): def decrypt(self, pyfile): fs_filename = fs_encode(pyfile.url.strip()) - opener = build_opener(MultipartPostHandler) + opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler) dlc_content = opener.open('http://service.jdownloader.net/dlcrypt/getDLC.php', {'src' : "ccf", -- cgit v1.2.3