#!/usr/bin/env python3
"""Update-Server fuer die Mangor-Pruefbuch-App (nur Python-Standardbibliothek).

Serviert version.json, mangor.apk und mangor-windows.zip per HTTP —
mehr braucht der Updater in der App nicht. Gleiches Muster wie der
Decken-&-Waende-Update-Server auf demselben Host (Port 8471).

Einrichtung (laeuft bereits auf dem Hetzner-Server):

    /opt/mangor/                  Ordner mit diesem Skript + Dateien
    mangor-update.service         systemd-Einheit, Port 8472
    ufw allow 8472/tcp

Neue Version veroeffentlichen: auf dem Windows-Rechner

    .\deploy_update.ps1 -ApiKey "sk-ant-..."

Das Skript baut APK und Windows-ZIP, berechnet die Pruefsummen, schreibt
version.json und laedt alles per pscp hoch. Der Dienst hier muss dafuer
nicht angefasst werden — er liefert einfach die neuen Dateien aus.
"""

import argparse
import http.server
import mimetypes
import os

mimetypes.add_type("application/vnd.android.package-archive", ".apk")
mimetypes.add_type("application/zip", ".zip")
mimetypes.add_type("application/json", ".json")


class Handler(http.server.SimpleHTTPRequestHandler):
    def end_headers(self):
        # Immer frisch ausliefern — sonst sieht die App eine alte version.json.
        self.send_header("Cache-Control", "no-store")
        super().end_headers()

    def log_message(self, fmt, *args):
        print(f"{self.address_string()} — {fmt % args}", flush=True)


def main():
    parser = argparse.ArgumentParser(description="Mangor Update-Server")
    parser.add_argument("--port", type=int, default=8472)
    parser.add_argument(
        "--dir",
        default=os.path.dirname(os.path.abspath(__file__)),
        help="Ordner mit version.json/apk/zip (Standard: Skript-Ordner)",
    )
    args = parser.parse_args()

    os.chdir(args.dir)
    server = http.server.ThreadingHTTPServer(("0.0.0.0", args.port), Handler)
    print(f"Mangor-Update-Server laeuft auf Port {args.port}, Ordner: {args.dir}")
    print("Erwartete Dateien: version.json, mangor.apk, mangor-windows.zip")
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        print("\nBeendet.")


if __name__ == "__main__":
    main()
