Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os,socket, sys
- import thread
- _port = 0 #The port the script should listen on.
- _bufferSize = 4096 #max buffer size.
- _maxCon = 5 #max incoming connections
- try:
- _port = int(raw_input("Insert the port number :> "))
- except KeyboardInterrupt:
- print "\n Exiting Script"
- sys.exit(0)
- print "You've selected this config: \n\t port: %s \n\t buffer: %s" %(str(_port), str(_bufferSize))
- print "END CONFIGURATION"
- def start():
- try:
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #initiate a new socket
- sock.bind(('', _port))
- sock.listen(_maxCon)
- print "Socket initialized correctly \n Binding successful \n Server started successfully"
- except Exception, e:
- print "unable to initiate socket"
- print("exiting ...")
- sys.exit(2)
- while 1:
- try:
- conn, addr = sock.accept() #accept connection from client browser
- print "serving: %s" %(str(addr))
- data = conn.recv(_bufferSize) #receive client data
- thread.start_new_thread(conn_string, (conn, data, addr)) #starting a new thread
- except KeyboardInterrupt:
- sock.close()
- sys.exit(1)
- sock.close()
- def conn_string(conn, data, addr):
- #client browser request processing...
- try:
- print "Connecting.."
- first_line = data.split('\n')[0]
- url = first_line.split(' ')[1]
- print url
- http_pos = url.find("://")
- temp = ''
- if http_pos == -1 :
- temp = url
- else:
- temp = url[(http_pos+3):] #get the whole url
- print temp
- print "calcs.."
- port_pos = temp.find(":") #getting the post position
- webserver_pos = temp.find("/") #getting the web server position
- if webserver_pos == -1:
- webserver_pos = len(temp)
- webserver = ""
- port = -1
- if (port_pos == -1 or webserver_pos < port_pos): #default port
- print ("default port")
- port = 80
- webserver = temp[:webserver_pos]
- else:
- print ("new port")
- port = int((temp[(port_pos+1):])[:webserver_pos - port_pos - 1])
- webserver = temp[:port_pos]
- print "calling proxy"
- proxy_server(webserver, port, conn, addr, data)
- except Exception, e:
- print "fuck"
- pass
- def proxy_server(webserver, port, conn, addr, data):
- print "in proxy_server"
- try:
- print "starting socket"
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- print "connecting socket"
- sock.connect((webserver, port))
- print "sending data"
- sock.send(data)
- while 1:
- print "receiving data"
- reply = sock.recv(_bufferSize)
- if(len(reply) > 0):
- print "tada"
- conn.send(reply)
- dar = float(len(reply))
- dar = float(dar / 1024)
- dar = "%.3s" %(str(dar))
- dar = "%s KB" %(dar)
- print "[*] Request Done: %s => %s <= " %(str(addr[0]), str(dar))
- else:
- #connection break
- print "fail... :("
- break
- sock.close()
- conn.close()
- except socket.error, (value, message):
- sock.close()
- conn.close()
- sys.exit(1)
- start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement