#!/usr/bin/env bash
# VayDNS Updater
# Usage: bash <(curl -fsSL https://vaydns.orx.ma/update.sh)

set -e

VAYDNS_DIR="/opt/vaydns"
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
CYAN='\033[0;36m'; BOLD='\033[1m'; NC='\033[0m'

info()  { echo -e "  ${GREEN}[+]${NC} $*"; }
warn()  { echo -e "  ${YELLOW}[!]${NC} $*"; }
error() { echo -e "  ${RED}[✗]${NC} $*"; exit 1; }

echo -e "${CYAN}${BOLD}"
echo "  VayDNS Updater"
echo "  ─────────────"
echo -e "${NC}"

[[ $EUID -ne 0 ]] && error "Run as root"
[[ ! -d "$VAYDNS_DIR/src" ]] && error "Source not found. Run setup.sh first."

SRC="$VAYDNS_DIR/src"

pid_running() {
  local f="$1"
  [[ -f "$f" ]] && kill -0 "$(cat "$f")" 2>/dev/null
}

WAS_SERVER=0; WAS_CLIENT=0
pid_running "$VAYDNS_DIR/vaydns-server.pid" && WAS_SERVER=1
pid_running "$VAYDNS_DIR/vaydns-client.pid" && WAS_CLIENT=1

info "Stopping running processes..."
[[ $WAS_SERVER -eq 1 ]] && { kill "$(cat "$VAYDNS_DIR/vaydns-server.pid")"; rm -f "$VAYDNS_DIR/vaydns-server.pid"; info "Server stopped"; }
[[ $WAS_CLIENT -eq 1 ]] && { kill "$(cat "$VAYDNS_DIR/vaydns-client.pid")"; rm -f "$VAYDNS_DIR/vaydns-client.pid"; info "Client stopped"; }

info "Pulling latest source..."
git -C "$SRC" fetch --all
git -C "$SRC" reset --hard origin/main

info "Rebuilding binaries..."
export PATH="/usr/local/go/bin:$PATH"
go build -o "$VAYDNS_DIR/vaydns-server" "$SRC/vaydns-server"
go build -o "$VAYDNS_DIR/vaydns-client" "$SRC/vaydns-client"
chmod +x "$VAYDNS_DIR/vaydns-server" "$VAYDNS_DIR/vaydns-client"

info "Updating menu.py..."
curl -fsSL "https://vaydns.orx.ma/menu.py" -o "$VAYDNS_DIR/menu.py" 2>/dev/null || warn "Could not update menu.py"
curl -fsSL "https://vaydns.orx.ma/utils.sh" -o "$VAYDNS_DIR/utils.sh" 2>/dev/null || warn "Could not update utils.sh"

if [[ $WAS_SERVER -eq 1 ]]; then
  info "Restarting server..."
  systemctl restart vaydns-server 2>/dev/null || true
fi
if [[ $WAS_CLIENT -eq 1 ]]; then
  info "Restarting client..."
  systemctl restart vaydns-client 2>/dev/null || true
fi

echo ""
echo -e "  ${GREEN}${BOLD}✔ VayDNS updated successfully!${NC}"
echo ""
echo -e "  Run ${CYAN}vaydns${NC} to open the management menu."
