#!/usr/bin/env python3 """Static server for the alias-web bundle, with HTTP Range support for the 2.4 GB weight file. python3 serve.py [port] # default 8924; then open http://127.0.0.1: in Chrome or Edge Binds to 127.0.0.1 only. Responses are marked no-store so that a changed module is never served stale; CORS is open so that a local browser extension can fetch the model from this server. """ import http.server, os, re, socketserver, sys ROOT = os.path.dirname(os.path.abspath(__file__)) class Handler(http.server.SimpleHTTPRequestHandler): def __init__(self, *a, **kw): super().__init__(*a, directory=ROOT, **kw) def send_head(self): self._remaining = None path = self.translate_path(self.path) rng = self.headers.get("Range") if not rng or not os.path.isfile(path): return super().send_head() size = os.path.getsize(path) m = re.match(r"bytes=(\d*)-(\d*)$", rng.strip()) if not m or not (m.group(1) or m.group(2)): self.send_error(416) return None if m.group(1): start, end = int(m.group(1)), min(int(m.group(2)) if m.group(2) else size - 1, size - 1) else: # suffix form: the last N bytes start, end = max(0, size - int(m.group(2))), size - 1 if start > end: self.send_error(416) return None f = open(path, "rb") f.seek(start) self._remaining = end - start + 1 self.send_response(206) self.send_header("Content-Type", self.guess_type(path)) self.send_header("Content-Range", f"bytes {start}-{end}/{size}") self.send_header("Content-Length", str(self._remaining)) self.end_headers() return f def copyfile(self, source, outputfile): if self._remaining is None: return super().copyfile(source, outputfile) left = self._remaining while left > 0: chunk = source.read(min(1 << 20, left)) if not chunk: break outputfile.write(chunk) left -= len(chunk) def end_headers(self): self.send_header("Accept-Ranges", "bytes") self.send_header("Cache-Control", "no-store") self.send_header("Access-Control-Allow-Origin", "*") super().end_headers() socketserver.TCPServer.allow_reuse_address = True if __name__ == "__main__": port = int(sys.argv[1]) if len(sys.argv) > 1 else 8924 with socketserver.ThreadingTCPServer(("127.0.0.1", port), Handler) as s: print(f"serving {ROOT} on http://127.0.0.1:{port}") s.serve_forever()