chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
"""
|
||||
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()
|
||||
Reference in New Issue
Block a user