""" mock-license-server — Standalone HTTP server that validates licenses. Replaces api.keygen.sh for the HarshItPDF license verification flow. """ import os import json import logging from http.server import HTTPServer, BaseHTTPRequestHandler PORT = int(os.environ.get("LICENCE_SERVER_PORT", "7871")) logger = logging.getLogger("license-server") VALID_RESPONSE = { "meta": {"valid": True}, "data": { "type": "license", "id": "mock-license-001", "attributes": { "name": "HarshItPDF Enterprise License", "key": "harshitpdf-unlocked-0000-0000-0000-000000000001", "status": "ACTIVE", "expiry": None, "metadata": { "isEnterprise": True, "isPremium": True, "maxUsers": 999, "plan": "enterprise", "tier": "enterprise", }, "maxMachines": 999, }, }, } class LicenseHandler(BaseHTTPRequestHandler): def do_POST(self): body = self.rfile.read(int(self.headers.get("Content-Length", 0))) logger.info(f"License check from {self.client_address}: {self.path}") self.send_response(200) self.send_header("Content-Type", "application/json") self.send_header("Connection", "close") self.end_headers() self.wfile.write(json.dumps(VALID_RESPONSE).encode()) def do_GET(self): self.send_response(200) self.send_header("Content-Type", "application/json") self.send_header("Connection", "close") self.end_headers() self.wfile.write( json.dumps({"ok": True, "service": "mock-license-server", "version": "1.0"}).encode() ) def log_message(self, fmt, *args): logger.info(fmt % args) def start_license_server(): server = HTTPServer(("0.0.0.0", PORT), LicenseHandler) logger.info(f"Mock license server listening on port {PORT}") server.serve_forever() if __name__ == "__main__": logging.basicConfig(level=logging.INFO, format="[license-server] %(message)s") start_license_server()