fix: исправления ошибок установки и работы (7 багов)

1. fix(install_nfqws): добавлены libmnl-dev и zlib1g-dev для всех дистрибутивов
   - Ubuntu/Debian: libmnl-dev zlib1g-dev
   - Arch: libmnl zlib
   - Fedora: libmnl-devel zlib-devel
   - Alpine: libmnl-dev zlib-dev
   Исправляет fatal error: libmnl/libmnl.h и zlib.h при сборке nfqws.

2. fix(test_zapret): исправлен вывод результатов теста
   - было: Results: / passed (всегда 1/1)
   - стало: Results: / passed (реальные цифры)

3. fix(autotest): cleanup_firewall перед каждым тестом стратегии
   - Убирает остатки iptables/nftables от предыдущего теста

4. fix(install): корректная обработка exit 2 от sync_from_upstream.sh
   - exit 2 = успешный sync + флаг rebuild, не ошибка
   - Теперь не пишет '[!] Sync failed' при нормальном обновлении

5. fix(service): убран рекурсивный вызов bash $0 remove_services
   - Используется прямой вызов функции service_remove()

6. fix(update): корректная запись версии в .service/version.txt
   - Убран префикс LOCAL_VERSION= из записи
   - Добавлена очистка кавычек через sed/tr

7. fix(service): проверка $DISPLAY перед xdg-open в check_for_updates
   - Предотвращает ошибки 'cannot open display' на headless/SSH
This commit is contained in:
OpenCode Agent
2026-05-10 18:03:40 +04:00
parent 6a1304bcfa
commit 29b9f8caa5
6 changed files with 24 additions and 14 deletions

View File

@@ -90,6 +90,10 @@ run_strategy_test() {
return 1
fi
# Ensure clean firewall state before starting
cleanup_firewall >/dev/null 2>&1 || true
sleep 1
# Start strategy in background
echo " [*] Starting $strategy_name..."
"$strategy_path" >/dev/null 2>&1 &

View File

@@ -72,9 +72,15 @@ read -rp "Continue? [Y/n]: " ans
if [[ "$OFFLINE_MODE" -eq 0 ]]; then
echo ""
echo "[*] Step 0: Syncing upstream lists/strategies..."
bash "$SCRIPT_DIR/sync_from_upstream.sh" 2>&1 || {
print_yellow "[!] Sync failed. Continuing with local files..."
}
set +e
bash "$SCRIPT_DIR/sync_from_upstream.sh" 2>&1
SYNC_EXIT=$?
set -e
if [[ "$SYNC_EXIT" -eq 2 ]]; then
print_yellow "[!] Sync flagged: rebuild needed (exit 2). Continuing..."
elif [[ "$SYNC_EXIT" -ne 0 ]]; then
print_yellow "[!] Sync failed (exit $SYNC_EXIT). Continuing with local files..."
fi
else
echo ""
echo "[*] Step 0: OFFLINE — skipping upstream sync"

View File

@@ -46,22 +46,22 @@ install_deps() {
case "$DISTRO" in
ubuntu|debian|linuxmint|pop|zorin|kubuntu|xubuntu|lubuntu)
apt-get update
apt-get install -y git make gcc curl iptables nftables libnetfilter-queue-dev libcap-dev build-essential
apt-get install -y git make gcc curl iptables nftables libnetfilter-queue-dev libmnl-dev zlib1g-dev libcap-dev build-essential
;;
arch|manjaro|endeavouros|garuda|artix|arcolinux|blackarch)
if command -v pacman >/dev/null 2>&1; then
pacman -Syu --noconfirm git make gcc curl iptables nftables libnetfilter_queue libcap
pacman -Syu --noconfirm git make gcc curl iptables nftables libnetfilter_queue libmnl zlib libcap
elif command -v yay >/dev/null 2>&1; then
yay -Syu --noconfirm git make gcc curl iptables nftables libnetfilter_queue libcap
yay -Syu --noconfirm git make gcc curl iptables nftables libnetfilter_queue libmnl zlib libcap
elif command -v paru >/dev/null 2>&1; then
paru -Syu --noconfirm git make gcc curl iptables nftables libnetfilter_queue libcap
paru -Syu --noconfirm git make gcc curl iptables nftables libnetfilter_queue libmnl zlib libcap
fi
;;
fedora|rhel|centos|almalinux|rocky)
dnf install -y git make gcc curl iptables nftables libnetfilter_queue-devel libcap-devel
dnf install -y git make gcc curl iptables nftables libnetfilter_queue-devel libmnl-devel zlib-devel libcap-devel
;;
alpine)
apk add --no-cache git make gcc curl iptables nftables libnetfilter_queue-dev libcap-dev linux-headers
apk add --no-cache git make gcc curl iptables nftables libnetfilter_queue-dev libmnl-dev zlib-dev libcap-dev linux-headers
;;
*)
echo "[!] Unknown distro: $DISTRO"

View File

@@ -157,7 +157,7 @@ service_install() {
echo "[*] Installing strategy: $strategy_name"
# Stop any existing service
bash "$0" remove_services >/dev/null 2>&1 || true
service_remove >/dev/null 2>&1 || true
# Write strategy marker
mkdir -p "$SCRIPT_DIR/.service"
@@ -429,9 +429,9 @@ check_for_updates() {
if [[ "$mode" == "interactive" ]]; then
read -rp "Open download page? [Y/n]: " ans
if [[ "${ans:-Y}" == [yY]* ]]; then
if command -v xdg-open >/dev/null 2>&1; then
if [[ -n "${DISPLAY:-}" ]] && command -v xdg-open >/dev/null 2>&1; then
xdg-open "$github_release_url"
elif command -v gnome-open >/dev/null 2>&1; then
elif [[ -n "${DISPLAY:-}" ]] && command -v gnome-open >/dev/null 2>&1; then
gnome-open "$github_release_url"
else
echo "Please open: $github_release_url"

View File

@@ -130,7 +130,7 @@ full_pipeline() {
# Step 1: Update version marker
log_msg "[*] Step 1: Updating version marker..."
local upstream_ver
upstream_ver=$(cat "$LOCAL_VERSION_FILE" 2>/dev/null || echo "$LOCAL_VERSION")
upstream_ver=$(cat "$LOCAL_VERSION_FILE" 2>/dev/null | sed 's/LOCAL_VERSION=//' | tr -d '\\"' || echo "$LOCAL_VERSION")
echo "$upstream_ver" > "$LOCAL_VERSION_FILE"
# Step 2: Rebuild nfqws

View File

@@ -58,7 +58,7 @@ standard_tests() {
done < "$targets_file"
echo ""
echo "Results: $passed/$passed passed"
echo "Results: $passed/$total passed"
if [[ "$passed" -eq "$total" ]]; then
print_green "All tests passed!"
else