diff options
-rw-r--r-- | module/forwarder.py | 73 | ||||
-rw-r--r-- | module/plugins/Plugin.py | 5 | ||||
-rw-r--r-- | module/plugins/hooks/ClickAndLoad.py | 14 |
3 files changed, 87 insertions, 5 deletions
diff --git a/module/forwarder.py b/module/forwarder.py new file mode 100644 index 000000000..eacb33c2b --- /dev/null +++ b/module/forwarder.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- + +""" + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, + or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see <http://www.gnu.org/licenses/>. + + @author: RaNaN +""" + +from sys import argv +from sys import exit + +import socket +import thread + +from traceback import print_exc + +class Forwarder(): + + def __init__(self, extip,extport=9666): + print "Start portforwarding to %s:%s" % (extip, extport) + proxy(extip, extport, 9666) + + +def proxy(*settings): + while True: + server(*settings) + +def server(*settings): + try: + dock_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + dock_socket.bind(("127.0.0.1", 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((settings[0], settings[1])) + thread.start_new_thread(forward, (client_socket, server_socket)) + thread.start_new_thread(forward, (server_socket, client_socket)) + except Exception: + print_exc() + + +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) + +if __name__ == "__main__": + args = argv[1:] + if not args: + print "Usage: forwarder.py <remote ip> <remote port>" + exit() + if len(args) == 1: + args.append(9666) + + f = Forwarder(args[0], int(args[1])) +
\ No newline at end of file diff --git a/module/plugins/Plugin.py b/module/plugins/Plugin.py index cdce7671d..1f680032a 100644 --- a/module/plugins/Plugin.py +++ b/module/plugins/Plugin.py @@ -234,7 +234,10 @@ class Plugin(object): task.removeTask() if not self.core.debug: - remove(temp.name) + try: + remove(temp.name) + except: + pass return result diff --git a/module/plugins/hooks/ClickAndLoad.py b/module/plugins/hooks/ClickAndLoad.py index d4d280618..b9824b863 100644 --- a/module/plugins/hooks/ClickAndLoad.py +++ b/module/plugins/hooks/ClickAndLoad.py @@ -27,7 +27,8 @@ class ClickAndLoad(Hook): __name__ = "ClickAndLoad" __version__ = "0.2" __description__ = """Gives abillity to use jd's click and load. depends on webinterface""" - __config__ = [ ("activated", "bool", "Activated" , "True") ] + __config__ = [ ("activated", "bool", "Activated" , "True"), + ("extern", "bool", "Allow external link adding", "False") ] __author_name__ = ("RaNaN", "mkaay") __author_mail__ = ("RaNaN@pyload.de", "mkaay@mkaay.de") @@ -35,7 +36,12 @@ class ClickAndLoad(Hook): self.port = int(self.core.config['webinterface']['port']) if self.core.config['webinterface']['activated']: try: - thread.start_new_thread(proxy, ("127.0.0.1", self.port, 9666)) + if self.getConfig("extern"): + ip = "0.0.0.0" + else: + ip = "127.0.0.1" + + thread.start_new_thread(proxy, (ip, self.port, 9666)) except: self.logger.error("ClickAndLoad port already in use.") @@ -49,12 +55,12 @@ def proxy(*settings): def server(*settings): try: dock_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - dock_socket.bind(("127.0.0.1", settings[2])) + 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((settings[0], settings[1])) + 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: |