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 "Установка зависимостей"
|
section "Установка зависимостей"
|
||||||
|
|
||||||
apt-get update -qq
|
apt-get update -qq || { warn "apt-get update завершился с ошибкой, продолжаем..."; true; }
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
|
DEBIAN_FRONTEND=noninteractive apt-get install -y -qq \
|
||||||
curl wget jq cron \
|
curl wget jq cron \
|
||||||
ca-certificates gnupg lsb-release \
|
ca-certificates gnupg lsb-release \
|
||||||
iptables ipset ufw iptables-persistent \
|
iptables ufw \
|
||||||
fail2ban openssl \
|
fail2ban openssl \
|
||||||
net-tools \
|
net-tools \
|
||||||
python3 python3-yaml \
|
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)"
|
ok "Базовые пакеты установлены (включая fail2ban, ufw, ipset, iptables-persistent, python3-yaml)"
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|||||||
+7
-5
@@ -1103,11 +1103,13 @@ except: print('2100-2110')
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
_PANEL_PORT="8080"
|
_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}
|
_PANEL_PORT=${_PANEL_PORT:-8080}
|
||||||
|
|
||||||
# Автодетект текущего SSH порта из sshd_config (чтобы не трогать его при чистке)
|
# Автодетект текущего 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}
|
_SSH_PORT=${_SSH_PORT:-22}
|
||||||
info "Обнаружен SSH порт: $_SSH_PORT (будет сохранён)"
|
info "Обнаружен SSH порт: $_SSH_PORT (будет сохранён)"
|
||||||
info "Порты mita для закрытия: $_MITA_RANGE"
|
info "Порты mita для закрытия: $_MITA_RANGE"
|
||||||
@@ -1128,7 +1130,7 @@ except: print('2100-2110')
|
|||||||
|
|
||||||
# Сначала пробуем штатное удаление через dpkg/apt — пока unit-файл
|
# Сначала пробуем штатное удаление через dpkg/apt — пока unit-файл
|
||||||
# ещё на месте, иначе pre/post-removal скрипты пакета падают
|
# ещё на месте, иначе 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
|
if [[ -n "$DEB_PKG" ]]; then
|
||||||
apt-get remove -y -qq "$DEB_PKG" 2>/dev/null \
|
apt-get remove -y -qq "$DEB_PKG" 2>/dev/null \
|
||||||
|| dpkg --remove --force-remove-reinstreq "$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 (если выпускались) ─
|
# ── 5. Удалить SSL-сертификаты Let's Encrypt (если выпускались) ─
|
||||||
if command -v certbot &>/dev/null; then
|
if command -v certbot &>/dev/null; then
|
||||||
local domains
|
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
|
if [[ -n "$domains" ]]; then
|
||||||
info "Найдены сертификаты Let's Encrypt: $domains"
|
info "Найдены сертификаты Let's Encrypt: $domains"
|
||||||
read -r -p " Удалить их тоже? [y/N]: " del_certs
|
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 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
|
[[ -n "$num" ]] && yes | ufw delete "$num" 2>/dev/null || true
|
||||||
done
|
done
|
||||||
ok "UFW: правила удалены"
|
ok "UFW: правила удалены"
|
||||||
|
|||||||
Reference in New Issue
Block a user