#!/usr/bin/env bash
# سكربت تثبيت تطبيق Spotrade على خادم Ubuntu/Debian — قراءة فقط دائمًا.
set -euo pipefail

APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SERVICE_NAME="spotrade"
PORT="${SPOTRADE_PORT:-8765}"

if [ ! -f "$APP_DIR/.env" ]; then
  echo "[خطأ] ملف .env غير موجود."
  echo "انسخ المثال أولًا:  cp .env.example .env  ثم ضع مفاتيح API داخله."
  exit 1
fi

if ! grep -q "^BINANCE_API_KEY=..*" "$APP_DIR/.env"; then
  echo "[خطأ] BINANCE_API_KEY فارغ في ملف .env — ضع مفاتيح بينانس أولًا."
  exit 1
fi

echo "[1/6] تثبيت بايثون 3..."
sudo apt-get update -qq
sudo apt-get install -y -qq python3 python3-venv

echo "[2/6] إنشاء البيئة الافتراضية وتثبيت المكتبات..."
python3 -m venv "$APP_DIR/.venv"
"$APP_DIR/.venv/bin/pip" install --quiet --upgrade pip
"$APP_DIR/.venv/bin/pip" install --quiet -r "$APP_DIR/requirements.txt"

echo "[3/6] تسجيل عنوان الخادم في المضيفات الموثوقة..."
SERVER_IP="$(hostname -I 2>/dev/null | awk '{print $1}')"
if [ -n "$SERVER_IP" ] && ! grep -qx "$SERVER_IP" "$APP_DIR/trusted_hosts.txt" 2>/dev/null; then
  echo "$SERVER_IP" >> "$APP_DIR/trusted_hosts.txt"
fi

echo "[4/6] إنشاء خدمة النظام (تشغيل تلقائي دائم)..."
sudo tee "/etc/systemd/system/$SERVICE_NAME.service" > /dev/null <<EOF
[Unit]
Description=Spotrade read-only dashboard
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=$APP_DIR
Environment=BSA_HOST=0.0.0.0
Environment=BSA_RUNTIME_DIR=$APP_DIR
ExecStart=$APP_DIR/.venv/bin/python $APP_DIR/app.py --no-browser --port $PORT
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

echo "[5/6] فتح المنفذ في الجدار الناري..."
if command -v ufw >/dev/null 2>&1; then
  sudo ufw allow "$PORT"/tcp >/dev/null 2>&1 || true
fi

echo "[6/6] تشغيل الخدمة الآن وعند كل إقلاع..."
sudo systemctl daemon-reload
sudo systemctl enable --now "$SERVICE_NAME"

echo ""
echo "✅ اكتمل التثبيت! التطبيق يعمل الآن على:"
echo "   http://$SERVER_IP:$PORT"
echo ""
echo "الخطوة الأخيرة (مرة واحدة) — عيّن كلمة مرور الدخول:"
echo "   cd $APP_DIR && .venv/bin/python set_admin_password.py"
echo ""
echo "سجلات الخدمة:  sudo journalctl -u $SERVICE_NAME -f"
