summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTyler Baker <tyler.baker@linaro.org>2014-04-18 15:17:17 -0700
committerTyler Baker <tyler.baker@linaro.org>2014-04-18 15:17:17 -0700
commit89e5f2fe6d1c7663b4e748f3287395af28b8d556 (patch)
tree9167e571d9b0b720296db112b80b81dfd2ae16fc
parent43d160078d792ceb5c3b370b6056f4f49a83e4c9 (diff)
add proxy and test scriptHEADmaster
-rw-r--r--lavaproxy/proxy.py39
-rw-r--r--lavaproxy/socketserver.py7
-rw-r--r--lavaproxy/test.py25
3 files changed, 69 insertions, 2 deletions
diff --git a/lavaproxy/proxy.py b/lavaproxy/proxy.py
new file mode 100644
index 0000000..7b89bf5
--- /dev/null
+++ b/lavaproxy/proxy.py
@@ -0,0 +1,39 @@
+import socket
+import sys
+import thread
+import time
+
+
+class PortForwarder:
+ def __init__(self, host, listen_port, forward_port):
+ self.settings = int(listen_port), host, int(forward_port)
+
+ def run(self):
+ thread.start_new_thread(self.server, self.settings)
+ # wait for <ctrl-c>
+ while True:
+ time.sleep(60)
+
+ def server(self, *settings):
+ try:
+ dock_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ dock_socket.bind(('', settings[0]))
+ 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[1], settings[2]))
+ thread.start_new_thread(self.forward, (client_socket, server_socket))
+ thread.start_new_thread(self.forward, (server_socket, client_socket))
+ finally:
+ thread.start_new_thread(self.server, settings)
+
+ def forward(self, 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) \ No newline at end of file
diff --git a/lavaproxy/socketserver.py b/lavaproxy/socketserver.py
index b490cac..38ce61d 100644
--- a/lavaproxy/socketserver.py
+++ b/lavaproxy/socketserver.py
@@ -22,6 +22,7 @@ import SocketServer
import logging
import socket
from proxyexample import PortForwarder
+from simpleproxyexample import SimpleForwarder
import random
import threading
@@ -36,8 +37,10 @@ class PortForwardThread(threading.Thread):
def run(self):
logging.info("Starting Port Forward Thread: %s" % self.from_port)
logging.info("Current Thread List: %s" % threading.enumerate())
- forwarder = PortForwarder('', self.from_port, (self.to_host, self.to_port))
- forwarder.main_loop()
+ forwarder = SimpleForwarder(self.to_host, self.from_port, self.to_port)
+ forwarder.listen()
+ #forwarder = PortForwarder('', self.from_port, (self.to_host, self.to_port))
+ #forwarder.main_loop()
class ListenerServer(object):
servers = []
diff --git a/lavaproxy/test.py b/lavaproxy/test.py
new file mode 100644
index 0000000..fc36e59
--- /dev/null
+++ b/lavaproxy/test.py
@@ -0,0 +1,25 @@
+from proxy import PortForwarder
+import logging
+import threading
+
+
+class PortForwardThread(threading.Thread):
+ def __init__(self, from_port, to_host, to_port):
+ super(PortForwardThread, self).__init__()
+ self.from_port = from_port
+ self.to_host = to_host
+ self.to_port = to_port
+
+ def run(self):
+ logging.info("Starting Port Forward Thread: %s" % self.from_port)
+ logging.info("Current Thread List: %s" % threading.enumerate())
+ forwarder = PortForwarder(self.to_host, self.from_port, self.to_port)
+ forwarder.run()
+
+if __name__ == "__main__":
+ thread1 = PortForwardThread(8080, '192.168.1.1', 22)
+ thread1.start()
+ print 'Thread 1 Launched!'
+ thread2 = PortForwardThread(8081, '192.168.1.1', 80)
+ thread2.start()
+ print 'Thread 2 Launched!' \ No newline at end of file