version 0.3.1 Добавлено полное удаление панели, warp, mita сервера и самой утилиты mita-cli в mita-cli

This commit is contained in:
2026-06-19 14:40:45 +03:00
parent 23cd9a2c92
commit b43691b03a
Executable → Regular
+141
View File
@@ -74,6 +74,7 @@ main_menu() {
echo -e " ${BOLD}6.${NC} Изменить данные администратора панели" echo -e " ${BOLD}6.${NC} Изменить данные администратора панели"
echo -e " ${BOLD}7.${NC} Настройка fail2ban" echo -e " ${BOLD}7.${NC} Настройка fail2ban"
echo -e " ${BOLD}8.${NC} Рекомендации по безопасности VPS" echo -e " ${BOLD}8.${NC} Рекомендации по безопасности VPS"
echo -e " ${RED}${BOLD}9.${NC} ${RED}Полное удаление mita, панели и WARP${NC}"
echo -e " ${BOLD}0.${NC} Выход" echo -e " ${BOLD}0.${NC} Выход"
echo "" echo ""
read -r -p " Выберите пункт: " choice read -r -p " Выберите пункт: " choice
@@ -86,6 +87,7 @@ main_menu() {
6) menu_change_admin ;; 6) menu_change_admin ;;
7) menu_fail2ban ;; 7) menu_fail2ban ;;
8) menu_security ;; 8) menu_security ;;
9) menu_uninstall ;;
0) exit 0 ;; 0) exit 0 ;;
*) warn "Неверный выбор" ;; *) warn "Неверный выбор" ;;
esac esac
@@ -829,6 +831,145 @@ EOF
ok "Настройки применены. Попыток: $max_retry, бан: ${ban_time}с" ok "Настройки применены. Попыток: $max_retry, бан: ${ban_time}с"
} }
# ════════════════════════════════════════════════════════════════════════════
# 9. ПОЛНОЕ УДАЛЕНИЕ
# ════════════════════════════════════════════════════════════════════════════
menu_uninstall() {
clear
echo -e "${RED}"
echo " ╔══════════════════════════════════════════════════════════════╗"
echo " ║ ⚠ ПОЛНОЕ УДАЛЕНИЕ ⚠ ║"
echo " ╚══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo " Эта операция безвозвратно удалит:"
echo ""
echo -e " ${YELLOW}${NC} mita сервер (бинарник, systemd unit, конфиги)"
echo -e " ${YELLOW}${NC} Веб-панель (/opt/mita-panel, systemd unit)"
echo -e " ${YELLOW}${NC} Cloudflare WARP (Docker-контейнер)"
echo -e " ${YELLOW}${NC} Все пользователи и пароли (/etc/mita/)"
echo -e " ${YELLOW}${NC} SSL-сертификаты, выпущенные для панели"
echo -e " ${YELLOW}${NC} Правила fail2ban для панели"
echo -e " ${YELLOW}${NC} Cron-задачи обновления списков доменов"
echo -e " ${YELLOW}${NC} Сама утилита mita-ctl (/usr/local/bin/mita-ctl)"
echo ""
echo -e " ${RED}${BOLD}Это действие необратимо. Все данные будут потеряны.${NC}"
echo ""
read -r -p " Введите слово УДАЛИТЬ для подтверждения: " confirm1
if [[ "$confirm1" != "УДАЛИТЬ" ]]; then
warn "Отменено — слово не совпадает"
pause
return
fi
echo ""
read -r -p " Вы точно уверены? Введите 'да' ещё раз: " confirm2
if [[ "${confirm2,,}" != "да" ]]; then
warn "Отменено"
pause
return
fi
echo ""
section "Удаление в процессе..."
# ── 1. Остановить и удалить веб-панель ─────────────────────────
info "Остановка mita-panel..."
systemctl stop mita-panel 2>/dev/null || true
systemctl disable mita-panel 2>/dev/null || true
rm -f /etc/systemd/system/mita-panel.service
rm -rf /opt/mita-panel
ok "Веб-панель удалена"
# ── 2. Остановить и удалить mita сервер ────────────────────────
info "Остановка mita..."
systemctl stop mita 2>/dev/null || true
systemctl disable mita 2>/dev/null || true
rm -f /usr/lib/systemd/system/mita.service
rm -f /etc/systemd/system/mita.service
command -v mita &>/dev/null && {
DEB_PKG=$(dpkg -l 2>/dev/null | grep -i mita | awk '{print $2}' | head -1)
[[ -n "$DEB_PKG" ]] && apt-get remove -y -qq "$DEB_PKG" 2>/dev/null
}
rm -f /usr/bin/mita
ok "mita сервер удалён"
# ── 3. Удалить WARP (Docker) ───────────────────────────────────
if command -v docker &>/dev/null; then
info "Удаление WARP контейнера..."
docker rm -f cloudflare-warp 2>/dev/null || true
docker rmi seiry/cloudflare-warp-proxy 2>/dev/null || true
ok "WARP контейнер удалён"
fi
# ── 4. Удалить конфиги и данные ────────────────────────────────
info "Удаление конфигов и пользователей..."
rm -rf /etc/mita
rm -rf /var/lib/mita
rm -rf /var/run/mita
rm -f /var/log/mita-panel*.log
rm -f /var/log/mita-update.log
ok "Конфиги и данные удалены"
# ── 5. Удалить SSL-сертификаты Let's Encrypt (если выпускались) ─
if command -v certbot &>/dev/null; then
local domains
domains=$(certbot certificates 2>/dev/null | grep "Domains:" | awk '{print $2}')
if [[ -n "$domains" ]]; then
info "Найдены сертификаты Let's Encrypt: $domains"
read -r -p " Удалить их тоже? [y/N]: " del_certs
if [[ "${del_certs,,}" == "y" ]]; then
for d in $domains; do
certbot delete --cert-name "$d" --non-interactive 2>/dev/null || true
done
ok "Сертификаты удалены"
fi
fi
fi
# ── 6. Удалить правила fail2ban ────────────────────────────────
info "Удаление правил fail2ban для панели..."
rm -f /etc/fail2ban/filter.d/mita-panel.conf
rm -f /etc/fail2ban/jail.d/mita-panel.conf
systemctl restart fail2ban 2>/dev/null || true
ok "Правила fail2ban удалены (сам fail2ban не тронут — может использоваться для SSH)"
# ── 7. Удалить cron-задачи ──────────────────────────────────────
info "Удаление cron-задач..."
crontab -l 2>/dev/null | grep -v "mita-update-lists" | grep -v "certbot renew --quiet && systemctl restart mita-panel" | crontab - 2>/dev/null || true
rm -f /etc/cron.d/mita-update
rm -f /usr/local/bin/mita-update-lists
ok "Cron-задачи удалены"
# ── 8. Закрыть порты в firewall (best-effort) ──────────────────
info "Откат правил firewall (порты mita/панели)..."
if command -v ufw &>/dev/null; then
ufw status numbered 2>/dev/null | grep -iE "mita|panel" | awk -F'[][]' '{print $2}' | sort -rn | while read -r num; do
[[ -n "$num" ]] && yes | ufw delete "$num" 2>/dev/null || true
done
fi
ok "Правила firewall обработаны (проверьте 'ufw status' вручную при необходимости)"
systemctl daemon-reload 2>/dev/null || true
echo ""
echo -e "${GREEN}╔══════════════════════════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ УДАЛЕНИЕ ЗАВЕРШЕНО ║${NC}"
echo -e "${GREEN}╚══════════════════════════════════════════════════════════════╝${NC}"
echo ""
echo " mita, веб-панель, WARP и связанные данные удалены."
echo " fail2ban, certbot, docker и системные пакеты оставлены —"
echo " они могут использоваться другими сервисами на этом VPS."
echo ""
echo -e " ${YELLOW}Эта утилита (mita-ctl) удалит себя после выхода.${NC}"
echo ""
read -r -p "Нажмите Enter для выхода..." _
# Удаляем сам себя последним действием
rm -f /usr/local/bin/mita-ctl
exit 0
}
# ── Точка входа ─────────────────────────────────────────────────────────── # ── Точка входа ───────────────────────────────────────────────────────────
main_menu main_menu