fix(byedpi): исправление валидации стратегий ByeDPI и сохранение в веб-интерфейсе LuCI
- Зарегистрирована команда validate_byedpi_strategy_json в command_spec CLI (/usr/bin/tachyon) - Добавлена функция validate_byedpi_strategy_json и режим validate-byedpi-strategy-json в diagnostics/runtime.uc с вызовом providers/byedpi/validator.uc - Исправлена ошибка 'Unexpected token U' в LuCI, из-за которой отменялось сохранение стратегии ByeDPI в UCI и сбрасывалось на дефолтное значение - Добавлены тесты CLI-валидации стратегий в tests/byedpi_validator.sh
This commit is contained in:
@@ -268,6 +268,7 @@ function command_spec(command) {
|
||||
telegram_diagnose: [ "service/telegram.uc", "diagnose", 0 ],
|
||||
validate_nfqws_strategy_json: [ "diagnostics/runtime.uc", "validate-nfqws-strategy-json", 1 ],
|
||||
validate_nfqws2_strategy_json: [ "diagnostics/runtime.uc", "validate-nfqws2-strategy-json", 1 ],
|
||||
validate_byedpi_strategy_json: [ "diagnostics/runtime.uc", "validate-byedpi-strategy-json", 1 ],
|
||||
fuzzer_start: [ "diagnostics/fuzzer.uc", "start", 6 ],
|
||||
fuzzer_status: [ "diagnostics/fuzzer.uc", "status", 0 ],
|
||||
fuzzer_stop: [ "diagnostics/fuzzer.uc", "stop", 0 ],
|
||||
|
||||
@@ -60,6 +60,7 @@ const BYEDPI_RUNTIME_UC = LIB_DIR + "/providers/byedpi/runtime.uc";
|
||||
const TAILSCALE_RUNTIME_UC = LIB_DIR + "/providers/tailscale/runtime.uc";
|
||||
const ZAPRET_VALIDATOR_UC = LIB_DIR + "/providers/zapret/validator.uc";
|
||||
const ZAPRET2_VALIDATOR_UC = LIB_DIR + "/providers/zapret2/validator.uc";
|
||||
const BYEDPI_VALIDATOR_UC = LIB_DIR + "/providers/byedpi/validator.uc";
|
||||
|
||||
let as_string = common.as_string;
|
||||
let shell_quote = common.shell_quote;
|
||||
@@ -1346,6 +1347,15 @@ function validate_nfqws2_strategy_json(raw_opt) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
function validate_byedpi_strategy_json(raw_opt) {
|
||||
let result = module_capture(BYEDPI_VALIDATOR_UC, [ "validate-json", as_string(raw_opt) ]);
|
||||
if (result.output != "")
|
||||
print(result.output);
|
||||
else
|
||||
print("{\"valid\":false,\"message\":\"ByeDPI validator produced no output\"}\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
function url_host(value) {
|
||||
return helper_output("url-get-host", [ value ]);
|
||||
}
|
||||
@@ -5012,6 +5022,8 @@ else if (mode == "validate-nfqws-strategy-json")
|
||||
exit(validate_nfqws_strategy_json(ARGV[1] || ""));
|
||||
else if (mode == "validate-nfqws2-strategy-json")
|
||||
exit(validate_nfqws2_strategy_json(ARGV[1] || ""));
|
||||
else if (mode == "validate-byedpi-strategy-json")
|
||||
exit(validate_byedpi_strategy_json(ARGV[1] || ""));
|
||||
else {
|
||||
warn("Usage: diagnostics/runtime.uc <operation> ...\n");
|
||||
exit(1);
|
||||
|
||||
@@ -76,4 +76,12 @@ UCODE
|
||||
|
||||
ucode -L "$TACHYON_LIB" "$WORK_DIR/require-byedpi-validator.uc"
|
||||
|
||||
TACHYON_BIN="$ROOT_DIR/tachyon/files/usr/bin/tachyon"
|
||||
cli_valid_json="$(TACHYON_LIB="$TACHYON_LIB" ucode "$TACHYON_BIN" validate_byedpi_strategy_json '--disorder 3 --fake-sni example.org -N')"
|
||||
assert_json_field "$cli_valid_json" valid true
|
||||
|
||||
cli_invalid_json="$(TACHYON_LIB="$TACHYON_LIB" ucode "$TACHYON_BIN" validate_byedpi_strategy_json '--port 1080 --disorder 3')"
|
||||
assert_json_field "$cli_invalid_json" valid false
|
||||
assert_json_field "$cli_invalid_json" needle --port
|
||||
|
||||
printf 'ByeDPI validator checks passed\n'
|
||||
|
||||
Reference in New Issue
Block a user