Версия 0.5.3
CI / Линт и типы (push) Canceled after 0s
CI / Сборка (Windows) (push) Canceled after 0s
CI / Сборка (Linux) (push) Canceled after 0s

Добавлена сборка под Linux: nfqws + правила nftables (NFQUEUE) вместо
socks-прокси или службы Windows. Повышение прав — pkexec на каждое
включение/выключение, без службы и без автозапуска.

Стратегии переиспользуют существующий набор Flowseal (strategies.win32.generated.ts):
--wf-tcp/--wf-udp уходят в правила nftables, остальное — в nfqws как есть.
Все правила nftables держат bypass, поэтому упавший или выключенный демон
не рвёт пользователю сеть.

Помощник (resources/linux-helper/rknboost-helper.sh) и бинарник nfqws перед
каждым запуском копируются в userData: root не может прочитать файлы внутри
AppImage (FUSE-примонтирован без allow_other), а обычная файловая система
на диске ему доступна независимо от прав.

Заодно:
- починен баг генератора стратегий (^! не разэкранировался в !, ломало
  fake-tls-auto и на Windows тоже);
- карточка обхода теперь показывает текст ошибки независимо от state;
- счётчик auto-hostlist в настройках больше не привязан к !isWindows;
- CI: отдельная джоба сборки под Linux на ubuntu-latest.
This commit is contained in:
2026-09-04 10:26:00 +03:00
parent 0842c4d4a5
commit 2df1c00516
20 changed files with 956 additions and 78 deletions
+5
View File
@@ -97,6 +97,11 @@ function parseBatFile(filename, content) {
// Мы передаём argv напрямую в spawn (без шелла) — кавычки внутри значения
// остались бы буквальными символами в имени файла, поэтому убираем везде.
.map((t) => t.replaceAll('"', ''))
// `^!` — экранирование `!` в cmd.exe (в .bat включён enabledelayedexpansion, где `!`
// иначе разворачивался бы как переменная). cmd.exe снимает его сам перед запуском
// winws.exe; здесь командную строку разбираем руками, и `^` иначе остался бы буквально
// в значении. Реальное значение zapret ожидает — `!` («'!' = standard fake» в readme).
.map((t) => t.replaceAll('=^!', '=!'))
.map(resolvePlaceholders)
if (tokens.length < 5)