Files
box/bin/netvm-docs-server.py
T

53 lines
1.5 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""
NetVM Docs HTTP Server (bl)
Serves markdown documentation for agents via HTTPS (tailnet).
- Central repo: ~/Projects/NetVM/
- Serves: *.md, docs/*.png
- Read-only, no auth (tailnet is the auth boundary)
GOLDEN PATH: container -> VM (34.139.37.135) -> bl (100.123.153.75) -> this server
Usage:
python3 netvm-docs-server.py [--port 8080]
Agents fetch via:
curl http://0.0.0.0:8080/ACCOUNTS.md
"""
import http.server
import socketserver
import os
import argparse
from pathlib import Path
class DocsHandler(http.server.SimpleHTTPRequestHandler):
def __init__(self, *args, **kwargs):
# Serve from NetVM repo root
self.base_dir = Path.home() / "Projects" / "NetVM"
super().__init__(*args, directory=str(self.base_dir), **kwargs)
def log_message(self, format, *args):
# Quiet logging
pass
def end_headers(self):
# Allow CORS for browser agents
self.send_header('Access-Control-Allow-Origin', '*')
super().end_headers()
def main():
p = argparse.ArgumentParser()
p.add_argument('--port', type=int, default=8080)
args = p.parse_args()
# Only bind to tailnet interface (not public)
# 100.123.153.75 is bl's tailnet IP
with socketserver.TCPServer(("0.0.0.0", args.port), DocsHandler) as httpd:
print(f"Serving NetVM docs on http://0.0.0.0:{args.port}/")
print(f"Directory: {Path.home()}/Projects/NetVM/")
httpd.serve_forever()
if __name__ == '__main__':
main()