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: | 
