diff options
author | Walter Purcaro <vuolter@gmail.com> | 2014-11-20 02:35:27 +0100 |
---|---|---|
committer | Walter Purcaro <vuolter@gmail.com> | 2014-11-20 02:35:27 +0100 |
commit | b8c181dfb79db67ef5e9c8ecc8bc4d3e1319a65c (patch) | |
tree | 6a11ed1858e50337ae2cac21279c6f6f811bb4a6 /pyload/plugins/addon/ClickAndLoad.py | |
parent | __config__ cleanup for addons (diff) | |
download | pyload-b8c181dfb79db67ef5e9c8ecc8bc4d3e1319a65c.tar.xz |
[ClickAndLoad] Rewritten
Diffstat (limited to 'pyload/plugins/addon/ClickAndLoad.py')
-rw-r--r-- | pyload/plugins/addon/ClickAndLoad.py | 92 |
1 files changed, 43 insertions, 49 deletions
diff --git a/pyload/plugins/addon/ClickAndLoad.py b/pyload/plugins/addon/ClickAndLoad.py index 63f82ad9b..cad6e5c13 100644 --- a/pyload/plugins/addon/ClickAndLoad.py +++ b/pyload/plugins/addon/ClickAndLoad.py @@ -1,43 +1,11 @@ # -*- coding: utf-8 -*- -import socket -import thread +from socket import socket, error +from threading import Thread from pyload.plugins.internal.Addon import Addon -def proxy(self, *settings): - thread.start_new_thread(server, (self,) + settings) - lock = thread.allocate_lock() - lock.acquire() - lock.acquire() - - -def server(self, *settings): - try: - dock_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - dock_socket.bind((settings[0], settings[2])) - dock_socket.listen(5) - while True: - client_socket = dock_socket.accept()[0] - server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - server_socket.connect(("127.0.0.1", settings[1])) - thread.start_new_thread(forward, (client_socket, server_socket)) - thread.start_new_thread(forward, (server_socket, client_socket)) - except socket.error, e: - if hasattr(e, "errno"): - errno = e.errno - else: - errno = e.args[0] - - if errno == 98: - self.logWarning(_("Click'N'Load: Port 9666 already in use")) - return - thread.start_new_thread(server, (self,) + settings) - except: - thread.start_new_thread(server, (self,) + settings) - - def forward(source, destination): string = ' ' while string: @@ -52,26 +20,52 @@ def forward(source, destination): class ClickAndLoad(Addon): __name__ = "ClickAndLoad" __type__ = "addon" - __version__ = "0.22" + __version__ = "0.23" - __config__ = [("activated", "bool", "Activated", True), - ("extern", "bool", "Allow external link adding", False)] + __config__ = [("activated", "bool", "Activated" , True ), + ("port" , "int" , "Port" , 9666 ), + ("extern" , "bool", "Allow external link adding", False)] __description__ = """Click'N'Load hook plugin""" __license__ = "GPLv3" __authors__ = [("RaNaN", "RaNaN@pyload.de"), - ("mkaay", "mkaay@mkaay.de")] + ("mkaay", "mkaay@mkaay.de"), + ("Walter Purcaro", "vuolter@gmail.com")] def coreReady(self): - self.port = int(self.config['webinterface']['port']) - if self.config['webinterface']['activated']: - try: - if self.getConfig("extern"): - ip = "0.0.0.0" - else: - ip = "127.0.0.1" - - thread.start_new_thread(proxy, (self, ip, self.port, 9666)) - except: - self.logError(_("ClickAndLoad port already in use")) + self.interval = 300 + + + def periodical(self): + webip = "0.0.0.0" if self.getConfig("extern") else "127.0.0.1" + webport = self.config['webinterface']['port'] + cnlport = self.getConfig("port")) + + try: + s = socket() + s.bind((webip, cnlport)) + s.listen(5) + + client = s.accept()[0] + server = socket() + + server.connect(("127.0.0.1", webport)) + + except error, e: + if hasattr(e, "errno"): + errno = e.errno + else: + errno = e.args[0] + + if errno == 98: + self.logWarning(_("Port %d already in use") % cnlport) + else: + self.logDebug(e) + + else: + t = Thread(target=forward, args=[client, server]) + t.setDaemon(True) + t.start() + self.interval = -1 + |