78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
"""
|
|
Presenton Version Server (test/dev stub)
|
|
|
|
This simulates the remote version-check endpoint that the Electron app polls.
|
|
In production, replace UPDATE_SERVER_URL in the Electron app with your hosted URL.
|
|
|
|
Usage:
|
|
python test_server.py [--port 8765]
|
|
|
|
Endpoint:
|
|
GET /versions -> JSON with latest version and download info
|
|
"""
|
|
|
|
import json
|
|
import argparse
|
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
|
from urllib.parse import urlparse
|
|
|
|
VERSIONS = {
|
|
"latest": "0.7.0",
|
|
"versions": [
|
|
"0.5.0",
|
|
"0.6.0",
|
|
"0.6.1-beta",
|
|
"0.7.0",
|
|
],
|
|
"download_url": "https://github.com/presenton/presenton/releases/latest",
|
|
"release_notes": "Bug fixes, performance improvements, and new AI model support.",
|
|
}
|
|
|
|
|
|
class VersionHandler(BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
parsed = urlparse(self.path)
|
|
|
|
if parsed.path == "/versions":
|
|
body = json.dumps(VERSIONS, indent=2).encode()
|
|
self.send_response(200)
|
|
self.send_header("Content-Type", "application/json")
|
|
self.send_header("Content-Length", str(len(body)))
|
|
self.send_header("Access-Control-Allow-Origin", "*")
|
|
self.end_headers()
|
|
self.wfile.write(body)
|
|
else:
|
|
self.send_response(404)
|
|
self.end_headers()
|
|
self.wfile.write(b'{"error": "Not found"}')
|
|
|
|
def do_OPTIONS(self):
|
|
self.send_response(200)
|
|
self.send_header("Access-Control-Allow-Origin", "*")
|
|
self.send_header("Access-Control-Allow-Methods", "GET, OPTIONS")
|
|
self.end_headers()
|
|
|
|
def log_message(self, format, *args):
|
|
print(f"[VersionServer] {self.address_string()} - {format % args}", flush=True)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Presenton version check server")
|
|
parser.add_argument("--port", type=int, default=8765, help="Port to listen on")
|
|
parser.add_argument("--host", type=str, default="0.0.0.0", help="Host to bind to")
|
|
args = parser.parse_args()
|
|
|
|
server = HTTPServer((args.host, args.port), VersionHandler)
|
|
print(f"Presenton version server running at http://{args.host}:{args.port}", flush=True)
|
|
print(f" GET /versions -> version information", flush=True)
|
|
print(f" Current 'latest' set to: {VERSIONS['latest']}", flush=True)
|
|
print("Press Ctrl+C to stop.", flush=True)
|
|
|
|
try:
|
|
server.serve_forever()
|
|
except KeyboardInterrupt:
|
|
print("\nServer stopped.", flush=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|