Curly fries
Not my Solution.
import socket
from socketserver import ThreadingTCPServer, StreamRequestHandler
import time
from email.utils import formatdate
from pathlib import Path
import re
import os
port = 3000
def client_str(req):
ip = req.client_address[0]
port = req.client_address[1]
return f"{ip}:{port}"
class MyTCPServer(ThreadingTCPServer):
def server_bind(self):
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 10)
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 3)
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 5)
self.socket.bind(self.server_address)
header_template = """HTTP/1.1 200 OK\r
Date: {date}\r
Content-Length: {fake_content_length}\r
CoNtEnT-LeNgTh: {real_content_length}\r
Content-Type: text/html; charset="utf-8"\r
\r
"""
class TcpHandler(StreamRequestHandler):
def on_disconnect(self):
print(f"[*] Disconnected {client_str(self)}")
def handle(self):
try:
while True:
line = self.rfile.readline().strip().decode()
if len(line) == 0:
self.on_disconnect()
return
print(f"[*] {line} {client_str(self)}")
# Discard the rest of the request
while len(self.rfile.readline().strip()) != 0:
pass
date = formatdate(timeval=None, localtime=False, usegmt=True)
header = header_template.format(
date=date, fake_content_length=1023, real_content_length=16
)
self.wfile.write(header.encode())
self.wfile.write(b"A" * 16)
except ConnectionError as e:
print(f"[-] {e} {client_str(self)}")
self.on_disconnect()
return
if __name__ == "__main__":
tcp = MyTCPServer(("0.0.0.0", port), TcpHandler)
print(f"[*] Listening on port {port} ...")
tcp.serve_forever()pyth
Last updated