#!/usr/bin/env bash
#
# Package install — dnf ile paket kurulumları
#
# Master plan: docs/architecture.md §1 Servis Topolojisi
# Phase 0 hafta 8-13 lab-notes'larından doğrulanacak

packages_install_base() {
  log_info "→ BaseOS/AppStream paketleri"
  run_or_die "base paket kurulumu" dnf install -y \
    httpd mod_ssl \
    mariadb-server \
    redis \
    fail2ban-server fail2ban-firewalld \
    firewalld \
    quota xfsprogs \
    policycoreutils-python-utils \
    setools-console \
    openssh-server \
    cronie \
    chrony \
    jq inotify-tools htop
}

packages_install_php_versions() {
  log_info "→ PHP multi-version (Remi)"
  # Master plan: PHP 7.4, 8.0, 8.1, 8.2, 8.3 paralel
  # NOT: PHP 7.4 EOL (Kasım 2022) — sadece legacy WP siteler için, güvenlik riski olarak işaretle

  local php_versions=(74 80 81 82 83)
  local extensions=(php-fpm php-mysqlnd php-cli php-opcache php-gd php-curl
                    php-mbstring php-zip php-xml php-intl php-bcmath php-imagick)

  for ver in "${php_versions[@]}"; do
    local pkgs=()
    for ext in "${extensions[@]}"; do
      pkgs+=("php${ver}-${ext}")
    done
    run_or_die "PHP ${ver} kurulumu" dnf install -y "${pkgs[@]}"

    # ondemand pool için kullanıcılar php-fpm.d'ye eklenecek (Epic 4 + 6)
    # sysapi onx-fpm-pool-create script'i bu işi yapacak
  done

  # Composer (panel için lazım — Epic 8 panel deployment'ta da kullanılır)
  if ! is_command composer; then
    run_or_die "Composer kurulumu" sh -c '
      curl -fsSL https://getcomposer.org/installer | php -- \
        --install-dir=/usr/local/bin --filename=composer
    '
  fi
}

packages_install_powerdns() {
  log_info "→ PowerDNS Authoritative + MySQL backend"
  run_or_die "PowerDNS kurulumu" dnf install -y pdns pdns-backend-mysql

  # Default bind backend'i devre dışı bırak
  if [[ -f /etc/pdns/pdns.conf ]]; then
    sed -i 's/^launch=.*/launch=gmysql/' /etc/pdns/pdns.conf || true
  fi
}

packages_install_pureftpd() {
  log_info "→ Pure-FTPd (MySQL backend)"
  run_or_die "Pure-FTPd kurulumu" dnf install -y pure-ftpd
  # MySQL auth backend'i pure-ftpd-mysql.conf üzerinden ayarlanacak (Epic 11)
}

packages_install_acme() {
  log_info "→ acme.sh (Let's Encrypt client)"
  local acme_dir="${ONOXSOFT_ROOT}/acme.sh"
  if [[ -d "${acme_dir}/.git" ]]; then
    run "acme.sh güncelleme" git -C "$acme_dir" pull --ff-only
    return
  fi
  run_or_die "git kurulumu (acme.sh için)" dnf install -y git
  run_or_die "acme.sh clone" git clone --depth 1 \
    https://github.com/acmesh-official/acme.sh.git "$acme_dir"

  # System-wide install — /usr/local/onoxsoft/acme.sh/acme.sh symlink olarak /usr/local/bin'e
  (
    cd "$acme_dir"
    ./acme.sh --install --home "$acme_dir" --no-cron --noprofile \
      --accountemail "${ONOXSOFT_ADMIN_EMAIL:-noreply@localhost}"
  )
}
