Spaces:
Running
Running
| #!/usr/bin/env python3 | |
| """Hardened static file server for the SZL Cosmos Space. | |
| Serves the vendored 3D hologram (same directory, same port as | |
| `python -m http.server 7860`) but adds security response headers on every | |
| response: | |
| - Content-Security-Policy (sane static policy, tuned to this page's assets) | |
| - Strict-Transport-Security (max-age=31536000; includeSubDomains) | |
| - X-Content-Type-Options (nosniff) | |
| - Referrer-Policy (strict-origin-when-cross-origin) | |
| Additive / non-breaking. The CSP permits every resource this Space actually | |
| uses (inline scripts incl. the ES-module importmap, inline styles, vendored | |
| Three.js + postprocessing modules, the data: favicon, the local | |
| data/org_nodes.json fetch, and the live /healthz + /lambda + /khipu/ledger + | |
| verify fetches to a11oy / killinchu / a-11-oy.com), so the hologram and the live | |
| HUD keep working. Everything else is 'self' — zero CDN. | |
| """ | |
| import functools | |
| import json | |
| import urllib.parse | |
| from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer | |
| from szl_source_attestation import build_attestation | |
| PORT = 7860 | |
| DIRECTORY = "/app" | |
| SPACE_ID = "SZLHOLDINGS/cosmos" | |
| SOURCE_OBSERVATION = { | |
| "repository": None, | |
| "commit": None, | |
| "path": None, | |
| "relation": "no-verifiable-direct-source-observed", | |
| "state": "UNKNOWN", | |
| "evidence_url": None, | |
| } | |
| CONTENT_SECURITY_POLICY = ( | |
| "default-src 'self'; " | |
| "base-uri 'self'; " | |
| "object-src 'none'; " | |
| "script-src 'self' 'unsafe-inline'; " | |
| "style-src 'self' 'unsafe-inline'; " | |
| "img-src 'self' data: blob:; " | |
| "font-src 'self'; " | |
| "connect-src 'self' https://szlholdings-a11oy.hf.space " | |
| "https://szlholdings-killinchu.hf.space https://a-11-oy.com; " | |
| "frame-ancestors 'self' https://huggingface.co https://*.hf.space https://*.huggingface.co" | |
| ) | |
| class HardenedHandler(SimpleHTTPRequestHandler): | |
| def _send_json(self, payload): | |
| body = json.dumps(payload, ensure_ascii=False, separators=(",", ":")).encode("utf-8") | |
| self.send_response(200) | |
| self.send_header("Content-Type", "application/json; charset=utf-8") | |
| self.send_header("Content-Length", str(len(body))) | |
| self.send_header("Cache-Control", "no-store") | |
| self.send_header("X-SZL-Transport-State", str(payload["transport_state"])) | |
| self.send_header("X-SZL-Evidence-State", str(payload["evidence_state"])) | |
| self.send_header("X-SZL-Verification-State", str(payload["verification_state"])) | |
| self.end_headers() | |
| self.wfile.write(body) | |
| def do_GET(self): | |
| parsed = urllib.parse.urlsplit(self.path) | |
| if parsed.path == "/.well-known/szl-source.json": | |
| force = urllib.parse.parse_qs(parsed.query).get("refresh") == ["1"] | |
| self._send_json( | |
| build_attestation( | |
| SPACE_ID, | |
| SOURCE_OBSERVATION, | |
| "UNKNOWN_SOURCE_RELATION", | |
| force=force, | |
| ) | |
| ) | |
| return | |
| super().do_GET() | |
| def end_headers(self): | |
| self.send_header("Content-Security-Policy", CONTENT_SECURITY_POLICY) | |
| self.send_header( | |
| "Strict-Transport-Security", "max-age=31536000; includeSubDomains" | |
| ) | |
| self.send_header("X-Content-Type-Options", "nosniff") | |
| self.send_header("Referrer-Policy", "strict-origin-when-cross-origin") | |
| super().end_headers() | |
| if __name__ == "__main__": | |
| handler = functools.partial(HardenedHandler, directory=DIRECTORY) | |
| httpd = ThreadingHTTPServer(("0.0.0.0", PORT), handler) | |
| print(f"Serving hardened static site from {DIRECTORY} on 0.0.0.0:{PORT}", flush=True) | |
| try: | |
| httpd.serve_forever() | |
| except KeyboardInterrupt: | |
| httpd.server_close() | |