version1 Панель работает, исправлены ошибки в mita-ctl
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
REPO="grendervilll/mitactl"
|
||||
BRANCH="main"
|
||||
ARCHIVE_URL="https://github.com/${REPO}/archive/refs/heads/${BRANCH}.tar.gz"
|
||||
INSTALL_DIR="/opt/mitactl-install"
|
||||
|
||||
RED='\033[0;31m'; GREEN='\033[0;32m'; CYAN='\033[0;36m'; NC='\033[0m'
|
||||
info() { echo -e "${CYAN}[INFO]${NC} $*"; }
|
||||
ok() { echo -e "${GREEN}[OK]${NC} $*"; }
|
||||
err() { echo -e "${RED}[ERROR]${NC} $*"; exit 1; }
|
||||
|
||||
[[ $EUID -ne 0 ]] && err "Запустите от root: sudo bash <(curl -Ls ...)"
|
||||
|
||||
command -v curl &>/dev/null || apt-get install -y -qq curl
|
||||
command -v tar &>/dev/null || apt-get install -y -qq tar
|
||||
|
||||
info "Загрузка репозитория ${REPO}..."
|
||||
rm -rf "$INSTALL_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
curl -Ls "$ARCHIVE_URL" | tar -xz -C "$INSTALL_DIR" --strip-components=1 \
|
||||
|| err "Не удалось скачать или распаковать архив с GitHub"
|
||||
|
||||
ok "Файлы загружены в $INSTALL_DIR"
|
||||
|
||||
chmod +x "$INSTALL_DIR/install.sh"
|
||||
cd "$INSTALL_DIR"
|
||||
exec bash install.sh
|
||||
+5
-3
@@ -120,15 +120,17 @@ fi
|
||||
# =============================================================================
|
||||
section "Установка зависимостей"
|
||||
|
||||
apt-get update -qq
|
||||
apt-get update -qq || { warn "apt-get update завершился с ошибкой, продолжаем..."; true; }
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
|
||||
curl wget jq cron \
|
||||
ca-certificates gnupg lsb-release \
|
||||
iptables ipset ufw iptables-persistent \
|
||||
iptables ufw \
|
||||
fail2ban openssl \
|
||||
net-tools \
|
||||
python3 python3-yaml \
|
||||
2>/dev/null
|
||||
|| error "Ошибка установки зависимостей. Запустите вручную: apt-get install -y curl wget jq cron iptables ufw fail2ban python3 python3-yaml"
|
||||
# ipset и iptables-persistent — опциональные, не прерываем при ошибке
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq ipset iptables-persistent 2>/dev/null || true
|
||||
ok "Базовые пакеты установлены (включая fail2ban, ufw, ipset, iptables-persistent, python3-yaml)"
|
||||
|
||||
# =============================================================================
|
||||
|
||||
+7
-5
@@ -1103,11 +1103,13 @@ except: print('2100-2110')
|
||||
fi
|
||||
|
||||
_PANEL_PORT="8080"
|
||||
[[ -f "$PANEL_ENV" ]] && _PANEL_PORT=$(grep "^PANEL_PORT=" "$PANEL_ENV" | cut -d= -f2 || echo "8080")
|
||||
if [[ -f "$PANEL_ENV" ]]; then
|
||||
_PANEL_PORT=$(grep "^PANEL_PORT=" "$PANEL_ENV" 2>/dev/null | cut -d= -f2 || true)
|
||||
fi
|
||||
_PANEL_PORT=${_PANEL_PORT:-8080}
|
||||
|
||||
# Автодетект текущего SSH порта из sshd_config (чтобы не трогать его при чистке)
|
||||
_SSH_PORT=$(grep -E "^[[:space:]]*Port[[:space:]]+" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | head -1)
|
||||
_SSH_PORT=$(grep -E "^[[:space:]]*Port[[:space:]]+" /etc/ssh/sshd_config 2>/dev/null | awk '{print $2}' | head -1 || true)
|
||||
_SSH_PORT=${_SSH_PORT:-22}
|
||||
info "Обнаружен SSH порт: $_SSH_PORT (будет сохранён)"
|
||||
info "Порты mita для закрытия: $_MITA_RANGE"
|
||||
@@ -1128,7 +1130,7 @@ except: print('2100-2110')
|
||||
|
||||
# Сначала пробуем штатное удаление через dpkg/apt — пока unit-файл
|
||||
# ещё на месте, иначе pre/post-removal скрипты пакета падают
|
||||
DEB_PKG=$(dpkg -l 2>/dev/null | grep -i "^ii.*mita" | awk '{print $2}' | head -1)
|
||||
DEB_PKG=$(dpkg -l 2>/dev/null | grep -i "^ii.*mita" | awk '{print $2}' | head -1 || true)
|
||||
if [[ -n "$DEB_PKG" ]]; then
|
||||
apt-get remove -y -qq "$DEB_PKG" 2>/dev/null \
|
||||
|| dpkg --remove --force-remove-reinstreq "$DEB_PKG" 2>/dev/null \
|
||||
@@ -1162,7 +1164,7 @@ except: print('2100-2110')
|
||||
# ── 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}')
|
||||
domains=$(certbot certificates 2>/dev/null | grep "Domains:" | awk '{print $2}' || true)
|
||||
if [[ -n "$domains" ]]; then
|
||||
info "Найдены сертификаты Let's Encrypt: $domains"
|
||||
read -r -p " Удалить их тоже? [y/N]: " del_certs
|
||||
@@ -1207,7 +1209,7 @@ except: print('2100-2110')
|
||||
# Удаляем правило панели
|
||||
ufw delete allow "$_PANEL_PORT/tcp" 2>/dev/null || true
|
||||
# Дополнительно: чистим правила по комментарию (совместимость с разными версиями)
|
||||
ufw status numbered 2>/dev/null | grep -iE "mita|panel" | awk -F'[][]' '{print $2}' | sort -rn | while read -r num; do
|
||||
ufw status numbered 2>/dev/null | { grep -iE "mita|panel" || true; } | awk -F'[][]' '{print $2}' | sort -rn | while read -r num; do
|
||||
[[ -n "$num" ]] && yes | ufw delete "$num" 2>/dev/null || true
|
||||
done
|
||||
ok "UFW: правила удалены"
|
||||
|
||||
Reference in New Issue
Block a user