#!/usr/bin/env python3
"""Minimal proxy backend for the NGINX Rift lab.

/internal and /spray in nginx.conf proxy_pass to this server. A configurable
response delay (X-Delay header, default 5s) holds the upstream connection open
so POSTed spray bodies linger in the nginx request pool during the overflow.
Bound to localhost inside the container only.
"""
import http.server
import socketserver
import time


class BackendHandler(http.server.BaseHTTPRequestHandler):
    def _respond(self):
        delay = float(self.headers.get("X-Delay", "5"))
        time.sleep(delay)
        self.send_response(200)
        self.send_header("Content-Type", "text/plain")
        self.end_headers()
        self.wfile.write(b"backend ok\n")

    def do_GET(self):
        self._respond()

    def do_POST(self):
        length = int(self.headers.get("Content-Length", 0))
        self.rfile.read(length)
        self._respond()

    def log_message(self, fmt, *args):
        pass


socketserver.TCPServer.allow_reuse_address = True
with socketserver.TCPServer(("127.0.0.1", 19323), BackendHandler) as httpd:
    print("backend on 127.0.0.1:19323", flush=True)
    httpd.serve_forever()
