summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Hart <matthew.hart@linaro.org>2014-04-18 18:06:28 +0100
committerMatt Hart <matthew.hart@linaro.org>2014-04-18 18:06:28 +0100
commit70a167c29838056e20c9a0efa441d2539b17227f (patch)
treece738f6a9a2e05682dfe364bce8eac5f114794e6
parentffb5edd271230606407c5ebe4c708cd637ea7436 (diff)
Latest push
-rw-r--r--lavaproxy/proxyexample.py13
-rw-r--r--lavaproxy/socketserver.py13
2 files changed, 19 insertions, 7 deletions
diff --git a/lavaproxy/proxyexample.py b/lavaproxy/proxyexample.py
index e11a4a0..029901a 100644
--- a/lavaproxy/proxyexample.py
+++ b/lavaproxy/proxyexample.py
@@ -14,7 +14,7 @@ import sys
# But when buffer get to high or delay go too down, you can broke things
buffer_size = 4096
delay = 0.0001
-forward_to = ('smtp.zaz.ufsk.br', 25)
+
class Forward:
def __init__(self):
@@ -28,15 +28,16 @@ class Forward:
print e
return False
-class TheServer:
+class PortForwarder:
input_list = []
channel = {}
- def __init__(self, host, port):
+ def __init__(self, host, port, forward_to):
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.server.bind((host, port))
self.server.listen(200)
+ self.forward_to = forward_to
def main_loop(self):
self.input_list.append(self.server)
@@ -56,7 +57,7 @@ class TheServer:
self.on_recv()
def on_accept(self):
- forward = Forward().start(forward_to[0], forward_to[1])
+ forward = Forward().start(self.forward_to[0], self.forward_to[1])
clientsock, clientaddr = self.server.accept()
if forward:
print clientaddr, "has connected"
@@ -86,11 +87,11 @@ class TheServer:
def on_recv(self):
data = self.data
# here we can parse and/or modify the data before send forward
- print data
+ #print data
self.channel[self.s].send(data)
if __name__ == '__main__':
- server = TheServer('', 9090)
+ server = PortForwarder('', 41001, ('192.168.1.1', 22))
try:
server.main_loop()
except KeyboardInterrupt:
diff --git a/lavaproxy/socketserver.py b/lavaproxy/socketserver.py
index a678207..0dd2f44 100644
--- a/lavaproxy/socketserver.py
+++ b/lavaproxy/socketserver.py
@@ -21,6 +21,8 @@
import SocketServer
import logging
import socket
+from proxyexample import PortForwarder
+import random
class ListenerServer(object):
servers = []
@@ -29,6 +31,7 @@ class ListenerServer(object):
logging.getLogger().name = "ManagementServer"
logging.getLogger().setLevel(config["logging_level"])
self.management_server = TCPServer((config["hostname"], config["mgmt-port"]), TCPRequestHandler)
+ self.management_server.config = config
# for portnum in range(config["port-start"], config["port-end"]):
# self.servers.append(TCPServer((config["hostname"], portnum), TCPRequestHandler))
# logging.info("listening on %s:%s" % (config["hostname"], portnum))
@@ -55,7 +58,15 @@ class TCPRequestHandler(SocketServer.BaseRequestHandler):
logging.debug("Unable to resolve: %s error: %s" % (ip, e))
request_host = ip
logging.info("Received a request from %s: '%s'" % (request_host, data))
- self.request.sendall("ack\n")
+ ####### setup the port forward here
+ from_port = random.randint(self.server.config["port-start"], self.server.config["port-end"])
+ to_port = 22
+ to_host = "192.168.1.1"
+ logging.debug("Starting port forwarding from %s to %s:%s" % (from_port,to_host,to_port))
+ self.request.sendall("ack %s\n" % from_port)
+ forwarder = PortForwarder('', from_port, (to_host, to_port))
+ forwarder.main_loop()
+
except Exception as e:
logging.debug(e)
self.request.sendall("nack\n")