Spaces:
Paused
Paused
| """ | |
| 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() | |