version1 Панель работает, исправлены ошибки в mita-ctl

This commit is contained in:
2026-06-19 23:43:12 +03:00
parent 39c1fcf438
commit ee439187e2
3 changed files with 42 additions and 8 deletions
+30
View File
@@ -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
View File
@@ -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
View File
@@ -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: правила удалены"