From b43691b03a56f2ff7d27fa698a0b7abe1bccf7a4 Mon Sep 17 00:00:00 2001 From: grendervill Date: Fri, 19 Jun 2026 14:40:45 +0300 Subject: [PATCH] =?UTF-8?q?version=200.3.1=20=D0=94=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE?= =?UTF-8?q?=D0=B5=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B8,=20warp,=20mita=20=D1=81?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D0=B5=D1=80=D0=B0=20=D0=B8=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=B9=20=D1=83=D1=82=D0=B8=D0=BB=D0=B8=D1=82=D1=8B?= =?UTF-8?q?=20mita-cli=20=D0=B2=20mita-cli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mita-ctl.sh | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) mode change 100755 => 100644 mita-ctl.sh diff --git a/mita-ctl.sh b/mita-ctl.sh old mode 100755 new mode 100644 index 750ff0d..b89c627 --- a/mita-ctl.sh +++ b/mita-ctl.sh @@ -74,6 +74,7 @@ main_menu() { echo -e " ${BOLD}6.${NC} Изменить данные администратора панели" echo -e " ${BOLD}7.${NC} Настройка fail2ban" echo -e " ${BOLD}8.${NC} Рекомендации по безопасности VPS" + echo -e " ${RED}${BOLD}9.${NC} ${RED}Полное удаление mita, панели и WARP${NC}" echo -e " ${BOLD}0.${NC} Выход" echo "" read -r -p " Выберите пункт: " choice @@ -86,6 +87,7 @@ main_menu() { 6) menu_change_admin ;; 7) menu_fail2ban ;; 8) menu_security ;; + 9) menu_uninstall ;; 0) exit 0 ;; *) warn "Неверный выбор" ;; esac @@ -829,6 +831,145 @@ EOF 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