- install_nfqws.sh: strip LTO and --gc-sections flags from Makefile before
build to prevent segfault on some systems; verify binary runs before install
- lib/functions.sh: check_nfqws() now also tests --help to catch segfaulting
or missing-dependency binaries
- run_strategy.sh: replace broken single-quoted trap string with proper
cleanup_tmp function so temp file is actually removed
- service.sh: extract strategy name by stripping general_ prefix from
wrapper filename so ExecStart points to correct config
Fixes: nfqws segfault on build, service start failure, temp file leak.
- service.sh: split service_remove into internal (no prompts) and interactive
versions to prevent 'eternal wait' when installing new strategy.
Install now calls service_remove_internal > /dev/null instead of service_remove.
Also filter strategy list to general*.sh only to avoid clutter.
Systemd ExecStart now points to run_strategy.sh <name> consistently.
- run_strategy.sh: add SIGTERM/SIGINT trap cleanup_strategy() that kills nfqws
and cleans up firewall. Prevents stale nfqws/firewall rules after autotest kill.
Also handles nfqws exit gracefully with final cleanup.
- autotest.sh: rewritten to test strategies by config name (not wrapper filename).
Stop now sends SIGTERM to wrapper (which triggers trap cleanup) instead of
bare kill. Added extra sleep after stop to let trap fire.
Auto-install ExecStart fixed to run_strategy.sh <strategy>.
- setup.sh: added libmnl-dev and zlib1g-dev to Ubuntu/Debian dependency install
to prevent build failures (missing libmnl/libmnl.h and zlib.h).
- general*.sh: removed UTF-8 BOM (0xEF 0xBB 0xBF) that caused 'exec format error'
when running scripts on Linux. All 19 wrappers cleaned.
- ensure_wrappers.sh: always rewrite wrappers to ensure no stale BOM or paths.
Fixes: eternal wait on menu option 1, nfqws build failure, stale processes after test.
Fixed the following critical issues that prevented zapret from working:
1. strategies/*.conf: Remove --dpi-desync-fake-discord/--dpi-desync-fake-stun
These are Windows winws.exe parameters that do NOT exist in Linux nfqws.
nfqws immediately exited with 'unrecognized option', causing the
infamous 'error 0000' / all strategies failing in autotest.
2. run_strategy.sh: Remove 'set -e' that broke on SIGTERM and empty arrays.
Remove useless service.sh sub-command calls (status_zapret/check_updates/
load_game_filter/load_user_lists) that did nothing and could fork bomb.
Add root check with clear 'sudo ' message.
3. autotest.sh: Fix typo '2&1' -> '2>&1' (bash parse error on cleanup).
Remove redundant 'sudo' when already root. Properly kill strategy wrapper
PID before cleanup_firewall to avoid nfqws orphan processes.
4. service.sh: Add root check at main() entry. Remove nested 'sudo' inside
already-root scripts (systemctl cp/daemon-reload/...). Fix recursive
'bash remove_services' -> call service_remove directly.
5. lib/functions.sh: Fix stray space before detect_distro(). Add check_root()
helper for all scripts. Add missing fake-bin warning in check_nfqws().
6. setup.sh / install_nfqws.sh / install.sh: Add root check. Remove nested
'sudo' inside package manager calls. Fix EUID portability (use id -u fallback).
26 files changed. All 19 strategy configs now produce valid nfqws arguments.