#!/data/data/com.termux/files/usr/bin/bash
# ExoCBT Termux Installer v4.6.3
# SMAN 1 Plemahan - https://termux.sman1plemahan.sch.id

set -e

VERSION="4.6.3"
BASE_URL="https://termux.sman1plemahan.sch.id"
S3_URL="https://s3.ekstraordinary.com/extraordinarycbt/release-rosetta/${VERSION}-linux.zip"
DOWNLOAD_URL="${BASE_URL}/releases/${VERSION}-linux.zip"

clear
echo "=============================================="
echo "  Ekstraordinary CBT ${VERSION} - Termux"
echo "  SMAN 1 Plemahan"
echo "=============================================="
echo ""

# --- Dependensi ---
echo "[1/5] Menginstal dependensi..."
apt update -y
apt install -y proot proot-distro qemu-user-x86-64 libdw unzip postgresql wget tar gzip netcat-openbsd

# --- Download CBT ---
clear
echo "[2/5] Mengunduh Ekstraordinary CBT ${VERSION}..."
if wget -q --spider "$S3_URL" 2>/dev/null; then
    wget "$S3_URL" -O cbt.zip
elif wget -q --spider "$DOWNLOAD_URL" 2>/dev/null; then
    wget "$DOWNLOAD_URL" -O cbt.zip
else
    echo "Gagal mengunduh paket CBT ${VERSION}. Periksa koneksi internet."
    exit 1
fi

mkdir -p cbt
unzip -o cbt.zip -d ./cbt | tee ./cbt/.unzip.log
rm -f cbt.zip

# --- Database PostgreSQL ---
clear
echo "[3/5] Inisialisasi database PostgreSQL..."
mkdir -p ./cbt/database
if [ ! -f ./cbt/database/PG_VERSION ]; then
    initdb ./cbt/database
    echo "host all postgres 0.0.0.0/0 md5" >> ./cbt/database/pg_hba.conf
fi

pg_ctl -D ./cbt/database -l ./cbt/database.log start
sleep 2

if ! psql -U postgres -lqt 2>/dev/null | grep -q exo; then
    createuser -s postgres 2>/dev/null || true
    psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'postgres';" 2>/dev/null || true
    psql -U postgres -c "CREATE DATABASE exo;" 2>/dev/null || true
    sql=$(ls ./cbt/exo*sql 2>/dev/null | head -n 1)
    if [ -n "$sql" ]; then
        psql -U postgres -d exo -f "$sql"
    fi
fi

pg_ctl -D ./cbt/database stop
sleep 1

# --- Timezone (tzdata via proot-distro) ---
clear
echo "[4/5] Mengatur timezone..."
pd install --override-alias tzdata alpine 2>/dev/null || pd install tzdata alpine
pd login tzdata --isolated -- apk add --update tzdata 2>/dev/null || true

# --- Konfigurasi akhir ---
clear
echo "[5/5] Konfigurasi akhir..."
sed -i 's|^STORAGE_PATH=.*|STORAGE_PATH='"$PWD"'/cbt/storage|' ./cbt/.env
sed -i 's|^SERVER_BEHIND_PROXY=.*|SERVER_BEHIND_PROXY=true|' ./cbt/.env 2>/dev/null || true

wget -q "${BASE_URL}/install/startexo" -O ./startexo
chmod +x ./startexo

clear
echo ""
echo "=============================================="
echo "  Instalasi Selesai!"
echo "=============================================="
echo ""
echo "Langkah selanjutnya:"
echo "  1. Aktifkan hotspot di HP Anda"
echo "  2. Ketik: ./startexo"
echo "  3. Buka browser: http://[IP-HP]:9988"
echo ""
echo "Panduan lengkap: ${BASE_URL}"
echo ""
