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>
31 lines
3 KiB
Markdown
31 lines
3 KiB
Markdown
# winws2 без Cygwin
|
||
|
||
Это форк [bol-van/zapret2](https://github.com/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` — подтянуть оригинал, собрать, проверить, отправить.
|
||
|
||
## Сборка
|
||
|
||
```sh
|
||
# один раз: распаковать llvm-mingw (вариант msvcrt) в ~/tools/llvm-mingw
|
||
nfq2/winnative/build.sh
|
||
nfq2/winnative/tests/run.sh
|
||
```
|
||
|
||
LuaJIT и zlib скрипт скачивает и собирает сам.
|