#!/usr/bin/env python3
"""Minimal HTTP server for the POC. Serves attacker.html / victim.html and
prints any POST /log bodies so the victim renderer's observations show up in
the run output without needing DevTools."""

import http.server
import socketserver
import sys

PORT = 8080


class Handler(http.server.SimpleHTTPRequestHandler):
    def do_POST(self):  # noqa: N802
        if self.path == '/log':
            n = int(self.headers.get('Content-Length', '0'))
            body = self.rfile.read(n).decode('utf-8', 'replace')
            sys.stderr.write('SERVER-LOG %s\n' % body)
            sys.stderr.flush()
            self.send_response(204)
            self.end_headers()
            return
        self.send_error(404)

    def log_message(self, fmt, *args):
        sys.stderr.write('http %s %s\n' % (self.address_string(), fmt % args))


class TS(socketserver.ThreadingMixIn, http.server.HTTPServer):
    allow_reuse_address = True
    daemon_threads = True


if __name__ == '__main__':
    httpd = TS(('127.0.0.1', PORT), Handler)
    sys.stderr.write('serving on 127.0.0.1:%d\n' % PORT)
    sys.stderr.flush()
    httpd.serve_forever()
