← back to Cc Command Center

server.py

31 lines

#!/usr/bin/env python3
"""Zero-dependency static server for the Claude Code Command Center viewer.
Basic-auth gated (admin / DW2024!), serves ./public on a free OS-assigned port
(or PORT env). Prints the URL on startup."""
import base64, functools, http.server, os, socketserver

ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "public")
USER, PW = os.environ.get("CC_USER", "admin"), os.environ.get("CC_PASS", "DW2024!")
TOKEN = base64.b64encode(f"{USER}:{PW}".encode()).decode()
PORT = int(os.environ.get("PORT", "0"))

class Handler(http.server.SimpleHTTPRequestHandler):
    def do_GET(self):
        if self.headers.get("Authorization") != f"Basic {TOKEN}":
            self.send_response(401)
            self.send_header("WWW-Authenticate", 'Basic realm="Command Center"')
            self.end_headers(); self.wfile.write(b"auth required"); return
        return super().do_GET()
    def log_message(self, *a): pass

class TCP(socketserver.ThreadingTCPServer):
    allow_reuse_address = True

if __name__ == "__main__":
    Handler.directory = ROOT
    h = functools.partial(Handler, directory=ROOT)
    with TCP(("127.0.0.1", PORT), h) as httpd:
        port = httpd.server_address[1]
        print(f"Command Center → http://127.0.0.1:{port}  (auth: {USER} / {PW})")
        httpd.serve_forever()