Files
the-nexus/l402_server.py
Alexander Whitestone 465599accb
Some checks failed
CI / test (pull_request) Failing after 43s
Review Approval Gate / verify-review (pull_request) Failing after 5s
CI / validate (pull_request) Failing after 33s
fix: port 8080 conflict between L402 server and preview (#1415)
- L402 server: port configurable via L402_PORT env var (default 8080)
- app.js: L402 URL reads ?l402_port= from query string
- mempalace example: changed port from 8080 to 7772

Fixes #1415.
2026-04-13 21:44:03 -04:00

39 lines
1.3 KiB
Python

#!/usr/bin/env python3
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import secrets
import os
class L402Handler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/api/cost-estimate':
# Simulate L402 Challenge
macaroon = secrets.token_hex(16)
invoice = "lnbc1..." # Mock invoice
self.send_response(402)
self.send_header('WWW-Authenticate', f'L402 macaroon="{macaroon}", invoice="{invoice}"')
self.send_header('Content-type', 'application/json')
self.end_headers()
response = {
"error": "Payment Required",
"message": "Please pay the invoice to access cost estimation."
}
self.wfile.write(json.dumps(response).encode())
else:
self.send_response(404)
self.end_headers()
def run(server_class=HTTPServer, handler_class=L402Handler, port=None):
if port is None:
port = int(os.environ.get('L402_PORT', 8080))
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print(f"Starting L402 Skeleton Server on port {port}...")
httpd.serve_forever()
if __name__ == "__main__":
run()