#!/usr/bin/python3
"""Loopback-only graphical installer for RepoGoon.

This file intentionally uses only the Python standard library so it can bootstrap
RepoGoon on a machine where Node.js and RepoGoon are not installed yet.
"""

from __future__ import annotations

import argparse
import base64
import gzip
import json
import os
import platform
import re
import secrets
import shutil
import subprocess
import sys
import tempfile
import threading
import time
import urllib.request
import webbrowser
from http import HTTPStatus
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from pathlib import Path
from typing import Any
from urllib.parse import parse_qs, urlencode, urlsplit


REPO_URL = "https://repogoon.org/git/repogoon-org/repogoon.git"
RELEASE_API = "https://repogoon.org/api/repogoon-org/repogoon/releases"
CONTAINER_IMAGE = "burningpho3nix/repogoon:latest"
COPR_PROJECT = "burningpho3nix/private-projects"
RPM_FAMILY = {"rhel", "centos", "rocky", "almalinux", "alma", "fedora", "ol"}
INSTALL_ROOT = Path(os.environ.get("REPOGOON_INSTALL_ROOT", "/opt/repogoon"))
STATE_LOCK = threading.Lock()
STATE: dict[str, Any] = {
    "phase": "idle",
    "method": None,
    "message": "Ready",
    "logs": [],
    "error": None,
    "installed": False,
    "configured": False,
    "result": None,
}
INSTALL_CONTEXT: dict[str, str] | None = None
# Keep this fallback synchronized with installer/index.html:
# gzip -n -9 -c installer/index.html | base64 -w0
EMBEDDED_INSTALLER_HTML = """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"""


def parse_os_release(path: Path = Path("/etc/os-release")) -> dict[str, str]:
    values: dict[str, str] = {}
    try:
        for raw_line in path.read_text(encoding="utf-8").splitlines():
            line = raw_line.strip()
            if not line or line.startswith("#") or "=" not in line:
                continue
            key, value = line.split("=", 1)
            values[key] = value.strip().strip('"').strip("'")
    except OSError:
        pass
    return values


def detect_system() -> dict[str, Any]:
    release = parse_os_release()
    distro_id = release.get("ID", "unknown").lower()
    family = {distro_id, *release.get("ID_LIKE", "").lower().split()}
    rpm_compatible = bool(family & RPM_FAMILY)
    engines = [name for name in ("docker", "podman") if shutil.which(name)]
    package_manager = next(
        (name for name in ("dnf5", "dnf", "apt-get", "zypper", "pacman") if shutil.which(name)),
        None,
    )
    installable_engines = list(engines)
    if package_manager and "podman" not in installable_engines:
        installable_engines.append("podman")
    return {
        "id": distro_id,
        "name": release.get("PRETTY_NAME", platform.system()),
        "version": release.get("VERSION_ID", ""),
        "family": sorted(family),
        "architecture": platform.machine(),
        "rpmCompatible": rpm_compatible,
        "containerEngines": engines,
        "installableContainerEngines": installable_engines,
        "packageManager": package_manager,
        "root": os.geteuid() == 0,
        "recommendedMethod": "rpm" if rpm_compatible else ("oci" if engines else "source"),
    }


def install_package(package: str) -> None:
    manager = detect_system()["packageManager"]
    if manager in {"dnf", "dnf5"}:
        run([manager, "-y", "install", package])
    elif manager == "apt-get":
        run([manager, "update"])
        run([manager, "-y", "install", package])
    elif manager == "zypper":
        run([manager, "--non-interactive", "install", package])
    elif manager == "pacman":
        run([manager, "--noconfirm", "-S", "--needed", package])
    else:
        raise RuntimeError(f"No supported package manager can install {package}")


def ensure_container_engine(engine: str) -> str:
    executable = shutil.which(engine)
    if executable:
        return executable
    if engine != "podman":
        raise RuntimeError("Docker is not installed; install it first or choose Podman")
    log("Podman is not installed; installing it with the system package manager")
    install_package("podman")
    executable = shutil.which("podman")
    if not executable:
        raise RuntimeError("Podman installation completed but its executable was not found")
    return executable


def update_state(**values: Any) -> None:
    with STATE_LOCK:
        STATE.update(values)


def log(message: str) -> None:
    clean = re.sub(r"[\r\n]+", " ", str(message)).strip()
    with STATE_LOCK:
        STATE["message"] = clean
        STATE["logs"].append(clean)
        STATE["logs"] = STATE["logs"][-300:]


def snapshot() -> dict[str, Any]:
    with STATE_LOCK:
        return json.loads(json.dumps(STATE))


def run(command: list[str], *, cwd: Path | None = None, display: str | None = None) -> str:
    log(display or "$ " + " ".join(command))
    process = subprocess.Popen(
        command,
        cwd=str(cwd) if cwd else None,
        text=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT,
        env={**os.environ, "LC_ALL": "C.UTF-8"},
    )
    output: list[str] = []
    assert process.stdout is not None
    for line in process.stdout:
        output.append(line)
        log(line.rstrip())
    code = process.wait()
    if code != 0:
        raise RuntimeError(f"Command failed with exit code {code}: {display or command[0]}")
    return "".join(output)


def run_input(
    command: list[str], input_data: str, *, cwd: Path | None = None, display: str
) -> str:
    log(display)
    result = subprocess.run(
        command,
        cwd=str(cwd) if cwd else None,
        input=input_data,
        text=True,
        stdout=subprocess.PIPE,
        stderr=subprocess.STDOUT,
        env={**os.environ, "LC_ALL": "C.UTF-8"},
    )
    for line in result.stdout.splitlines():
        log(line)
    if result.returncode != 0:
        raise RuntimeError(f"Command failed with exit code {result.returncode}: {display}")
    return result.stdout


def require_root() -> None:
    if os.geteuid() != 0 and os.environ.get("REPOGOON_INSTALLER_TEST") != "1":
        raise RuntimeError("Installation requires root. Restart with: sudo ./rgoon-web-installer")


def download(url: str, target: Path) -> None:
    log(f"Downloading {url}")
    request = urllib.request.Request(url, headers={"User-Agent": "RepoGoon-Web-Installer/1"})
    with urllib.request.urlopen(request, timeout=60) as response, target.open("wb") as output:
        shutil.copyfileobj(response, output)


def install_rpm() -> dict[str, str]:
    require_root()
    system = detect_system()
    if not system["rpmCompatible"]:
        raise RuntimeError("COPR packages are only offered on Fedora/RHEL-compatible systems")
    dnf = shutil.which("dnf5") or shutil.which("dnf")
    if not dnf:
        raise RuntimeError("dnf is required for the COPR installation method")
    plugin_package = "dnf5-plugins" if Path(dnf).name == "dnf5" else "dnf-plugins-core"
    run([dnf, "-y", "install", plugin_package], display="Installing COPR support")
    run([dnf, "-y", "copr", "enable", COPR_PROJECT], display=f"Enabling COPR {COPR_PROJECT}")
    # The RPM currently targets Node.js 24. Enable NodeSource before dependency solving.
    with tempfile.TemporaryDirectory(prefix="repogoon-node-") as temp_dir:
        setup_script = Path(temp_dir) / "nodesource-setup.sh"
        download("https://rpm.nodesource.com/setup_24.x", setup_script)
        run(["bash", str(setup_script)], display="Enabling the Node.js 24 repository")
    run([dnf, "-y", "install", "repogoon"], display="Installing RepoGoon from COPR")
    return {"method": "rpm", "ctl": "/usr/bin/rgoon-ctl", "location": "/usr/share/repogoon"}


def install_container(
    engine: str, port: int = 3001, *, build_local: bool = False
) -> dict[str, str]:
    require_root()
    if engine not in {"docker", "podman"}:
        raise RuntimeError(f"Unsupported container engine: {engine}")
    executable = ensure_container_engine(engine)
    inspect = subprocess.run([executable, "inspect", "repogoon"], capture_output=True)
    if inspect.returncode == 0:
        raise RuntimeError("A container named 'repogoon' already exists; remove or rename it first")
    image = CONTAINER_IMAGE
    release = "registry latest"
    if build_local:
        if not shutil.which("git"):
            log("git is required for the local image build; installing it now")
            install_package("git")
        release = newest_release_tag()
        image = f"repogoon-local:{release.removeprefix('v')}"
        with tempfile.TemporaryDirectory(prefix="repogoon-container-") as temp_dir:
            source = Path(temp_dir) / "repogoon"
            run(["git", "clone", "--depth", "1", "--branch", release, REPO_URL, str(source)])
            run(
                [executable, "build", "-t", image, "."],
                cwd=source,
                display=f"Building RepoGoon {release} locally",
            )
    else:
        run([executable, "pull", image], display=f"Pulling {image}")
    run(
        [
            executable,
            "run",
            "-d",
            "--name",
            "repogoon",
            "--restart",
            "unless-stopped",
            "-p",
            f"{port}:{port}",
            "-e",
            "REPOGOON_AUTO_INIT=false",
            "-e",
            "REPOGOON_INSECURE_DEV=true",
            "-v",
            "repogoon-config:/etc/repogoon",
            "-v",
            "repogoon-data:/var/lib/repogoon",
            "-v",
            "repogoon-logs:/var/log/repogoon",
            image,
        ],
        display=f"Creating the RepoGoon {engine} container",
    )
    # The entrypoint must create its default config before ctl commands can run.
    for _ in range(30):
        probe = subprocess.run(
            [executable, "exec", "repogoon", "test", "-f", "/etc/repogoon/config.yml"],
            capture_output=True,
        )
        if probe.returncode == 0:
            break
        time.sleep(1)
    else:
        raise RuntimeError("Container started but did not create /etc/repogoon/config.yml")
    return {
        "method": engine,
        "ctl": "rgoon-ctl",
        "engine": executable,
        "location": "repogoon",
        "release": release,
    }


def version_key(tag: str) -> tuple[int, ...]:
    value = tag.removeprefix("refs/tags/").removeprefix("v").replace("^{}", "")
    match = re.match(r"^(\d+(?:\.\d+)+)", value)
    return tuple(int(part) for part in match.group(1).split(".")) if match else ()


def release_tags(*, report: bool = False) -> list[str]:
    if report:
        log("Reading published RepoGoon releases from repogoon.org")
    request = urllib.request.Request(
        RELEASE_API, headers={"User-Agent": "RepoGoon-Web-Installer/1"}
    )
    try:
        with urllib.request.urlopen(request, timeout=20) as response:
            releases = json.load(response)
        tags = [
            str(release.get("tag_name", ""))
            for release in releases
            if isinstance(release, dict)
            and release.get("draft") is not True
            and release.get("prerelease") is not True
        ]
        stable = [
            tag
            for tag in tags
            if version_key(tag) and not re.search(r"[-+](?:alpha|beta|rc)", tag, re.I)
        ]
        if stable:
            return stable
    except Exception as error:
        if report:
            log(f"Release API unavailable ({error}); falling back to Git tags")
    command = ["git", "ls-remote", "--tags", "--refs", REPO_URL]
    if report:
        output = run(command, display="Reading published RepoGoon release tags from repogoon.org")
    else:
        process = subprocess.run(command, capture_output=True, text=True, timeout=30)
        if process.returncode != 0:
            raise RuntimeError(process.stderr.strip() or "Unable to read RepoGoon release tags")
        output = process.stdout
    tags = [line.rsplit("/", 1)[-1] for line in output.splitlines() if "refs/tags/" in line]
    return [tag for tag in tags if version_key(tag) and not re.search(r"[-+](?:alpha|beta|rc)", tag, re.I)]


def newest_release_tag(*, report: bool = True) -> str:
    stable = release_tags(report=report)
    if not stable:
        raise RuntimeError("No stable release tags were found on repogoon.org")
    return max(stable, key=version_key)


def registry_tags() -> list[str]:
    image = "burningpho3nix/repogoon"
    token_url = "https://auth.docker.io/token?" + urlencode(
        {"service": "registry.docker.io", "scope": f"repository:{image}:pull"}
    )
    request = urllib.request.Request(
        token_url, headers={"User-Agent": "RepoGoon-Web-Installer/1"}
    )
    with urllib.request.urlopen(request, timeout=20) as response:
        token = json.load(response).get("token", "")
    if not token:
        raise RuntimeError("Docker registry did not return an access token")
    request = urllib.request.Request(
        f"https://registry-1.docker.io/v2/{image}/tags/list",
        headers={
            "Authorization": f"Bearer {token}",
            "User-Agent": "RepoGoon-Web-Installer/1",
        },
    )
    with urllib.request.urlopen(request, timeout=20) as response:
        return json.load(response).get("tags", []) or []


def discover_versions() -> dict[str, Any]:
    result: dict[str, Any] = {
        "latestRelease": None,
        "latestContainer": None,
        "containerOutdated": False,
        "warning": None,
    }
    try:
        release = newest_release_tag(report=False)
        result["latestRelease"] = release
        containers = [tag for tag in registry_tags() if version_key(tag)]
        if containers:
            container = max(containers, key=version_key)
            result["latestContainer"] = container
            result["containerOutdated"] = version_key(container) < version_key(release)
    except Exception as error:
        result["warning"] = str(error)
    return result


def install_source() -> dict[str, str]:
    require_root()
    manager = detect_system()["packageManager"]
    if manager in {"dnf", "dnf5"}:
        run([manager, "-y", "install", "git", "gcc-c++", "make", "python3", "curl"])
        with tempfile.TemporaryDirectory(prefix="repogoon-node-") as temp_dir:
            script = Path(temp_dir) / "nodesource-setup.sh"
            download("https://rpm.nodesource.com/setup_24.x", script)
            run(["bash", str(script)], display="Enabling the Node.js 24 repository")
        run([manager, "-y", "install", "nodejs"])
    elif manager == "apt-get":
        run([manager, "update"])
        run([manager, "-y", "install", "git", "build-essential", "python3", "curl", "ca-certificates"])
        with tempfile.TemporaryDirectory(prefix="repogoon-node-") as temp_dir:
            script = Path(temp_dir) / "nodesource-setup.sh"
            download("https://deb.nodesource.com/setup_24.x", script)
            run(["bash", str(script)], display="Enabling the Node.js 24 repository")
        run([manager, "-y", "install", "nodejs"])
    elif manager == "zypper":
        run([manager, "--non-interactive", "install", "git", "gcc-c++", "make", "python3", "nodejs24", "npm24"])
    elif manager == "pacman":
        run([manager, "--noconfirm", "-S", "--needed", "git", "base-devel", "python", "nodejs", "npm"])
    else:
        raise RuntimeError("Unsupported package manager for source installation")

    tag = newest_release_tag()
    log(f"Newest stable release: {tag}")
    staging = INSTALL_ROOT.with_name(INSTALL_ROOT.name + ".new")
    if INSTALL_ROOT.exists() or staging.exists():
        raise RuntimeError(f"{INSTALL_ROOT} already exists; move it aside before source installation")
    run(["git", "clone", "--depth", "1", "--branch", tag, REPO_URL, str(staging)])
    run(["npm", "ci"], cwd=staging)
    run(["npm", "run", "build:all"], cwd=staging)
    run(["npm", "prune", "--omit=dev"], cwd=staging)
    staging.rename(INSTALL_ROOT)
    ctl = INSTALL_ROOT / "rgoon-ctl"
    ctl.chmod(0o755)
    local_bin = Path("/usr/local/bin/rgoon-ctl")
    local_bin.parent.mkdir(parents=True, exist_ok=True)
    local_bin.write_text(
        "#!/bin/sh\nexec /opt/repogoon/rgoon-ctl \"$@\"\n",
        encoding="utf-8",
    )
    local_bin.chmod(0o755)
    if subprocess.run(["getent", "group", "repogoon"], capture_output=True).returncode != 0:
        run(["groupadd", "--system", "repogoon"], display="Creating the RepoGoon service group")
    if subprocess.run(["getent", "passwd", "repogoon"], capture_output=True).returncode != 0:
        nologin = shutil.which("nologin") or "/sbin/nologin"
        run(
            [
                "useradd",
                "--system",
                "--gid",
                "repogoon",
                "--home-dir",
                "/var/lib/repogoon",
                "--shell",
                nologin,
                "repogoon",
            ],
            display="Creating the RepoGoon service account",
        )
    for directory in (Path("/var/lib/repogoon"), Path("/var/lib/repogoon/repos"), Path("/var/log/repogoon")):
        directory.mkdir(parents=True, exist_ok=True)
    run(["chown", "-R", "repogoon:repogoon", "/var/lib/repogoon", "/var/log/repogoon"])
    service = Path("/etc/systemd/system/repogoon.service")
    service.write_text(
        """[Unit]
Description=RepoGoon Git hosting
After=network.target

[Service]
Type=simple
User=repogoon
Group=repogoon
WorkingDirectory=/opt/repogoon
Environment=NODE_ENV=production
ExecStart=/usr/bin/node dist/server/index.js
Restart=on-failure
RestartSec=10

NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadOnlyPaths=/opt/repogoon/config.yml
ReadWritePaths=/var/lib/repogoon
ReadWritePaths=/var/log/repogoon
ReadWritePaths=/opt/repogoon/server/db
PrivateTmp=true
StandardOutput=journal
StandardError=journal
SyslogIdentifier=repogoon

[Install]
WantedBy=multi-user.target
""",
        encoding="utf-8",
    )
    run(["systemctl", "daemon-reload"])
    return {"method": "source", "ctl": str(ctl), "location": str(INSTALL_ROOT), "release": tag}


def ctl_argv(
    install: dict[str, str], args: list[str], *, interactive: bool = False
) -> list[str]:
    if install["method"] in {"docker", "podman"}:
        command = [install["engine"], "exec"]
        if interactive:
            command.append("-i")
        return [*command, "repogoon", "env", "REPOGOON_SECRET_SERVICE_MODE=none", "rgoon-ctl", *args]
    return [install["ctl"], *args]


def ctl_command(install: dict[str, str], args: list[str], *, display: str | None = None) -> str:
    return run(ctl_argv(install, args), display=display)


def ctl_input(
    install: dict[str, str], args: list[str], input_data: str, *, display: str
) -> str:
    return run_input(ctl_argv(install, args, interactive=True), input_data, display=display)


def secret_setup_metadata(install: dict[str, str]) -> dict[str, Any]:
    capabilities = json.loads(
        ctl_command(
            install,
            ["secrets", "capabilities", "--json"],
            display="Inspecting secret storage capabilities",
        )
    )
    fields = json.loads(
        ctl_command(
            install,
            ["secrets", "setup-fields", "--json"],
            display="Loading canonical setup secret fields",
        )
    )
    preview = json.loads(
        ctl_command(
            install,
            ["secrets", "list", "--json"],
            display="Preparing redacted secret migration preview",
        )
    )
    return {"capabilities": capabilities, "fields": fields, "preview": preview}


def public_secret_setup_metadata(install: dict[str, str]) -> dict[str, Any]:
    metadata = secret_setup_metadata(install)
    preview = metadata["preview"]
    return {
        "capabilities": metadata["capabilities"],
        "preview": {
            "plaintext": sum(item.get("source") == "plaintext" for item in preview),
            "references": sum(item.get("source") == "reference" for item in preview),
            "missing": sum(item.get("source") == "missing" for item in preview),
        },
    }


CONFIG_FIELDS: dict[str, str] = {
    "homedir": "str", "repositories.storagePath": "str", "ssh.enabled": "bool",
    "ssh.bindHost": "str", "ssh.hostKeyPath": "str", "server.port": "int",
    "server.host": "str", "server.domain": "str", "server.trustProxy": "auto",
    "server.jsonBodyLimit": "str", "repositories.defaultBranch": "str",
    "git.taggerName": "str", "git.taggerEmail": "str", "logging.level": "str",
    "logging.file": "str", "rateLimit.enabled": "bool", "rateLimit.max": "int",
    "rateLimit.windowMs": "int", "storage.s3.enabled": "bool", "storage.s3.endpoint": "str",
    "storage.s3.region": "str", "storage.s3.bucket": "str", "storage.s3.accessKeyId": "str",
    "storage.s3.secretAccessKey": "str", "storage.s3.publicUrl": "str",
    "storage.s3.forcePathStyle": "bool", "ssl.enabled": "bool", "ssl.mode": "str",
    "ssl.letsencrypt.email": "str", "ssl.letsencrypt.autoRenew": "bool",
    "ssl.letsencrypt.renewSchedule": "str", "ssl.acme.email": "str",
    "ssl.acme.caServer": "str", "ssl.acme.autoRenew": "bool",
    "ssl.acme.renewSchedule": "str", "ssl.custom.certPath": "str",
    "ssl.custom.keyPath": "str", "ssl.custom.caPath": "str", "nginx.enabled": "bool",
    "nginx.configPath": "str", "nginx.autoReload": "bool", "cors.credentials": "bool",
    "session.maxAge": "int", "session.httpOnly": "bool", "auth.local.enabled": "bool",
    "auth.local.allowRegistration": "bool", "auth.local.emailVerification": "bool",
    "smtp.enabled": "bool", "smtp.host": "str", "smtp.port": "int", "smtp.secure": "bool",
    "smtp.user": "str", "smtp.pass": "str", "smtp.from": "str", "auth.ldap.enabled": "bool",
    "auth.ldap.url": "str", "auth.ldap.bindDN": "str", "auth.ldap.bindPassword": "str",
    "auth.ldap.searchBase": "str", "auth.ldap.searchFilter": "str",
    "auth.ldap.usernameAttribute": "str", "auth.ldap.emailAttribute": "str",
    "auth.ldap.displayNameAttribute": "str", "auth.ldap.tlsOptions.rejectUnauthorized": "bool",
    "auth.ldap.groupSearchBase": "str", "auth.ldap.groupSearchFilter": "str",
    "auth.ldap.requiredGroup": "str", "auth.ldap.adminGroup": "str",
    "auth.oidc.enabled": "bool", "auth.oidc.providerName": "str", "auth.oidc.issuerUrl": "str",
    "auth.oidc.clientId": "str", "auth.oidc.clientSecret": "str",
    "auth.oidc.callbackUrl": "str", "auth.oidc.scopes": "array",
    "auth.oidc.claims.username": "str", "auth.oidc.claims.email": "str",
    "auth.oidc.claims.displayName": "str", "auth.oidc.autoCreateUsers": "bool",
    "auth.oidc.defaultRole": "str", "auth.oidc.adminClaim": "str",
    "auth.oidc.adminClaimValue": "str", "database.type": "str",
    "database.sqlite.path": "str", "database.postgresql.host": "str",
    "database.postgresql.port": "int", "database.postgresql.database": "str",
    "database.postgresql.username": "str", "database.postgresql.password": "str",
    "database.postgresql.ssl": "bool", "database.mysql.host": "str",
    "database.mysql.port": "int", "database.mysql.database": "str",
    "database.mysql.username": "str", "database.mysql.password": "str",
    "database.mysql.ssl": "bool", "database.oracle.host": "str", "database.oracle.port": "int",
    "database.oracle.serviceName": "str", "database.oracle.username": "str",
    "database.oracle.password": "str", "database.convex.selfHosted": "bool",
    "database.convex.selfHostedUrl": "str", "database.convex.selfHostedAdminKey": "str",
    "database.convex.deploymentUrl": "str", "database.convex.adminKey": "str",
}


def normalize_config(data: dict[str, Any], method: str) -> dict[str, Any]:
    if not isinstance(data, dict):
        raise ValueError("config must be an object")
    unknown = sorted(set(data) - set(CONFIG_FIELDS))
    if unknown:
        raise ValueError("Unknown configuration fields: " + ", ".join(unknown))
    result: dict[str, Any] = {}
    for key, value in data.items():
        kind = CONFIG_FIELDS[key]
        if kind == "bool" and not isinstance(value, bool):
            raise ValueError(f"{key} must be true or false")
        if kind == "int":
            if isinstance(value, bool) or not isinstance(value, int):
                raise ValueError(f"{key} must be an integer")
        if kind == "array" and not isinstance(value, list):
            raise ValueError(f"{key} must be a list")
        if kind == "str" and not isinstance(value, str):
            raise ValueError(f"{key} must be text")
        # rgoon-ctl deliberately rejects empty scalar values. Optional fields
        # left blank in the web form should retain their packaged defaults.
        if kind == "str" and not value.strip():
            continue
        result[key] = value
    if not result.get("storage.s3.enabled", False):
        result = {
            key: value
            for key, value in result.items()
            if not key.startswith("storage.s3.") or key == "storage.s3.enabled"
        }
    port = int(result.get("server.port", 3001))
    if not 1 <= port <= 65535:
        raise ValueError("server.port must be between 1 and 65535")
    if method in {"oci", "docker", "podman"}:
        result["server.host"] = "0.0.0.0"
        result["homedir"] = "/var/lib/repogoon"
    domain = str(result.get("server.domain", "")).strip()
    ssl = bool(result.get("ssl.enabled", False))
    result["cors.origin"] = (
        f"{'https' if ssl else 'http'}://{domain}"
        if domain
        else "http://localhost:5173"
    )
    result["session.secure"] = ssl
    return result


def normalize_acme_server(value: str) -> str:
    server = value.strip().rstrip("/")
    if not server:
        return ""
    if "://" not in server:
        server = f"https://{server}"
    if server.endswith("/directory"):
        return server
    return f"{server}/acme/acme/directory"


def open_web_firewall() -> None:
    firewall = shutil.which("firewall-cmd")
    if not firewall:
        return
    active = subprocess.run(["systemctl", "is-active", "--quiet", "firewalld"])
    if active.returncode != 0:
        return
    run([firewall, "--permanent", "--add-service=http"], display="Opening HTTP in firewalld")
    run([firewall, "--permanent", "--add-service=https"], display="Opening HTTPS in firewalld")
    run([firewall, "--reload"], display="Reloading firewalld")


def ensure_certbot() -> None:
    if shutil.which("certbot"):
        return
    system = detect_system()
    manager = system.get("packageManager")
    distro_id = str(system.get("id", ""))
    if manager not in {"dnf", "dnf5"} or distro_id == "fedora":
        install_package("certbot")
        return

    # Certbot is provided by EPEL on Enterprise Linux. Enable the companion
    # builder repository first where its dependencies are published.
    if distro_id in {"rocky", "almalinux", "alma", "centos"}:
        try:
            if manager == "dnf5":
                run(
                    [manager, "config-manager", "setopt", "crb.enabled=1"],
                    display="Enabling the CRB repository",
                )
            else:
                run(
                    [manager, "config-manager", "--set-enabled", "crb"],
                    display="Enabling the CRB repository",
                )
        except RuntimeError:
            log("CRB could not be enabled automatically; continuing with EPEL")
    elif distro_id == "rhel" and shutil.which("subscription-manager"):
        major = str(system.get("version", "")).split(".", 1)[0]
        architecture = str(system.get("architecture", platform.machine()))
        if major.isdigit():
            run(
                [
                    "subscription-manager",
                    "repos",
                    "--enable",
                    f"codeready-builder-for-rhel-{major}-{architecture}-rpms",
                ],
                display="Enabling the CodeReady Builder repository",
            )

    try:
        run([manager, "-y", "install", "epel-release"], display="Enabling EPEL")
    except RuntimeError:
        major = str(system.get("version", "")).split(".", 1)[0]
        if not major.isdigit():
            raise RuntimeError("Could not determine the Enterprise Linux version for EPEL")
        epel_release = (
            f"https://dl.fedoraproject.org/pub/epel/epel-release-latest-{major}.noarch.rpm"
        )
        run([manager, "-y", "install", epel_release], display="Enabling EPEL")
    install_package("certbot")


def obtain_certificate(config: dict[str, Any]) -> None:
    domain = str(config.get("server.domain", "")).strip()
    mode = str(config.get("ssl.mode", "none"))
    if not domain:
        raise RuntimeError("Certificate issuance requires a public domain")
    if not config.get("ssl.enabled"):
        raise RuntimeError("Certificate issuance requires public HTTPS to be enabled")
    if mode not in {"letsencrypt", "acme"}:
        raise RuntimeError("Choose Let's Encrypt or Custom ACME as the certificate mode")
    ensure_certbot()
    email_key = f"ssl.{mode}.email"
    email = str(config.get(email_key, "")).strip()
    if not email:
        raise RuntimeError("A certificate contact email is required")
    open_web_firewall()
    args = [
        "certbot",
        "certonly",
        "--standalone",
        "-d",
        domain,
        "--email",
        email,
        "--agree-tos",
        "--non-interactive",
    ]
    if mode == "acme":
        server = normalize_acme_server(str(config.get("ssl.acme.caServer", "")))
        if server:
            args.extend(["--server", server])
    run(args, display=f"Obtaining a certificate for {domain}")


def install_renewal_job() -> None:
    target = Path("/etc/cron.daily/repogoon-cert-renew")
    target.write_text(
        "#!/bin/sh\ncertbot renew --quiet --post-hook 'systemctl reload nginx'\n",
        encoding="utf-8",
    )
    target.chmod(0o755)
    log(f"Installed automatic certificate renewal job at {target}")


def configure_install(install: dict[str, str], payload: dict[str, Any]) -> dict[str, str]:
    config = normalize_config(payload.get("config", {}), install["method"])
    metadata = secret_setup_metadata(install)
    selected_store = payload.get("secretStore")
    if selected_store not in {"file", "systemd"}:
        raise ValueError("Choose a secret storage backend")
    capability = metadata["capabilities"].get(selected_store, {})
    if capability.get("available") is not True:
        reason = capability.get("reason") or "selected secret storage is unavailable"
        raise ValueError(str(reason))
    preview = metadata["preview"]
    if any(item.get("source") == "plaintext" for item in preview):
        if payload.get("confirmSecretMigration") is not True:
            raise ValueError("Confirm the redacted existing-secret migration preview")
    preview_sources = {
        item.get("name"): item.get("source")
        for item in preview
        if isinstance(item.get("name"), str)
    }
    if preview_sources.get("session-secret", "missing") == "missing":
        config["session.secret"] = secrets.token_hex(32)
    if preview_sources.get("internal-secret", "missing") == "missing":
        config["server.internalSecret"] = secrets.token_hex(32)
    secret_values: dict[str, str] = {}
    for field in metadata["fields"]:
        path = field.get("path")
        logical_name = field.get("name")
        if path in config and isinstance(logical_name, str):
            raw = str(config.pop(path)).encode("utf-8")
            secret_values[logical_name] = base64.urlsafe_b64encode(raw).decode("ascii").rstrip("=")
    if not secret_values and all(item.get("source") == "missing" for item in preview):
        raise ValueError("No setup secret values were supplied")
    actions = payload.get("actions", {})
    if not isinstance(actions, dict):
        raise ValueError("actions must be an object")
    certificate_action = (
        actions.get("obtainCertificate") is True
        or actions.get("configureRenewal") is True
    )
    if certificate_action:
        domain = str(config.get("server.domain", "")).strip()
        mode = str(config.get("ssl.mode", "none"))
        if not domain:
            raise ValueError("Enter a public domain before requesting a certificate")
        if not config.get("ssl.enabled"):
            raise ValueError("Enable public HTTPS before requesting a certificate")
        if mode not in {"letsencrypt", "acme"}:
            raise ValueError("Choose Let's Encrypt or Custom ACME as the certificate mode")
        email = str(config.get(f"ssl.{mode}.email", "")).strip()
        if not email:
            raise ValueError("Enter a certificate contact email")
    admin_email = str(payload.get("adminEmail", "")).strip()
    submitted_admin_password = str(payload.get("adminPassword", ""))
    admin_password = submitted_admin_password or secrets.token_urlsafe(18)
    if not re.match(r"^[^@\s]+@[^@\s]+$", admin_email):
        raise ValueError("A valid administrator email address is required")
    if len(admin_password) < 12:
        raise ValueError("Administrator password must be at least 12 characters")
    recovery_source = str(payload.get("recoverySourceInstance", "")).strip()
    if not re.fullmatch(r"[A-Za-z0-9][A-Za-z0-9._-]{0,127}", recovery_source):
        raise ValueError("Enter a stable recovery source instance identifier")
    recovery_public_raw = payload.get("recoveryRecipientPublicJwk")
    if not isinstance(recovery_public_raw, str):
        raise ValueError("Enter the offline X25519 recovery public JWK")
    try:
        recovery_public = json.loads(recovery_public_raw)
    except json.JSONDecodeError as error:
        raise ValueError("The recovery public JWK is invalid") from error
    if (
        not isinstance(recovery_public, dict)
        or set(recovery_public) != {"kty", "crv", "x", "kid"}
        or recovery_public.get("kty") != "OKP"
        or recovery_public.get("crv") != "X25519"
        or not isinstance(recovery_public.get("x"), str)
        or not re.fullmatch(r"[A-Za-z0-9_-]{43}", recovery_public["x"])
        or not isinstance(recovery_public.get("kid"), str)
        or not recovery_public["kid"].startswith("recovery-")
    ):
        raise ValueError("The recovery public JWK is invalid")
    log("Writing RepoGoon configuration")
    for key, value in config.items():
        if isinstance(value, (dict, list)):
            ctl_command(install, ["set", "--json", key, json.dumps(value)], display=f"Setting {key}")
        else:
            ctl_command(install, ["set", key, str(value).lower() if isinstance(value, bool) else str(value)], display=f"Setting {key}")
    provision_args = ["secrets", "provision", selected_store, "--yes", "--json"]
    if all(item.get("source") == "missing" for item in preview):
        provision_args.append("--bootstrap")
    directory = str(payload.get("secretFileDirectory", "")).strip()
    if selected_store == "file" and directory:
        provision_args.extend(["--directory", directory])
    if secret_values:
        try:
            ctl_input(
                install,
                provision_args,
                json.dumps({"values": secret_values}, separators=(",", ":")),
                display="Provisioning setup secrets transactionally",
            )
        finally:
            secret_values.clear()
    else:
        migrate_args = ["secrets", "store", selected_store, "--yes", "--json"]
        if selected_store == "file" and directory:
            migrate_args.extend(["--directory", directory])
        ctl_command(
            install,
            migrate_args,
            display="Migrating existing secrets transactionally",
        )
    recovery_args = [
        "secrets", "recovery", "init", "--source-instance", recovery_source,
        "--yes", "--json",
    ]
    if all(item.get("source") == "missing" for item in preview):
        recovery_args.append("--bootstrap")
    ctl_input(
        install,
        recovery_args,
        json.dumps(recovery_public, separators=(",", ":")),
        display="Pinning the offline recovery public key",
    )
    try:
        ctl_command(install, ["test-db"], display="Testing the database connection")
    except RuntimeError:
        log("Database connection test failed; initialization will still be attempted")
    ctl_command(install, ["init-db"], display="Initializing the database schema")
    if install["method"] in {"docker", "podman"}:
        create = [
            install["engine"], "exec", "-i", "repogoon", "node", "--import", "tsx",
            "server/db/create-admin.ts", admin_email, "--password-stdin",
        ]
        run_input(create, admin_password, display="Creating the administrator account")
        run([install["engine"], "restart", "repogoon"], display="Restarting RepoGoon")
    else:
        location = Path(install["location"])
        run_input(
            ["node", "--import", "tsx", "server/db/create-admin.ts", admin_email, "--password-stdin"],
            admin_password,
            cwd=location,
            display="Creating the administrator account",
        )
        if subprocess.run(["getent", "passwd", "repogoon"], capture_output=True).returncode == 0:
            run(
                ["chown", "-R", "repogoon:repogoon", "/var/lib/repogoon", "/var/log/repogoon"],
                display="Applying RepoGoon runtime ownership",
            )
        config_path = (
            Path("/etc/repogoon/config.yml")
            if install["method"] == "rpm"
            else location / "config.yml"
        )
        if config_path.exists():
            if install["method"] == "source":
                run(["chown", "root:repogoon", str(config_path)])
            config_path.chmod(0o640)
        if actions.get("obtainCertificate") is True:
            obtain_certificate(config)
        if actions.get("configureRenewal") is True:
            ensure_certbot()
            install_renewal_job()
        if config.get("nginx.enabled") and config.get("server.domain"):
            if not shutil.which("nginx"):
                install_package("nginx")
            open_web_firewall()
            if shutil.which("setsebool"):
                run(
                    ["setsebool", "-P", "httpd_can_network_connect", "1"],
                    display="Allowing nginx upstream connections in SELinux",
                )
            ctl_command(install, ["nginx-config"], display="Generating the nginx configuration")
            ctl_command(install, ["nginx-reload"], display="Reloading nginx")
        run(["systemctl", "enable", "--now", "repogoon"], display="Enabling and starting RepoGoon")
    port = str(config.get("server.port", 3001))
    domain = str(config.get("server.domain", ""))
    url = f"{'https' if config.get('ssl.enabled') else 'http'}://{domain}" if domain else f"http://localhost:{port}"
    result = {"adminEmail": admin_email, "url": url}
    if not submitted_admin_password:
        result["adminPassword"] = admin_password
    return result


def install_worker(method: str, payload: dict[str, Any]) -> None:
    global INSTALL_CONTEXT
    update_state(phase="installing", method=method, error=None, logs=[], result=None)
    try:
        if method == "rpm":
            install = install_rpm()
        elif method == "oci":
            engine = str(payload.get("containerEngine", ""))
            if engine not in {"docker", "podman"}:
                raise ValueError("Choose Docker or Podman for the OCI installation")
            install = install_container(
                engine,
                3001,
                build_local=payload.get("buildLocal") is True,
            )
        elif method == "source":
            install = install_source()
        else:
            raise ValueError("Unknown installation method")
        INSTALL_CONTEXT = install
        update_state(
            installed=True,
            phase="installed",
            message="RepoGoon is installed; continue with instance configuration",
        )
    except Exception as error:  # The message is deliberately surfaced in the local UI.
        log(str(error))
        update_state(phase="failed", error=str(error))


def configure_worker(payload: dict[str, Any]) -> None:
    update_state(phase="configuring", error=None, result=None)
    try:
        if INSTALL_CONTEXT is None:
            raise RuntimeError("RepoGoon must be installed before it can be configured")
        result = configure_install(INSTALL_CONTEXT, payload)
        update_state(configured=True, phase="complete", message="RepoGoon is ready", result=result)
    except Exception as error:  # The message is deliberately surfaced in the local UI.
        log(str(error))
        update_state(phase="failed", error=str(error))


HTML_CANDIDATES = (
    Path(__file__).resolve().with_name("installer").joinpath("index.html"),
    Path("/usr/share/repogoon/installer/index.html"),
)


def installer_html() -> str:
    path = next((candidate for candidate in HTML_CANDIDATES if candidate.is_file()), None)
    if path is not None:
        return path.read_text(encoding="utf-8")
    return gzip.decompress(base64.b64decode(EMBEDDED_INSTALLER_HTML)).decode("utf-8")


class Handler(BaseHTTPRequestHandler):
    token = ""

    def log_message(self, fmt: str, *args: Any) -> None:
        return

    def send_json(self, value: Any, status: int = 200) -> None:
        body = json.dumps(value).encode("utf-8")
        self.send_response(status)
        self.send_header("Content-Type", "application/json; charset=utf-8")
        self.send_header("Content-Length", str(len(body)))
        self.send_header("Cache-Control", "no-store")
        self.send_header("X-Content-Type-Options", "nosniff")
        self.end_headers()
        self.wfile.write(body)

    def authorized(self) -> bool:
        return secrets.compare_digest(self.headers.get("X-Installer-Token", ""), self.token)

    def do_GET(self) -> None:
        parsed = urlsplit(self.path)
        path = parsed.path
        if path == "/":
            page_token = parse_qs(parsed.query).get("token", [""])[0]
            if not secrets.compare_digest(page_token, self.token):
                self.send_error(HTTPStatus.FORBIDDEN, "Use the private installer URL printed in the terminal")
                return
            try:
                html = installer_html().replace("__INSTALLER_TOKEN__", self.token)
            except OSError:
                self.send_error(HTTPStatus.INTERNAL_SERVER_ERROR, "Installer UI is missing")
                return
            body = html.encode("utf-8")
            self.send_response(200)
            self.send_header("Content-Type", "text/html; charset=utf-8")
            self.send_header("Content-Length", str(len(body)))
            self.send_header("Cache-Control", "no-store")
            self.send_header("Content-Security-Policy", "default-src 'self'; style-src 'unsafe-inline'; script-src 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; frame-ancestors 'none'")
            self.send_header("Referrer-Policy", "no-referrer")
            self.end_headers()
            self.wfile.write(body)
            return
        if not self.authorized():
            self.send_json({"error": "Unauthorized"}, 403)
            return
        if path == "/api/system":
            self.send_json(detect_system())
        elif path == "/api/versions":
            self.send_json(discover_versions())
        elif path == "/api/status":
            self.send_json(snapshot())
        elif path == "/api/secret-storage":
            if not snapshot()["installed"] or INSTALL_CONTEXT is None:
                self.send_json({"error": "Install RepoGoon before selecting secret storage"}, 409)
                return
            try:
                self.send_json(public_secret_setup_metadata(INSTALL_CONTEXT))
            except (RuntimeError, ValueError, json.JSONDecodeError) as error:
                self.send_json({"error": str(error)}, 500)
        else:
            self.send_json({"error": "Not found"}, 404)

    def do_POST(self) -> None:
        if not self.authorized():
            self.send_json({"error": "Unauthorized"}, 403)
            return
        if self.path not in {"/api/install", "/api/configure"}:
            self.send_json({"error": "Not found"}, 404)
            return
        current = snapshot()
        if current["phase"] in {"installing", "configuring"}:
            self.send_json({"error": "An installation is already running"}, 409)
            return
        try:
            length = int(self.headers.get("Content-Length", "0"))
            if length <= 0 or length > 256_000:
                raise ValueError("Invalid request size")
            payload = json.loads(self.rfile.read(length))
            if not isinstance(payload, dict):
                raise ValueError("Request body must be an object")
            if self.path == "/api/install":
                if current["installed"]:
                    self.send_json({"error": "RepoGoon is already installed in this session"}, 409)
                    return
                method = str(payload.get("method", ""))
                if method not in {"rpm", "oci", "source"}:
                    raise ValueError("Invalid installation method")
                thread = threading.Thread(
                    target=install_worker,
                    args=(method, payload),
                    daemon=True,
                )
            else:
                if not current["installed"] or INSTALL_CONTEXT is None:
                    self.send_json({"error": "Install RepoGoon before configuring it"}, 409)
                    return
                normalize_config(payload.get("config", {}), INSTALL_CONTEXT["method"])
                thread = threading.Thread(target=configure_worker, args=(payload,), daemon=True)
            thread.start()
            self.send_json({"started": True}, 202)
        except (ValueError, json.JSONDecodeError) as error:
            self.send_json({"error": str(error)}, 400)


def main(argv: list[str] | None = None) -> int:
    parser = argparse.ArgumentParser(description="Start the RepoGoon graphical installer")
    parser.add_argument("--host", default="127.0.0.1", help="listen address (default: loopback)")
    parser.add_argument("--port", type=int, default=8799, help="listen port (default: 8799)")
    parser.add_argument("--no-browser", action="store_true", help="do not open the browser")
    args = parser.parse_args(argv)
    if args.host not in {"127.0.0.1", "::1", "localhost"}:
        print("Refusing a non-loopback listen address; use SSH port forwarding for remote hosts.", file=sys.stderr)
        return 2
    Handler.token = secrets.token_urlsafe(32)
    server = ThreadingHTTPServer((args.host, args.port), Handler)
    url = f"http://{args.host}:{server.server_port}/?token={Handler.token}"
    print(f"RepoGoon installer: {url}")
    print("Keep this terminal open until installation is complete. Press Ctrl+C to stop.")
    if not args.no_browser:
        threading.Timer(0.5, lambda: webbrowser.open(url)).start()
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass
    finally:
        server.server_close()
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
