Some checks failed
build.yml / winws2 native: stress test of the graceful stop (push) Failing after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 KiB
3 KiB
winws2 без Cygwin
Это форк bol-van/zapret2. Отличие одно: winws2.exe собирается как обычная программа Windows и не требует cygwin1.dll. Файлы автора почти не тронуты, всё своё лежит в этой папке, поэтому правки оригинала подтягиваются автоматически.
Что добавлено
- Сборка под Windows компилятором llvm-mingw прямо на Linux:
nfq2/winnative/build.sh. Результат —binaries/my/winnative-x86_64/winws2.exe, рядом нужны толькоWinDivert.dllи драйвер. - Пакетная отправка. Пакеты, которые движок не менял, возвращаются в сеть пачкой одним вызовом. Отключается переменной окружения
WINWS2_NO_BATCH=1. - Управление без сигналов Linux:
winws2 --wn-signal=<hup|usr1|usr2|term>[:<pid>].hupперечитывает списки,usr1иusr2печатают служебные таблицы,termаккуратно останавливает движок. Без номера процесса команда уходит всем запущенным winws2. - Файл конфигурации любого размера.
@файли$файлчитаются целиком; путь может содержать пробелы и русские буквы. - Быстрый журнал отладки: файл журнала открывается один раз, а не на каждую строку.
Как устроено
compat.hподключается к каждому файлу автора и изображает для него окружение Cygwin.compat.cзаменяет функции Cygwin: файлы с путями в UTF-8, преобразование путей, сигналы.args.cразбирает командную строку и@файлпо тем же правилам, что Cygwin. Отличие: фигурные скобки без кавычек не раскрываются.batch.c— пакетная отправка.tests/run.sh— проверки разбора аргументов, запускаются на Linux.tests/stop_race.py— серия «запуск — остановка» на Windows: ловит запись опоздавшего пакета в освобождённый буфер при остановке.sync-upstream.sh— подтянуть оригинал, собрать, проверить, отправить.
Сборка
# один раз: распаковать llvm-mingw (вариант msvcrt) в ~/tools/llvm-mingw
nfq2/winnative/build.sh
nfq2/winnative/tests/run.sh
LuaJIT и zlib скрипт скачивает и собирает сам.