#!/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 ""