From e07239e717cbed101ca826ecc45d95d9421a1b65 Mon Sep 17 00:00:00 2001 From: bol-van Date: Fri, 19 Dec 2025 13:49:54 +0300 Subject: [PATCH] update docs --- docs/manual.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/docs/manual.md b/docs/manual.md index fec8d05..c800580 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -3158,3 +3158,84 @@ function automate_conn_record(desync) * arg: hostkey - имя функции генератора host-ключей. если не задано, используется [standard_hostkey](#standard_hostkey) Возвращат таблицу - хранилище состояния автоматизации, привязанное к хосту или IP адресу. Используется 2 ключа - key и hostkey. Итоговое расположение - `autostate.key.hostkey`. Если hostkey получить не удается - возвращается nil. + +## Обслуживание удач и неудач + +Простое, но далеко неточное, обьяснение понятиям "удача" и "неудача" - "сайт открывается" и "сайт не открывается". В логике автоматизации эти состояния абстрактны. Любой процесс может претерпеть удачу или неудачу. Детект состояния удачи или неудачи нужен для подсчета неудач через счетчик. При неудаче счетчик увеличивается, при успехе - сбрасывается, при достижении целевого значения - возвращается признак, по которому внешняя логика может выполнить любое действие. Например, сменить стратегию. + +### automate_failure_counter + +``` +function automate_failure_counter(hrec, crec, fails, maxtime) +``` + +* hrec - [хост хранилище](#automate_host_record) +* crec - [потоковое хранилище](#automate_conn_record) +* fails - целевое количество неудач +* maxtime - время в секундах, после которого с момента предыдущей неудачи следующая неудача начинает счет заново + +Возвращает true, если счетчик достиг значения fails. При этом счетчик сбрасывается. + +### automate_failure_counter_reset + +``` +function automate_failure_counter_reset(hrec) +``` + +* hrec - [хост хранилище](#automate_host_record) + +Сбрасывает значение счетчика. + +## Детекция удач и неудач + +Детектор удач и неудач - это заменяемые функции, берущие в качестве параметров desync и [crec](#automate_conn_record) и возвращающие true , если зафиксирована удача или неудача. + +### automate_failure_check + +``` +function automate_failure_check(desync, hrec, crec) +``` + +* hrec - [хост хранилище](#automate_host_record) +* crec - [потоковое хранилище](#automate_conn_record) +* arg: success_detector - имя функции детектора удач. если не задано, используется standard_success_detector. +* arg: failure_detector - имя функции детектора неудач. если не задано, используется standard_failure_detector. +* arg: fails - целевое значение счетчика неудач. По умолчанию - 3. +* arg: maxtime - максимальное время в секундах между неудачами, после которого счетчик сбрасывается. По умолчанию - 60 сек. + +Функция выполняет ведение счетчика неудач, вызывая детекторы удачи и неудачи. Возвращает true, если счетчик достиг целевого значения. При этом счетчик сбрасывается автоматически. + +### standard_success_detector + +Стандартные детекторы удач и неудач требуют перенаправления входящего и исходящего трафика в обьеме, необходимом для срабатвания их критериев. +По relative sequence - нужны пакеты до указанного rseq + длина максимального пейлоада одного пакета (1460 байт для tcp). + +``` +function standard_success_detector(desync, crec) +``` + +* crec - [потоковое хранилище](#automate_conn_record) +* arg: maxseq - исходящий relative sequence, при достижении которого фиксируется удача. по умолчанию 32768. Смысл : отправлено достаточно много без застревания потока из-за блокировки. +* arg: inseq - входящий relative sequence, при достижении которого фиксируется удача. по умолчанию 4096. Смысл : оппонент прислал достаточно много, чтобы это не было реакцией DPI. +* arg: udp_out, udp_in - принято более udp_in udp пакетов при условии, что udp_out>0. Смысл : оппонент прислал достаточно много, чтобы это не было реакцией DPI. + +Стандартный детектор удач. + +### standard_failure_detector + +``` +function standard_failure_detector(desync, crec) +``` + +* crec - [потоковое хранилище](#automate_conn_record) +* arg: maxseq - считать ретрансмиссии в пределах исходящих relative sequence от 1 до maxseq. По умолчанию - 32768. +* arg: retrans - считать неудачей не менее retrans ретрансмиссий. По умолчанию - 3. +* arg: inseq - считать неудачей RST и http redirect в пределах входящих relative sequence от 1 до inseq. По умолчанию - 4096. +* arg: no_rst - не определять RST как неудачу +* arg: no_http_redirect - не определять http redirect как неудачу +* arg: udp_out, udp_in - считать неудачей ситуацию, когда по потоку отослано >=udp_out пакетов, а принято <=udp_in пакетов + +Стандартный детектор неудач. + +http редиректом от DPI считается то же самое , что и [автохослистах](#детектор-неудач-автохостлистов). +