diff options
author | Walter Purcaro <vuolter@gmail.com> | 2014-10-03 19:58:50 +0200 |
---|---|---|
committer | Walter Purcaro <vuolter@gmail.com> | 2014-10-03 19:58:50 +0200 |
commit | 56f75b634356602c5f7a93f65a1260fe2c0d66d8 (patch) | |
tree | 0a4cea353074894d031286d09ccde72c2bc53f25 /pyload/plugins/addon/ClickAndLoad.py | |
parent | Rename accounts directory to account (diff) | |
download | pyload-56f75b634356602c5f7a93f65a1260fe2c0d66d8.tar.xz |
Rename hooks directory to addon
Diffstat (limited to 'pyload/plugins/addon/ClickAndLoad.py')
-rw-r--r-- | pyload/plugins/addon/ClickAndLoad.py | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/pyload/plugins/addon/ClickAndLoad.py b/pyload/plugins/addon/ClickAndLoad.py new file mode 100644 index 000000000..ede970ee8 --- /dev/null +++ b/pyload/plugins/addon/ClickAndLoad.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +import socket +import thread + +from pyload.plugins.base.Hook import Hook + + +class ClickAndLoad(Hook): + __name__ = "ClickAndLoad" + __type__ = "hook" + __version__ = "0.22" + + __config__ = [("activated", "bool", "Activated", True), + ("extern", "bool", "Allow external link adding", False)] + + __description__ = """Gives abillity to use jd's click and load. depends on webinterface""" + __author_name__ = ("RaNaN", "mkaay") + __author_mail__ = ("RaNaN@pyload.de", "mkaay@mkaay.de") + + + 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")) + + +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: + string = source.recv(1024) + if string: + destination.sendall(string) + else: + #source.shutdown(socket.SHUT_RD) + destination.shutdown(socket.SHUT_WR) |