Skip to content

Instantly share code, notes, and snippets.

@mmmulani
Created November 3, 2019 18:49
Show Gist options
  • Save mmmulani/21152ea8614fc616bd4146b0579cdb6f to your computer and use it in GitHub Desktop.
Save mmmulani/21152ea8614fc616bd4146b0579cdb6f to your computer and use it in GitHub Desktop.
import time, threading, socket, SocketServer, BaseHTTPServer, SimpleHTTPServer
class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
header = 'X-Forwarded-For'
ip_address = self.headers[header]
if header is not None:
reversed_dns = socket.gethostbyaddr(ip_address)
print 'Serving for %s (%s)' % (ip_address, reversed_dns[0])
return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
# Create ONE socket.
addr = ('', 12384)
sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(addr)
sock.listen(5)
# Launch 100 listener threads.
class Thread(threading.Thread):
def __init__(self, i):
threading.Thread.__init__(self)
self.i = i
self.daemon = True
self.start()
def run(self):
httpd = BaseHTTPServer.HTTPServer(addr, Handler, False)
# Prevent the HTTP server from re-binding every handler.
# https://stackoverflow.com/questions/46210672/
httpd.socket = sock
httpd.server_bind = self.server_close = lambda self: None
httpd.serve_forever()
[Thread(i) for i in range(20)]
time.sleep(9e9)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment