Ground-Zerro / Phobos Public
Code Issues Pull requests Actions Releases View on GitHub ↗
4.8 KB bash
#!/usr/bin/env bash
set -uo pipefail
IFS=$'\n\t'

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
KEEP_DATA="${1:-}"

source "$SCRIPT_DIR/lib-core.sh"

check_root

echo "=========================================="
echo "  Удаление Phobos VPS"
echo "=========================================="
echo ""

if [[ "$KEEP_DATA" != "--keep-data" ]]; then
  echo "ВНИМАНИЕ: Это действие удалит все компоненты Phobos:"
  echo "  - Systemd сервисы (WireGuard, obfuscator, HTTP)"
  echo "  - Все конфигурации клиентов"
  echo "  - Ключи и сертификаты"
  echo "  - Логи и данные"
  echo ""
  echo "Для сохранения клиентских данных запустите: $0 --keep-data"
  echo ""
  read -p "Вы уверены? Введите 'yes' для подтверждения: " confirmation

  if [[ "$confirmation" != "yes" ]]; then
    echo "Отмена удаления"
    exit 0
  fi
fi

echo ""
echo "==> Остановка и удаление systemd сервисов..."

if systemctl is-active --quiet wg-obfuscator 2>/dev/null; then
  systemctl stop wg-obfuscator
  echo "  ✓ wg-obfuscator остановлен"
fi

if systemctl is-enabled --quiet wg-obfuscator 2>/dev/null; then
  systemctl disable wg-obfuscator
  echo "  ✓ wg-obfuscator отключен из автозапуска"
fi

if [[ -f /etc/systemd/system/wg-obfuscator.service ]]; then
  rm /etc/systemd/system/wg-obfuscator.service
  echo "  ✓ wg-obfuscator.service удален"
fi

if systemctl is-active --quiet phobos-http 2>/dev/null; then
  systemctl stop phobos-http
  echo "  ✓ phobos-http остановлен"
fi

if systemctl is-enabled --quiet phobos-http 2>/dev/null; then
  systemctl disable phobos-http
  echo "  ✓ phobos-http отключен из автозапуска"
fi

if [[ -f /etc/systemd/system/phobos-http.service ]]; then
  rm /etc/systemd/system/phobos-http.service
  echo "  ✓ phobos-http.service удален"
fi

if systemctl is-active --quiet wg-quick@wg0 2>/dev/null; then
  systemctl stop wg-quick@wg0
  echo "  ✓ WireGuard остановлен"
fi

if systemctl is-enabled --quiet wg-quick@wg0 2>/dev/null; then
  systemctl disable wg-quick@wg0
  echo "  ✓ WireGuard отключен из автозапуска"
fi

systemctl daemon-reload
echo "  ✓ Systemd daemon перезагружен"

echo ""
echo "==> Удаление WireGuard конфигурации..."

if [[ -f /etc/wireguard/wg0.conf ]]; then
  rm /etc/wireguard/wg0.conf
  echo "  ✓ wg0.conf удален"
fi

if [[ -f /etc/sysctl.d/99-phobos.conf ]]; then
  rm /etc/sysctl.d/99-phobos.conf
  sysctl -p 2>/dev/null || true
  echo "  ✓ 99-phobos.conf удален"
fi

echo ""
echo "==> Удаление cron задач..."

if [[ -f /etc/cron.d/phobos-cleanup ]]; then
  rm /etc/cron.d/phobos-cleanup
  echo "  ✓ /etc/cron.d/phobos-cleanup удален"
else
  echo "  - Cron задачи не найдены"
fi

echo ""
echo "==> Удаление бинарных файлов..."

if [[ -f /usr/local/bin/wg-obfuscator ]]; then
  rm /usr/local/bin/wg-obfuscator
  echo "  ✓ wg-obfuscator удален"
fi

if [[ -L /usr/local/bin/phobos ]]; then
  rm /usr/local/bin/phobos
  echo "  ✓ phobos (симлинк) удален"
fi

if [[ "$KEEP_DATA" == "--keep-data" ]]; then
  echo ""
  echo "==> Сохранение клиентских данных..."

  BACKUP_DIR="/root/phobos-backup-$(date +%Y%m%d-%H%M%S)"
  mkdir -p "$BACKUP_DIR"

  if [[ -d "$PHOBOS_DIR/clients" ]]; then
    cp -r "$PHOBOS_DIR/clients" "$BACKUP_DIR/"
    echo "  ✓ Клиенты сохранены в $BACKUP_DIR/clients"
  fi

  if [[ -d "$PHOBOS_DIR/packages" ]]; then
    cp -r "$PHOBOS_DIR/packages" "$BACKUP_DIR/"
    echo "  ✓ Пакеты сохранены в $BACKUP_DIR/packages"
  fi

  if [[ -f "$PHOBOS_DIR/server/server.env" ]]; then
    cp "$PHOBOS_DIR/server/server.env" "$BACKUP_DIR/"
    echo "  ✓ Конфигурация (включая ключи) сохранена в $BACKUP_DIR/server.env"
  fi

  echo ""
  echo "  Резервная копия создана: $BACKUP_DIR"
fi

echo ""
echo "==> Удаление директорий..."

if [[ -d "$PHOBOS_DIR" ]]; then
  rm -rf "$PHOBOS_DIR"
  echo "  ✓ $PHOBOS_DIR удален"
fi

echo ""
echo "=========================================="
echo "  Phobos успешно удален!"
echo "=========================================="
echo ""

if [[ "$KEEP_DATA" == "--keep-data" ]]; then
  echo "Резервная копия данных: $BACKUP_DIR"
  echo ""
fi

echo "Для полной очистки системы также удалите:"
echo "  - WireGuard: apt remove --purge wireguard wireguard-tools"
echo "  - Зависимости: apt autoremove"
echo ""