diff options
| author | 2010-02-05 22:08:48 +0100 | |
|---|---|---|
| committer | 2010-02-05 22:08:48 +0100 | |
| commit | b4aa60892fb60efd57f593006f35f94868a646da (patch) | |
| tree | 20e3dc3d8487269c5167e5cc73dabcd8261a4826 /module/plugins | |
| parent | fixed gui config error (diff) | |
| download | pyload-b4aa60892fb60efd57f593006f35f94868a646da.tar.xz | |
FlashGot + ClickNLoad Support + Webif. improvm.!! pyLoad FTW !!
Diffstat (limited to 'module/plugins')
| -rw-r--r-- | module/plugins/hooks/ClickAndLoad.py | 112 | 
1 files changed, 112 insertions, 0 deletions
| diff --git a/module/plugins/hooks/ClickAndLoad.py b/module/plugins/hooks/ClickAndLoad.py new file mode 100644 index 000000000..83a328276 --- /dev/null +++ b/module/plugins/hooks/ClickAndLoad.py @@ -0,0 +1,112 @@ +# -*- 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 +    @interface-version: 0.1 +""" + +import asyncore +import socket +import thread + +from module.plugins.Hook import Hook + +class ClickAndLoad(Hook): +    def __init__(self, core): +        Hook.__init__(self, core) +        props = {} +        props['name'] = "ClickAndLoad" +        props['version'] = "0.1" +        props['description'] = """Gives abillity to use jd's click and load. depends on webinterface""" +        props['author_name'] = ("RaNaN") +        props['author_mail'] = ("RaNaN@pyload.de") +        self.props = props + +	self.port = int(self.core.config['webinterface']['port']) +        if not self.core.config['webinterface']['activated']: +            forwarder('127.0.0.1', 9666, '127.0.0.1', self.port) +            thread.start_new_thread(asyncore.loop, ()) + +class forwarder(asyncore.dispatcher): +    def __init__(self, ip, port, remoteip, remoteport, backlog=5): +        asyncore.dispatcher.__init__(self) +        self.remoteip = remoteip +        self.remoteport = remoteport +        self.create_socket(socket.AF_INET, socket.SOCK_STREAM) +        self.set_reuse_addr() +        self.bind((ip, port)) +        self.listen(backlog) + +    def handle_accept(self): +        conn, addr = self.accept() +        # print '--- Connect --- ' +        sender(receiver(conn), self.remoteip, self.remoteport) + +class receiver(asyncore.dispatcher): +    def __init__(self, conn): +        asyncore.dispatcher.__init__(self, conn) +        self.from_remote_buffer = '' +        self.to_remote_buffer = '' +        self.sender = None + +    def handle_connect(self): +        pass + +    def handle_read(self): +        read = self.recv(4096) +        # print '%04i -->'%len(read) +        self.from_remote_buffer += read + +    def writable(self): +        return (len(self.to_remote_buffer) > 0) + +    def handle_write(self): +        sent = self.send(self.to_remote_buffer) +        # print '%04i <--'%sent +        self.to_remote_buffer = self.to_remote_buffer[sent:] + +    def handle_close(self): +        self.close() +        if self.sender: +            self.sender.close() + +class sender(asyncore.dispatcher): +    def __init__(self, receiver, remoteaddr, remoteport): +        asyncore.dispatcher.__init__(self) +        self.receiver = receiver +        receiver.sender = self +        self.create_socket(socket.AF_INET, socket.SOCK_STREAM) +        self.connect((remoteaddr, remoteport)) + +    def handle_connect(self): +        pass + +    def handle_read(self): +        read = self.recv(4096) +        # print '<-- %04i'%len(read) +        self.receiver.to_remote_buffer += read + +    def writable(self): +        return (len(self.receiver.from_remote_buffer) > 0) + +    def handle_write(self): +        sent = self.send(self.receiver.from_remote_buffer) +        # print '--> %04i'%sent +        self.receiver.from_remote_buffer = self.receiver.from_remote_buffer[sent:] + +    def handle_close(self): +        self.close() +        self.receiver.close()
\ No newline at end of file | 
