summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--module/PluginThread.py7
-rw-r--r--module/plugins/captcha/captcha.py2
-rw-r--r--module/plugins/crypter/RelinkUs.py83
-rwxr-xr-xpyLoadCore.py4
4 files changed, 75 insertions, 21 deletions
diff --git a/module/PluginThread.py b/module/PluginThread.py
index 20cb10a5b..6950ec8d7 100644
--- a/module/PluginThread.py
+++ b/module/PluginThread.py
@@ -213,8 +213,11 @@ class DownloadThread(PluginThread):
continue
except error, e:
- code, msg = e
-
+ try:
+ code, msg = e.args
+ except:
+ code = 0
+ msg = e.args
if code in (7, 18, 28, 52, 56):
self.m.log.warning(_("Couldn't connect to host or connection resetted waiting 1 minute and retry."))
diff --git a/module/plugins/captcha/captcha.py b/module/plugins/captcha/captcha.py
index 27c362f17..1da269dc6 100644
--- a/module/plugins/captcha/captcha.py
+++ b/module/plugins/captcha/captcha.py
@@ -56,6 +56,8 @@ class OCR(object):
popen = subprocess.Popen(command, bufsize = -1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
popen.wait()
+ output = popen.stdout.read() +" | "+ popen.stderr.read()
+ self.logger.debug("Tesseract ReturnCode %s Output: %s" % (popen.returncode, output))
def run_tesser(self, subset=False, digits=True, lowercase=True, uppercase=True):
#self.logger.debug("create tmp tif")
diff --git a/module/plugins/crypter/RelinkUs.py b/module/plugins/crypter/RelinkUs.py
index daf96fd76..ef00b1183 100644
--- a/module/plugins/crypter/RelinkUs.py
+++ b/module/plugins/crypter/RelinkUs.py
@@ -7,53 +7,102 @@ import binascii
import re
import urllib
+
class RelinkUs(Crypter):
__name__ = "RelinkUs"
__type__ = "crypter"
- __pattern__ = r"http://(www\.)?relink.us/(f|((view|go).php))"
- __version__ = "2.1"
+ __pattern__ = r"http://(www\.)?relink.us/(f/|((view|go).php\?id=))(?P<id>.+)"
+ __version__ = "2.2"
__description__ = """Relink.us Crypter Plugin"""
- __author_name__ = ("Sleeper-", "spoob", "fragonib")
- __author_mail__ = ("@nonymous", "spoob@pyload.org", "fragonib AT yahoo DOT es")
+ __author_name__ = ("fragonib")
+ __author_mail__ = ("fragonib AT yahoo DOT es")
# Constants
_JK_KEY_ = "jk"
_CRYPTED_KEY_ = "crypted"
+
+ def setup(self):
+ self.html = None
def decrypt(self, pyfile):
-
- # Request page
- self.html = self.load(pyfile.url)
- if not self.fileExists():
+ # Init
+ self.pyfile = pyfile
+ self.package = pyfile.package()
+
+ # Request package
+ self.html = self.requestPackageInfo()
+ if not self.isOnline():
self.offline()
+
+ # Check for password protection
+ if self.isPasswordProtected():
+ self.html = self.submitPassword()
+ if self.html is None:
+ self.fail("Incorrect password, please set right password on Add package form and retry")
# Get package name and folder
(package_name, folder_name) = self.getPackageNameAndFolder()
# Get package links
- (crypted, jk) = self.getCipherParams()
- package_links = self.getLinks(crypted, jk)
+ try:
+ (crypted, jk) = self.getCipherParams()
+ package_links = self.getLinks(crypted, jk)
+ except:
+ self.fail("Unable to decrypt package")
# Pack
self.packages = [(package_name, package_links, folder_name)]
- def fileExists(self):
+ def isOnline(self):
if "sorry.png" in self.html:
self.log.debug("RelinkUs: File not found")
return False
return True
+
+ def isPasswordProtected(self):
+ if "<h1>Container Protection</h1>" in self.html:
+ self.log.debug("RelinkUs: Links are password protected")
+ return True
+ return False
+
+ def requestPackageInfo(self):
+ return self.load(self.pyfile.url)
+
+ def submitPassword(self):
+ # Gather data
+ url = self.pyfile.url
+ m = re.match(self.__pattern__, url)
+ if m is None:
+ self.log.debug("RelinkUs: Unable to get package id from url [%s]" % (url))
+ return
+ id = m.group('id')
+ password = self.package.password
+
+ # Submit package password
+ url = "http://www.relink.us/container_password.php?id=" + id
+ post = { '#' : '', 'password' : password, 'pw' : 'submit' }
+ self.log.debug("RelinkUs: Submitting password [%s] for protected links with id [%s]" % (password, id))
+ html = self.load(url, {}, post)
+
+ # Check for invalid password
+ if "An error occurred!" in html:
+ self.log.debug("RelinkUs: Incorrect password, please set right password on Add package form and retry")
+ return None
+ else:
+ return html
def getPackageNameAndFolder(self):
title_re = r'<td class="top">Title</td><td class="top">\|</td><td><span class="info_view_id"><i>(?P<title>.+)</i></span></td>'
m = re.search(title_re, self.html)
if m is not None:
name = folder = m.group('title')
- self.log.debug("RelinkUs: Found name [%s] and folder [%s] for package" % (name, folder))
+ self.log.debug("RelinkUs: Found name [%s] and folder [%s] in package info" % (name, folder))
+ return (name, folder)
+ else:
+ name = self.package.name
+ folder = self.package.folder
+ self.log.debug("RelinkUs: Package info not found, defaulting to pyfile name [%s] and folder [%s]" % (name, folder))
return (name, folder)
- name = self.pyfile.package().name
- folder = self.pyfile.package().folder
- self.log.debug("RelinkUs: Default to pyfile name [%s] and folder [%s] for package" % (name, folder))
- return (name, folder)
def getCipherParams(self):
@@ -78,7 +127,7 @@ class RelinkUs(Crypter):
# Get key
jreturn = self.js.eval("%s f()" % jk)
- self.log.debug("RelinkUs: JsEngine returns value [%s]" % jreturn)
+ self.log.debug("RelinkUs: JsEngine returns value key=[%s]" % jreturn)
key = binascii.unhexlify(jreturn)
# Decode crypted
diff --git a/pyLoadCore.py b/pyLoadCore.py
index c5669c496..3faecb276 100755
--- a/pyLoadCore.py
+++ b/pyLoadCore.py
@@ -287,10 +287,10 @@ class Core(object):
self.do_restart = False
self.shuttedDown = False
- self.writePidFile()
-
self.log.info(_("Using home directory: %s") % getcwd())
+ self.writePidFile()
+
#@TODO refractor
self.check_install("Crypto", _("pycrypto to decode container files"))