mirror of
https://github.com/anten-ka/gotelegram_pro.git
synced 2026-05-19 17:56:07 +00:00
Пункт 7: полное меню удаления (контейнер или контейнер+Docker), 2 подтверждения
Made-with: Cursor
This commit is contained in:
209
install.sh
209
install.sh
@@ -929,6 +929,202 @@ install_bot_deps() {
|
|||||||
echo -e " ${GREEN}✓${NC} Зависимости установлены"
|
echo -e " ${GREEN}✓${NC} Зависимости установлены"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ── 7) Полное меню удаления ────────────────────────────────────────────────────
|
||||||
|
menu_remove() {
|
||||||
|
clear
|
||||||
|
echo -e "${RED}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${RED}║ УДАЛЕНИЕ КОМПОНЕНТОВ ║${NC}"
|
||||||
|
echo -e "${RED}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e " ${YELLOW}1)${NC} Удалить только контейнер MTProxy"
|
||||||
|
echo -e " (Docker и другие контейнеры останутся)"
|
||||||
|
echo ""
|
||||||
|
echo -e " ${RED}2)${NC} Удалить контейнер MTProxy + Docker полностью"
|
||||||
|
echo -e " ${RED}⚠ ВСЕ контейнеры и образы будут уничтожены!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e " ${WHITE}0)${NC} Назад"
|
||||||
|
echo ""
|
||||||
|
local choice
|
||||||
|
read -p " Выбор: " choice
|
||||||
|
|
||||||
|
case $choice in
|
||||||
|
1) remove_container_only ;;
|
||||||
|
2) remove_with_docker ;;
|
||||||
|
*) return ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_container_only() {
|
||||||
|
clear
|
||||||
|
echo -e "${YELLOW}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${YELLOW}║ Удаление контейнера MTProxy ║${NC}"
|
||||||
|
echo -e "${YELLOW}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e " Будет удалено:"
|
||||||
|
echo -e " • Контейнер ${WHITE}$CONTAINER_NAME${NC}"
|
||||||
|
echo -e " • Telegram-бот (сервис ${WHITE}$SERVICE_NAME${NC})"
|
||||||
|
echo -e " • Файлы бота (${WHITE}$BOT_DIR${NC})"
|
||||||
|
echo -e " • Скрипт ${WHITE}/usr/local/bin/gotelegram${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e " Docker и другие контейнеры ${GREEN}НЕ будут затронуты${NC}."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Подтверждение 1
|
||||||
|
local yn
|
||||||
|
read -p " Вы уверены? (y/N): " yn
|
||||||
|
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
|
||||||
|
echo -e " ${GREEN}Отменено.${NC}"
|
||||||
|
read -p " Нажмите Enter..."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Подтверждение 2 — случайное слово
|
||||||
|
local words=("УДАЛИТЬ" "СТЕРЕТЬ" "ПРОКСИ" "ОЧИСТКА" "ФИНАЛ" "СБРОС")
|
||||||
|
local confirm_word="${words[$((RANDOM % ${#words[@]}))]}"
|
||||||
|
echo ""
|
||||||
|
echo -e " ${RED}Для подтверждения введите слово:${NC} ${WHITE}${confirm_word}${NC}"
|
||||||
|
local input_word
|
||||||
|
read -p " >>> " input_word
|
||||||
|
if [ "$input_word" != "$confirm_word" ]; then
|
||||||
|
echo -e " ${GREEN}Слово не совпало. Удаление отменено.${NC}"
|
||||||
|
read -p " Нажмите Enter..."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
# Удаление
|
||||||
|
spinner_start "Остановка и удаление контейнера..."
|
||||||
|
docker stop "$CONTAINER_NAME" &>/dev/null
|
||||||
|
docker rm "$CONTAINER_NAME" &>/dev/null
|
||||||
|
spinner_stop
|
||||||
|
echo -e " ${GREEN}✓${NC} Контейнер удалён"
|
||||||
|
|
||||||
|
spinner_start "Остановка Telegram-бота..."
|
||||||
|
systemctl stop "$SERVICE_NAME" 2>/dev/null
|
||||||
|
systemctl disable "$SERVICE_NAME" 2>/dev/null
|
||||||
|
rm -f "/etc/systemd/system/${SERVICE_NAME}.service"
|
||||||
|
systemctl daemon-reload 2>/dev/null
|
||||||
|
spinner_stop
|
||||||
|
echo -e " ${GREEN}✓${NC} Сервис бота удалён"
|
||||||
|
|
||||||
|
rm -rf "$BOT_DIR"
|
||||||
|
echo -e " ${GREEN}✓${NC} Файлы бота удалены"
|
||||||
|
|
||||||
|
rm -f /usr/local/bin/gotelegram
|
||||||
|
echo -e " ${GREEN}✓${NC} Скрипт gotelegram удалён"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}══════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${GREEN} Удаление завершено. Docker остался на месте.${NC}"
|
||||||
|
echo -e "${GREEN}══════════════════════════════════════════════════${NC}"
|
||||||
|
read -p " Нажмите Enter..."
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_with_docker() {
|
||||||
|
clear
|
||||||
|
echo -e "${RED}╔══════════════════════════════════════════════════════════════╗${NC}"
|
||||||
|
echo -e "${RED}║ ⚠ ПОЛНОЕ УДАЛЕНИЕ: MTProxy + Docker + всё ⚠ ║${NC}"
|
||||||
|
echo -e "${RED}╚══════════════════════════════════════════════════════════════╝${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e " ${RED}ВНИМАНИЕ! Будет удалено ВСЁ:${NC}"
|
||||||
|
echo -e " • Контейнер ${WHITE}$CONTAINER_NAME${NC}"
|
||||||
|
echo -e " • Telegram-бот и файлы"
|
||||||
|
echo -e " • Скрипт gotelegram"
|
||||||
|
echo -e " • ${RED}Docker Engine полностью${NC}"
|
||||||
|
echo -e " • ${RED}ВСЕ Docker-контейнеры, образы и тома${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Показываем что ещё есть в Docker
|
||||||
|
local other_containers
|
||||||
|
other_containers=$(docker ps -a --format '{{.Names}}\t{{.Image}}\t{{.Status}}' 2>/dev/null | grep -v "^${CONTAINER_NAME}")
|
||||||
|
if [ -n "$other_containers" ]; then
|
||||||
|
echo -e " ${RED}⚠ На сервере есть ДРУГИЕ контейнеры, которые тоже будут уничтожены:${NC}"
|
||||||
|
echo -e " ${RED}────────────────────────────────────────────────────────────────${NC}"
|
||||||
|
echo "$other_containers" | while IFS= read -r line; do
|
||||||
|
echo -e " ${WHITE}$line${NC}"
|
||||||
|
done
|
||||||
|
echo -e " ${RED}────────────────────────────────────────────────────────────────${NC}"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Подтверждение 1
|
||||||
|
local yn
|
||||||
|
echo -e " ${RED}Это действие НЕОБРАТИМО.${NC}"
|
||||||
|
read -p " Вы точно уверены? (y/N): " yn
|
||||||
|
if [ "$yn" != "y" ] && [ "$yn" != "Y" ]; then
|
||||||
|
echo -e " ${GREEN}Отменено.${NC}"
|
||||||
|
read -p " Нажмите Enter..."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Подтверждение 2 — случайное слово
|
||||||
|
local words=("УНИЧТОЖИТЬ" "ПОЛНЫЙ-СБРОС" "СТЕРЕТЬ-ВСЁ" "ПОДТВЕРЖДАЮ" "DOCKER-УДАЛИТЬ" "ТОЧНО-ДА")
|
||||||
|
local confirm_word="${words[$((RANDOM % ${#words[@]}))]}"
|
||||||
|
echo ""
|
||||||
|
echo -e " ${RED}████████████████████████████████████████████████████████████${NC}"
|
||||||
|
echo -e " ${RED}██${NC} Для подтверждения введите: ${WHITE}${confirm_word}${NC}"
|
||||||
|
echo -e " ${RED}████████████████████████████████████████████████████████████${NC}"
|
||||||
|
local input_word
|
||||||
|
read -p " >>> " input_word
|
||||||
|
if [ "$input_word" != "$confirm_word" ]; then
|
||||||
|
echo -e " ${GREEN}Слово не совпало. Удаление отменено.${NC}"
|
||||||
|
read -p " Нажмите Enter..."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
# Удаление MTProxy
|
||||||
|
spinner_start "Удаление контейнера MTProxy..."
|
||||||
|
docker stop "$CONTAINER_NAME" &>/dev/null
|
||||||
|
docker rm "$CONTAINER_NAME" &>/dev/null
|
||||||
|
spinner_stop
|
||||||
|
echo -e " ${GREEN}✓${NC} Контейнер MTProxy удалён"
|
||||||
|
|
||||||
|
# Удаление бота
|
||||||
|
spinner_start "Удаление Telegram-бота..."
|
||||||
|
systemctl stop "$SERVICE_NAME" 2>/dev/null
|
||||||
|
systemctl disable "$SERVICE_NAME" 2>/dev/null
|
||||||
|
rm -f "/etc/systemd/system/${SERVICE_NAME}.service"
|
||||||
|
systemctl daemon-reload 2>/dev/null
|
||||||
|
rm -rf "$BOT_DIR"
|
||||||
|
spinner_stop
|
||||||
|
echo -e " ${GREEN}✓${NC} Telegram-бот удалён"
|
||||||
|
|
||||||
|
# Удаление всех контейнеров Docker
|
||||||
|
spinner_start "Остановка всех контейнеров Docker..."
|
||||||
|
docker stop $(docker ps -aq) &>/dev/null
|
||||||
|
docker rm $(docker ps -aq) &>/dev/null
|
||||||
|
spinner_stop
|
||||||
|
echo -e " ${GREEN}✓${NC} Все контейнеры остановлены и удалены"
|
||||||
|
|
||||||
|
# Удаление Docker
|
||||||
|
spinner_start "Удаление Docker Engine..."
|
||||||
|
systemctl stop docker 2>/dev/null
|
||||||
|
if command -v apt-get &>/dev/null; then
|
||||||
|
apt-get purge -y -qq docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 2>/dev/null
|
||||||
|
apt-get autoremove -y -qq 2>/dev/null
|
||||||
|
elif command -v dnf &>/dev/null; then
|
||||||
|
dnf remove -y docker-ce docker-ce-cli containerd.io 2>/dev/null
|
||||||
|
elif command -v yum &>/dev/null; then
|
||||||
|
yum remove -y docker-ce docker-ce-cli containerd.io 2>/dev/null
|
||||||
|
fi
|
||||||
|
rm -rf /var/lib/docker /var/lib/containerd /etc/docker
|
||||||
|
spinner_stop
|
||||||
|
echo -e " ${GREEN}✓${NC} Docker полностью удалён"
|
||||||
|
|
||||||
|
# Удаление скрипта
|
||||||
|
rm -f /usr/local/bin/gotelegram
|
||||||
|
echo -e " ${GREEN}✓${NC} Скрипт gotelegram удалён"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}══════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${GREEN} Полное удаление завершено.${NC}"
|
||||||
|
echo -e "${GREEN}══════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e " Для повторной установки используйте команду curl."
|
||||||
|
read -p " Нажмите Enter для выхода..."
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
# ── Выход ────────────────────────────────────────────────────────────────────
|
# ── Выход ────────────────────────────────────────────────────────────────────
|
||||||
show_exit() {
|
show_exit() {
|
||||||
clear
|
clear
|
||||||
@@ -983,7 +1179,7 @@ while true; do
|
|||||||
echo -e " ${GREEN}4)${NC} Перезапустить прокси"
|
echo -e " ${GREEN}4)${NC} Перезапустить прокси"
|
||||||
echo -e " ${GREEN}5)${NC} Логи прокси"
|
echo -e " ${GREEN}5)${NC} Логи прокси"
|
||||||
echo -e " ${YELLOW}6)${NC} Показать PROMO"
|
echo -e " ${YELLOW}6)${NC} Показать PROMO"
|
||||||
echo -e " ${RED}7)${NC} Удалить прокси"
|
echo -e " ${RED}7)${NC} Удалить (полное меню удаления)"
|
||||||
echo -e " ${WHITE}0)${NC} Выход"
|
echo -e " ${WHITE}0)${NC} Выход"
|
||||||
echo ""
|
echo ""
|
||||||
read -p " Пункт: " m_idx
|
read -p " Пункт: " m_idx
|
||||||
@@ -1008,16 +1204,7 @@ while true; do
|
|||||||
read -p "Нажмите Enter..."
|
read -p "Нажмите Enter..."
|
||||||
;;
|
;;
|
||||||
6) show_promo ;;
|
6) show_promo ;;
|
||||||
7)
|
7) menu_remove ;;
|
||||||
if proxy_is_running; then
|
|
||||||
docker stop "$CONTAINER_NAME" &>/dev/null
|
|
||||||
docker rm "$CONTAINER_NAME" &>/dev/null
|
|
||||||
echo -e "${GREEN}Прокси удалён.${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${YELLOW}Прокси не был запущен.${NC}"
|
|
||||||
fi
|
|
||||||
read -p "Нажмите Enter..."
|
|
||||||
;;
|
|
||||||
0) show_exit ;;
|
0) show_exit ;;
|
||||||
*) echo -e "${RED}Неверный ввод.${NC}" ;;
|
*) echo -e "${RED}Неверный ввод.${NC}" ;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in New Issue
Block a user