#!/bin/bash
set -e

# =============================================================================
# Linux Patch Manager — Post-install script
# =============================================================================

case "$1" in
    configure)
        # Create service user if not exists
        if ! id patch-manager &>/dev/null; then
            useradd --system --no-create-home --shell /usr/sbin/nologin \
                --comment "Linux Patch Manager service account" patch-manager
        fi

        # Create required directories
        mkdir -p /etc/patch-manager/ca /etc/patch-manager/certs \
                 /etc/patch-manager/jwt /etc/patch-manager/tls \
                 /var/log/patch-manager /opt/patch-manager \
                 /var/backups/patch-manager

        chown -R patch-manager:patch-manager \
            /etc/patch-manager /var/log/patch-manager \
            /opt/patch-manager /usr/share/patch-manager/frontend

        chmod 750 /etc/patch-manager/ca /etc/patch-manager/jwt
        chmod 700 /var/backups/patch-manager

        # Generate JWT signing key if not present
        if [[ ! -f /etc/patch-manager/jwt/signing.pem ]]; then
            openssl genpkey -algorithm ed25519 -out /etc/patch-manager/jwt/signing.pem 2>/dev/null
            openssl pkey -in /etc/patch-manager/jwt/signing.pem -pubout -out /etc/patch-manager/jwt/verify.pem 2>/dev/null
            chown patch-manager:patch-manager /etc/patch-manager/jwt/signing.pem /etc/patch-manager/jwt/verify.pem
            chmod 600 /etc/patch-manager/jwt/signing.pem
            chmod 644 /etc/patch-manager/jwt/verify.pem
        fi

        # Write default config if not present
        if [[ ! -f /etc/patch-manager/config.toml ]]; then
            cp /usr/share/patch-manager/config.example.toml /etc/patch-manager/config.toml
            chown patch-manager:patch-manager /etc/patch-manager/config.toml
            chmod 640 /etc/patch-manager/config.toml
        fi

        # Install backup cron if not present
        if ! crontab -l 2>/dev/null | grep -qF "backup.sh"; then
            (crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/backup.sh >> /var/log/patch-manager/backup.log 2>&1") | crontab -
        fi

        # Reload systemd
        systemctl daemon-reload

        echo ""
        echo "Linux Patch Manager installed successfully!"
        echo "==========================================="
        echo ""
        echo "Next steps:"
        echo "  1. Install and configure PostgreSQL:"
        echo "       apt install postgresql-16"
        echo "  2. Create the database:"
        echo "       sudo -u postgres createdb -O patch_manager patch_manager"
        echo "  3. Edit /etc/patch-manager/config.toml with your database URL"
        echo "  4. Enable and start services:"
        echo "       systemctl enable --now patch-manager.target"
        echo "  5. Access the web UI at https://localhost"
        echo "     Default admin credentials are set via the seed migration."
        echo ""
        echo "IMPORTANT: Change the default admin password immediately after first login!"
        echo ""
        ;;

    abort-upgrade|abort-remove|abort-deconfigure)
        ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        ;;
esac

exit 0
