Template
1
0
mirror of https://github.com/bol-van/zapret2.git synced 2026-03-20 16:25:49 +00:00

update docs

This commit is contained in:
bol-van
2025-12-19 18:52:02 +03:00
parent 72f0b61cc0
commit 4d9108822c

View File

@@ -3239,3 +3239,120 @@ function standard_failure_detector(desync, crec)
http редиректом от DPI считается то же самое , что и в [автохослистах](#детектор-неудач-автохостлистов).
## Оркестраторы
### circular
```
function circular(ctx, desync)
```
* arg: (standard host storage)(#automate_host_record)
* arg: (standard checker)(#automate_failure_check)
* arg: (только для стандартного детектора) (standard success detector)(#standard_success_detector)
* arg: (только для стандартного детектора) (standard failure detector)(#standard_failure_detector)
Оркестратор позволяет считать неудачи и менять стратегии по кругу по достижению счетчиком неудач целевого значения fails. Все последующие инстансы маркируются аргументом "strategy", который содержит номер стратегии, начиная от 1. Инстансы, не имеющие аргумента "strategy", circular не вызывает. Номера стратегии должны идти непрерывно от 1 до последней, промежутки не допускаются, иначе вызывается error. Если в любом инстансе стратегии N имеется аргумент "final", эта стратегия является последней - дальнейшее хождение по кругу блокируется.
Пример запуска :
```
--lua-desync=circular:fails=4:retrans=2:maxseq=16384
--lua-desync=argdebug:v=1.1:strategy=1
--lua-desync=argdebug:v=1.2:strategy=1
--lua-desync=argdebug:v=2.1:strategy=2
--lua-desync=argdebug:v=3.1:strategy=3:final
--lua-desync=argdebug:v=3.2:strategy=3
--lua-desync=argdebug:v=3.3:strategy=3
```
Вместо реальных стратегий в примере используется вывод отладочной информации, чтобы проследить операции circular в debug log. Имеется 3 стратегии. 1-я стратегия включает 2 инстанса, 2-я - 1, 3-я - 3. 3-я стратегия является финальной, переход к 1 блокируется. Тренироваться нужно, дергая заблокированные сайты через curl, чтобы увидеть работу детектора неудач.
### repeater
```
function repeater(ctx, desync)
```
* arg: instances - сколько ближайших инстансов повторять
* arg: repeats - количество повторов
* arg: stop - не проигрывать однократно последующие инстансы после "instances"
* arg: clear - очистить execution plan после повторений
Смысл repeater заключен в самом названии - он повторяет последующие инстансы в количестве instances repeats раз. Повторение идет по принципу 1-2-3-1-2-3-1-2-3-4-5-6. 4-5-6 в данном случае - последующие за 1-2-3 инстансы, если instances=3. Если задано stop или clear, 4-5-6 не вызываются. clear дополнительно очищает execution plan - бывает нужно для взаимодействия с вышестоящими оркестраторами.
repeater может сколько угодно раз быть вложенным.
В примере последовательность вызова получается : 1 1 1 2 2 2 1 1 1 2 2 2 3.
Параметр stop у вложенных инстансов не позволяет выполнить инстансы, не относящиеся к собственному циклу повтора. Первый repeater не огранчен stop, поэтому он выполняет 3.
```
--lua-desync=repeater:repeats=2:instances=4
--lua-desync=repeater:repeats=3:stop --lua-desync=argdebug:v=1
--lua-desync=repeater:repeats=3:stop --lua-desync=argdebug:v=2
--lua-desync=argdebug:v=3
```
### condition
```
function condition(ctx, desync)
```
* arg: iff - имя функции условия, возвращающей boolean
* arg: neg - инвертировать значение iff. по умолчанию - false
condition вызывает iff. если iff xor neg = true, выполняются все инстансы plan, иначе план очищается.
### stopif
```
function condition(ctx, desync)
```
* arg: iff - имя функции условия, возвращающей boolean
* arg: neg - инвертировать значение iff. по умолчанию - false
stopif вызывает iff. если iff xor neg = true, план очищается, иначе не делается ничего.
stopif может быть полезен как вложенный оркестратор. Например, его можно использовать с circular, чтобы блокировать выполнение стратегий при определенных условиях. condition для этих целей не подходит, потому что ничего не знает о вышестоящих оркестраторах, не знает о параметре "strategy", и будет выполнять инстансы без разбору до конца. stopif очистит план, тем самым прекратив дальнейшее выполнение вышестоящего оркестратора.
### iff функции
Они используются в оркестраторах condition и stopif. Могут содержать любую логику, которую можно запрограммировать на LUA. В базовом комплекте есть несколько iff функций для демонстрации возможностей и тестирования.
#### cond_true
```
function cond_true(desync)
```
Всегда true
#### cond_false
```
function cond_true(desync)
```
Всегда false
#### cond_random
```
function cond_random(desync)
```
* arg: percent - процент выпадения true. по умолчанию 50
Случайное значение true с вероятностью percent, иначе false.
#### cond_payload_str
```
function cond_payload_str(desync)
```
* arg: pattern - строка, которая ищется в пейлоаде
Возвращает true, если в desync.dis.payload присутствует подстрока pattern.
Это простейший сигнатурый детектор. Если C код не распознает нужный вам протокол, вы можете написать свой сигнатурный детектор и запускать последующие инстансы под оркестратором condition с вашим детектором в качестве iff.