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 ],
|
telegram_diagnose: [ "service/telegram.uc", "diagnose", 0 ],
|
||||||
validate_nfqws_strategy_json: [ "diagnostics/runtime.uc", "validate-nfqws-strategy-json", 1 ],
|
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_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_start: [ "diagnostics/fuzzer.uc", "start", 6 ],
|
||||||
fuzzer_status: [ "diagnostics/fuzzer.uc", "status", 0 ],
|
fuzzer_status: [ "diagnostics/fuzzer.uc", "status", 0 ],
|
||||||
fuzzer_stop: [ "diagnostics/fuzzer.uc", "stop", 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 TAILSCALE_RUNTIME_UC = LIB_DIR + "/providers/tailscale/runtime.uc";
|
||||||
const ZAPRET_VALIDATOR_UC = LIB_DIR + "/providers/zapret/validator.uc";
|
const ZAPRET_VALIDATOR_UC = LIB_DIR + "/providers/zapret/validator.uc";
|
||||||
const ZAPRET2_VALIDATOR_UC = LIB_DIR + "/providers/zapret2/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 as_string = common.as_string;
|
||||||
let shell_quote = common.shell_quote;
|
let shell_quote = common.shell_quote;
|
||||||
@@ -1346,6 +1347,15 @@ function validate_nfqws2_strategy_json(raw_opt) {
|
|||||||
return 0;
|
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) {
|
function url_host(value) {
|
||||||
return helper_output("url-get-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] || ""));
|
exit(validate_nfqws_strategy_json(ARGV[1] || ""));
|
||||||
else if (mode == "validate-nfqws2-strategy-json")
|
else if (mode == "validate-nfqws2-strategy-json")
|
||||||
exit(validate_nfqws2_strategy_json(ARGV[1] || ""));
|
exit(validate_nfqws2_strategy_json(ARGV[1] || ""));
|
||||||
|
else if (mode == "validate-byedpi-strategy-json")
|
||||||
|
exit(validate_byedpi_strategy_json(ARGV[1] || ""));
|
||||||
else {
|
else {
|
||||||
warn("Usage: diagnostics/runtime.uc <operation> ...\n");
|
warn("Usage: diagnostics/runtime.uc <operation> ...\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|||||||
@@ -76,4 +76,12 @@ UCODE
|
|||||||
|
|
||||||
ucode -L "$TACHYON_LIB" "$WORK_DIR/require-byedpi-validator.uc"
|
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'
|
printf 'ByeDPI validator checks passed\n'
|
||||||
|
|||||||
Reference in New Issue
Block a user