new ideas /spend 6h
This commit is contained in:
parent
7fe6ad2cd4
commit
5df44c91d9
91
webserver/black_proxy.py
Normal file
91
webserver/black_proxy.py
Normal file
|
@ -0,0 +1,91 @@
|
|||
import sys
|
||||
import socket
|
||||
import threading
|
||||
|
||||
def server_loop(local_host, local_port, remote_host, remote_port, recieve_first):
|
||||
server = server.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
server.bind((local_host, local_port))
|
||||
print "Listening on %s:%d" % (local_host, local_port)
|
||||
server.listen(5)
|
||||
|
||||
while True:
|
||||
client_socket, addr = server.accept()
|
||||
print "Recieving data from %s:%d" % (addr[0], addr[1])
|
||||
|
||||
proxy_thread = threading.Thread(target=proxy_handler, args=(client_socket, remote_host, remote_port, recieve_first))
|
||||
proxy_thread.start()
|
||||
|
||||
|
||||
def proxy_handler(client_socket, remote_host, remote_port, recieve_first):
|
||||
remote_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
remote_socket.connect((remote_host, remote_port))
|
||||
|
||||
if recieve_first:
|
||||
remote_buffer = recieve_from(remote_socket)
|
||||
print(remote_buffer)
|
||||
|
||||
remote_buffer = response_handler(remote_buffer)
|
||||
if len(remote_buffer):
|
||||
print "Sending buffer"
|
||||
len(remote_buffer)
|
||||
client_socket.send(remote_buffer)
|
||||
while True:
|
||||
local_buffer = recieve_from(client_socket)
|
||||
if len(local_buffer):
|
||||
print(local_buffer)
|
||||
# je comprends plus a partir d ci
|
||||
local_buffer = response_handler(local_buffer)
|
||||
remote_socket.send(local_buffer)
|
||||
print "sent to remote"
|
||||
|
||||
remote_buffer = recieve_from(remote_socket)
|
||||
|
||||
if len(remote_buffer):
|
||||
print "printing remote buffer"
|
||||
print(remote_buffer)
|
||||
|
||||
remote_buffer = response_handler(remote_buffer)
|
||||
client_socket.send(remote_buffer)
|
||||
print "sent to localhost"
|
||||
|
||||
def recieve_from(connection):
|
||||
buffer = ""
|
||||
connection.settimeout(2)
|
||||
try:
|
||||
while True:
|
||||
data = connection.recv(4096)
|
||||
if not data:
|
||||
break
|
||||
buffer += data
|
||||
except:
|
||||
pass
|
||||
|
||||
return buffer
|
||||
|
||||
def request_handler(buffer):
|
||||
return buffer
|
||||
|
||||
def response_handler(buffer):
|
||||
return buffer
|
||||
|
||||
def main():
|
||||
local_host = sys.argv[1]
|
||||
local_port = int(sys.argv[2])
|
||||
|
||||
remote_host = sys.argv[3]
|
||||
remote_port = int(sys.argv[4])
|
||||
|
||||
recieve_first = sys.argv[5]
|
||||
|
||||
if recieve_first == True:
|
||||
recieve_first = True
|
||||
else:
|
||||
recieve_first = False
|
||||
|
||||
server_loop(local_host, local_port, remote_host, remote_port, recieve_first)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
main()
|
59
webserver/proxy_server.py
Normal file
59
webserver/proxy_server.py
Normal file
|
@ -0,0 +1,59 @@
|
|||
import socket
|
||||
|
||||
HOST = ""
|
||||
PORT = 8888
|
||||
BUFF = 1024
|
||||
|
||||
class Forward():
|
||||
def __init__(self):
|
||||
self.forward = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.forward.bind(('', 9999))
|
||||
self.forward.listen(5)
|
||||
self.clientsock, self.clientaddr = self.forward.accept()
|
||||
|
||||
def forwarding(self):
|
||||
stuff = self.recv(handle_client)
|
||||
self.clientsock.send(self.stuff)
|
||||
|
||||
class Server():
|
||||
#opening sockets
|
||||
def __init__(self, HOST, PORT):
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
self.s.bind((HOST, PORT))
|
||||
print "Serving HTTP on port %s ..." % PORT
|
||||
self.s.listen(5)
|
||||
print "Wainting for connection... listening on port", PORT
|
||||
self.c, self.addr = self.s.accept()
|
||||
|
||||
|
||||
#handling client
|
||||
def handle_client(self):
|
||||
|
||||
self.c.send("Please enter your name and press enter: \n")
|
||||
name = self.c.recv(BUFF)
|
||||
print "Client name is : ", name
|
||||
print repr(name) + "recieved :" + repr(name)
|
||||
while True:
|
||||
self.c.send("\nNow each word you typed will be echo back to you.\n")
|
||||
data = self.c.recv(BUFF)
|
||||
print "received data:", data
|
||||
self.c.send("You typed %s \n" % data)
|
||||
|
||||
self.c.close()
|
||||
print self.addr, "- closed connection"
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
s = Server("", 8888)
|
||||
p = Forward("", 9999)
|
||||
|
||||
s.handle_client()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue