fix(awg): dual-schema AWG 3.1 for extended 2.7.0 & lx, add ru translations

This commit is contained in:
Dushnilin
2026-09-05 12:12:01 +03:00
parent a4a757223f
commit b69ebf32f5
8 changed files with 1519 additions and 1381 deletions
+2
View File
@@ -1,6 +1,8 @@
import fs from 'fs/promises'; import fs from 'fs/promises';
const dictionary = { const dictionary = {
"AmneziaWG (Cloudflare WARP) configuration generated and loaded successfully!": "Конфигурация AmneziaWG (Cloudflare WARP) успешно сгенерирована и загружена!",
"Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (WireGuard). The profile has been automatically set to 2.0 so the connection works properly. Versions 3.0 and 3.1 require an AmneziaWG server via 'Import .conf'.": "Примечание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (WireGuard). Профиль автоматически переключен на версию 2.0 для корректной работы. Для версий 3.0 и 3.1 используйте свой сервер AmneziaWG через кнопку «Импорт .conf».",
"Service Health Check": "Проверка доступности сервисов", "Service Health Check": "Проверка доступности сервисов",
"Automated DPI Strategy Fuzzer & Auto-Tuner": "Автоматический подборщик и оптимизатор стратегий DPI", "Automated DPI Strategy Fuzzer & Auto-Tuner": "Автоматический подборщик и оптимизатор стратегий DPI",
"Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.": "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости.", "Benchmarks a suite of packet desynchronization strategies in an isolated sandbox without disrupting active traffic, ranking them by latency, TTFB, and throughput.": "Тестирует набор стратегий десинхронизации пакетов в изолированном сэндбоксе без влияния на активный трафик и ранжирует их по задержке, TTFB и скорости.",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+17 -11
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TACHYON\n" "Project-Id-Version: TACHYON\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-05 10:59+0300\n" "POT-Creation-Date: 2026-09-05 12:07+0300\n"
"PO-Revision-Date: 2026-09-05 10:59+0300\n" "PO-Revision-Date: 2026-09-05 12:07+0300\n"
"Last-Translator: Dushnilin\n" "Last-Translator: Dushnilin\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: ru\n" "Language: ru\n"
@@ -416,6 +416,15 @@ msgstr "Всегда блокировать эти домены для всех
msgid "Always visible" msgid "Always visible"
msgstr "Всегда включено" msgstr "Всегда включено"
msgid "AmneziaWG (Cloudflare WARP) configuration generated and loaded successfully!"
msgstr "Конфигурация AmneziaWG (Cloudflare WARP) успешно сгенерирована и загружена!"
msgid "AmneziaWG 3.0 / 3.1 content padding range, e.g. 38-104"
msgstr "Диапазон дополнительного паддинга контента AmneziaWG 3.0 / 3.1, например 38-104"
msgid "AmneziaWG 3.0 / 3.1 header protection key"
msgstr "Ключ защиты заголовков AmneziaWG 3.0 / 3.1"
msgid "AmneziaWG 3.1 content padding range, e.g. 38-104" msgid "AmneziaWG 3.1 content padding range, e.g. 38-104"
msgstr "" msgstr ""
@@ -3020,6 +3029,9 @@ msgstr "Не запущено"
msgid "Not set" msgid "Not set"
msgstr "Не задано" msgstr "Не задано"
msgid "Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (WireGuard). The profile has been automatically set to 2.0 so the connection works properly. Versions 3.0 and 3.1 require an AmneziaWG server via 'Import .conf'."
msgstr "Примечание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (WireGuard). Профиль автоматически переключен на версию 2.0 для корректной работы. Для версий 3.0 и 3.1 используйте свой сервер AmneziaWG через кнопку «Импорт .conf»."
msgid "Notify in Telegram" msgid "Notify in Telegram"
msgstr "Уведомлять в Telegram" msgstr "Уведомлять в Telegram"
@@ -3395,6 +3407,9 @@ msgstr "Защита"
msgid "Protocol" msgid "Protocol"
msgstr "Протокол" msgstr "Протокол"
msgid "Protocol version: 2.0 (standard headers, WARP compatible), 3.0 (header protection key, padding ranges), or 3.1 (header protection key, padding ranges, advanced timers)"
msgstr "Версия протокола: 2.0 (стандартные заголовки, совместимо с WARP), 3.0 (ключ защиты заголовков, диапазоны паддинга), или 3.1 (ключ защиты заголовков, диапазоны паддинга, расширенные таймеры)"
msgid "Protocol version: 2.0 (standard integer headers) or 3.1 (header protection key, padding ranges, advanced timers)" msgid "Protocol version: 2.0 (standard integer headers) or 3.1 (header protection key, padding ranges, advanced timers)"
msgstr "" msgstr ""
@@ -5912,17 +5927,8 @@ msgstr "AmneziaWG 3.0"
msgid "AmneziaWG 3.1" msgid "AmneziaWG 3.1"
msgstr "AmneziaWG 3.1" msgstr "AmneziaWG 3.1"
msgid "Protocol version: 2.0 (standard headers, WARP compatible), 3.0 (header protection key, padding ranges), or 3.1 (header protection key, padding ranges, advanced timers)"
msgstr "Версия протокола: 2.0 (стандартные заголовки, совместимо с WARP), 3.0 (ключ защиты заголовков, диапазоны паддинга), или 3.1 (ключ защиты заголовков, диапазоны паддинга, расширенные таймеры)"
msgid "AmneziaWG %s configuration generated and loaded successfully!" msgid "AmneziaWG %s configuration generated and loaded successfully!"
msgstr "Конфигурация AmneziaWG %s успешно сгенерирована и загружена!" msgstr "Конфигурация AmneziaWG %s успешно сгенерирована и загружена!"
msgid "Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (standard headers). For Cloudflare WARP, select version 2.0. Versions 3.0 and 3.1 are intended for dedicated AmneziaWG servers." msgid "Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (standard headers). For Cloudflare WARP, select version 2.0. Versions 3.0 and 3.1 are intended for dedicated AmneziaWG servers."
msgstr "Обратите внимание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (стандартные заголовки). Для Cloudflare WARP выберите версию 2.0. Версии 3.0 и 3.1 предназначены для выделенных серверов AmneziaWG." msgstr "Обратите внимание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (стандартные заголовки). Для Cloudflare WARP выберите версию 2.0. Версии 3.0 и 3.1 предназначены для выделенных серверов AmneziaWG."
msgid "AmneziaWG 3.0 / 3.1 header protection key"
msgstr "Ключ защиты заголовков AmneziaWG 3.0 / 3.1"
msgid "AmneziaWG 3.0 / 3.1 content padding range, e.g. 38-104"
msgstr "Диапазон дополнительного паддинга контента AmneziaWG 3.0 / 3.1, например 38-104"
+17 -11
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: TACHYON\n" "Project-Id-Version: TACHYON\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-09-05 10:59+0300\n" "POT-Creation-Date: 2026-09-05 12:07+0300\n"
"PO-Revision-Date: 2026-09-05 10:59+0300\n" "PO-Revision-Date: 2026-09-05 12:07+0300\n"
"Last-Translator: Dushnilin\n" "Last-Translator: Dushnilin\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: ru\n" "Language: ru\n"
@@ -416,6 +416,15 @@ msgstr "Всегда блокировать эти домены для всех
msgid "Always visible" msgid "Always visible"
msgstr "Всегда включено" msgstr "Всегда включено"
msgid "AmneziaWG (Cloudflare WARP) configuration generated and loaded successfully!"
msgstr "Конфигурация AmneziaWG (Cloudflare WARP) успешно сгенерирована и загружена!"
msgid "AmneziaWG 3.0 / 3.1 content padding range, e.g. 38-104"
msgstr "Диапазон дополнительного паддинга контента AmneziaWG 3.0 / 3.1, например 38-104"
msgid "AmneziaWG 3.0 / 3.1 header protection key"
msgstr "Ключ защиты заголовков AmneziaWG 3.0 / 3.1"
msgid "AmneziaWG 3.1 content padding range, e.g. 38-104" msgid "AmneziaWG 3.1 content padding range, e.g. 38-104"
msgstr "" msgstr ""
@@ -3020,6 +3029,9 @@ msgstr "Не запущено"
msgid "Not set" msgid "Not set"
msgstr "Не задано" msgstr "Не задано"
msgid "Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (WireGuard). The profile has been automatically set to 2.0 so the connection works properly. Versions 3.0 and 3.1 require an AmneziaWG server via 'Import .conf'."
msgstr "Примечание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (WireGuard). Профиль автоматически переключен на версию 2.0 для корректной работы. Для версий 3.0 и 3.1 используйте свой сервер AmneziaWG через кнопку «Импорт .conf»."
msgid "Notify in Telegram" msgid "Notify in Telegram"
msgstr "Уведомлять в Telegram" msgstr "Уведомлять в Telegram"
@@ -3395,6 +3407,9 @@ msgstr "Защита"
msgid "Protocol" msgid "Protocol"
msgstr "Протокол" msgstr "Протокол"
msgid "Protocol version: 2.0 (standard headers, WARP compatible), 3.0 (header protection key, padding ranges), or 3.1 (header protection key, padding ranges, advanced timers)"
msgstr "Версия протокола: 2.0 (стандартные заголовки, совместимо с WARP), 3.0 (ключ защиты заголовков, диапазоны паддинга), или 3.1 (ключ защиты заголовков, диапазоны паддинга, расширенные таймеры)"
msgid "Protocol version: 2.0 (standard integer headers) or 3.1 (header protection key, padding ranges, advanced timers)" msgid "Protocol version: 2.0 (standard integer headers) or 3.1 (header protection key, padding ranges, advanced timers)"
msgstr "" msgstr ""
@@ -5912,17 +5927,8 @@ msgstr "AmneziaWG 3.0"
msgid "AmneziaWG 3.1" msgid "AmneziaWG 3.1"
msgstr "AmneziaWG 3.1" msgstr "AmneziaWG 3.1"
msgid "Protocol version: 2.0 (standard headers, WARP compatible), 3.0 (header protection key, padding ranges), or 3.1 (header protection key, padding ranges, advanced timers)"
msgstr "Версия протокола: 2.0 (стандартные заголовки, совместимо с WARP), 3.0 (ключ защиты заголовков, диапазоны паддинга), или 3.1 (ключ защиты заголовков, диапазоны паддинга, расширенные таймеры)"
msgid "AmneziaWG %s configuration generated and loaded successfully!" msgid "AmneziaWG %s configuration generated and loaded successfully!"
msgstr "Конфигурация AmneziaWG %s успешно сгенерирована и загружена!" msgstr "Конфигурация AmneziaWG %s успешно сгенерирована и загружена!"
msgid "Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (standard headers). For Cloudflare WARP, select version 2.0. Versions 3.0 and 3.1 are intended for dedicated AmneziaWG servers." msgid "Notice: Cloudflare WARP edge servers only support AmneziaWG 2.0 (standard headers). For Cloudflare WARP, select version 2.0. Versions 3.0 and 3.1 are intended for dedicated AmneziaWG servers."
msgstr "Обратите внимание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (стандартные заголовки). Для Cloudflare WARP выберите версию 2.0. Версии 3.0 и 3.1 предназначены для выделенных серверов AmneziaWG." msgstr "Обратите внимание: серверы Cloudflare WARP поддерживают только AmneziaWG 2.0 (стандартные заголовки). Для Cloudflare WARP выберите версию 2.0. Версии 3.0 и 3.1 предназначены для выделенных серверов AmneziaWG."
msgid "AmneziaWG 3.0 / 3.1 header protection key"
msgstr "Ключ защиты заголовков AmneziaWG 3.0 / 3.1"
msgid "AmneziaWG 3.0 / 3.1 content padding range, e.g. 38-104"
msgstr "Диапазон дополнительного паддинга контента AmneziaWG 3.0 / 3.1, например 38-104"
File diff suppressed because it is too large Load Diff
@@ -1328,54 +1328,6 @@ function add_awg_endpoint(config, section) {
if (i3 != "" && i3 != "0") endpoint.i3 = i3; if (i3 != "" && i3 != "0") endpoint.i3 = i3;
if (i4 != "" && i4 != "0") endpoint.i4 = i4; if (i4 != "" && i4 != "0") endpoint.i4 = i4;
if (i5 != "" && i5 != "0") endpoint.i5 = i5; if (i5 != "" && i5 != "0") endpoint.i5 = i5;
// AmneziaWG version handling: 2.0, 3.0, and 3.1 (sing-box-lx v1.14.0-lx.32+)
let awg_ver = option(section, "awg_version", "");
if (awg_ver == "") {
if (option(section, "awg_rekey_after_time", "") != "" || option(section, "awg_rekey_timeout", "") != "" ||
option(section, "awg_reject_after_time", "") != "" || option(section, "awg_keepalive_timeout", "") != "" ||
option(section, "awg_max_handshake_attempts", "") != "") {
awg_ver = "3.1";
} else if (option(section, "awg_header_protection_key", "") != "" || option(section, "awg_content_padding_addition", "") != "") {
awg_ver = "3.0";
} else {
awg_ver = "2.0";
}
}
if (awg_ver == "3.0" || awg_ver == "3.1") {
let hpk = option(section, "awg_header_protection_key", "");
if (hpk != "") {
// Ensure S1-S4 are >= 12 if header_protection_key is set (sing-box-lx schema requirement)
if (endpoint.s1 < 12) endpoint.s1 = 20;
if (endpoint.s2 < 12) endpoint.s2 = 20;
if (endpoint.s3 < 12) endpoint.s3 = 20;
if (endpoint.s4 < 12) endpoint.s4 = 20;
endpoint.header_protection_key = hpk;
}
let cpa = option(section, "awg_content_padding_addition", "");
if (cpa != "") endpoint.content_padding_addition = cpa;
}
if (awg_ver == "3.1") {
let rka = option(section, "awg_rekey_after_time", "");
if (rka != "") endpoint.rekey_after_time = rka;
let rkt = option(section, "awg_rekey_timeout", "");
if (rkt != "") endpoint.rekey_timeout = rkt;
let rja = option(section, "awg_reject_after_time", "");
if (rja != "") endpoint.reject_after_time = rja;
let kpt = option(section, "awg_keepalive_timeout", "");
if (kpt != "") endpoint.keepalive_timeout = kpt;
let mha = option(section, "awg_max_handshake_attempts", "");
if (mha != "") endpoint.max_handshake_attempts = mha;
}
// j1-j3/itime are sing-box-extended-only fields and are not part of
// the lx AWG 2.0 schema, so they are intentionally not emitted here.
} else { } else {
if (i1 != "") amnezia.i1 = i1; if (i1 != "") amnezia.i1 = i1;
if (i2 != "") amnezia.i2 = i2; if (i2 != "") amnezia.i2 = i2;
@@ -1393,9 +1345,81 @@ function add_awg_endpoint(config, section) {
if (j3 != "") amnezia.j3 = j3; if (j3 != "") amnezia.j3 = j3;
if (itime > 0) amnezia.itime = itime; if (itime > 0) amnezia.itime = itime;
} }
endpoint.amnezia = amnezia; endpoint.amnezia = amnezia;
} }
// AmneziaWG version handling: 2.0, 3.0, and 3.1 (sing-box-lx & sing-box-extended 2.7.0+)
let awg_ver = option(section, "awg_version", "");
if (awg_ver == "") {
if (option(section, "awg_rekey_after_time", "") != "" || option(section, "awg_rekey_timeout", "") != "" ||
option(section, "awg_reject_after_time", "") != "" || option(section, "awg_keepalive_timeout", "") != "" ||
option(section, "awg_max_handshake_attempts", "") != "") {
awg_ver = "3.1";
} else if (option(section, "awg_header_protection_key", "") != "" || option(section, "awg_content_padding_addition", "") != "") {
awg_ver = "3.0";
} else {
awg_ver = "2.0";
}
}
if (awg_ver == "3.0" || awg_ver == "3.1") {
let hpk = option(section, "awg_header_protection_key", "");
if (hpk != "") {
if (is_lx) {
if (endpoint.s1 < 12) endpoint.s1 = 20;
if (endpoint.s2 < 12) endpoint.s2 = 20;
if (endpoint.s3 < 12) endpoint.s3 = 20;
if (endpoint.s4 < 12) endpoint.s4 = 20;
endpoint.header_protection_key = hpk;
} else {
if (endpoint.amnezia.s1 < 12) endpoint.amnezia.s1 = 20;
if (endpoint.amnezia.s2 < 12) endpoint.amnezia.s2 = 20;
if (endpoint.amnezia.s3 < 12) endpoint.amnezia.s3 = 20;
if (endpoint.amnezia.s4 < 12) endpoint.amnezia.s4 = 20;
endpoint.amnezia.header_protection_key = hpk;
}
}
let cpa = option(section, "awg_content_padding_addition", "");
if (cpa != "") {
if (is_lx) endpoint.content_padding_addition = cpa;
else endpoint.amnezia.content_padding_addition = cpa;
}
}
if (awg_ver == "3.1") {
let rka = option(section, "awg_rekey_after_time", "");
if (rka != "") {
if (is_lx) endpoint.rekey_after_time = rka;
else endpoint.amnezia.rekey_after_time = rka;
}
let rkt = option(section, "awg_rekey_timeout", "");
if (rkt != "") {
if (is_lx) endpoint.rekey_timeout = rkt;
else endpoint.amnezia.rekey_timeout = rkt;
}
let rja = option(section, "awg_reject_after_time", "");
if (rja != "") {
if (is_lx) endpoint.reject_after_time = rja;
else endpoint.amnezia.reject_after_time = rja;
}
let kpt = option(section, "awg_keepalive_timeout", "");
if (kpt != "") {
if (is_lx) endpoint.keepalive_timeout = kpt;
else endpoint.amnezia.keepalive_timeout = kpt;
}
let mha = option(section, "awg_max_handshake_attempts", "");
if (mha != "") {
if (is_lx) endpoint.max_handshake_attempts = mha;
else endpoint.amnezia.max_handshake_attempts = mha;
}
}
let detour = option(section, "awg_detour", ""); let detour = option(section, "awg_detour", "");
if (detour != "") { if (detour != "") {
endpoint.detour = outbound_tag(detour); endpoint.detour = outbound_tag(detour);
+56 -16
View File
@@ -336,7 +336,28 @@ function add_standard_inbound(config, section, protocol, tag_name) {
let j3 = awg_cps_option(section, "awg_j3"); let j3 = awg_cps_option(section, "awg_j3");
let itime = int_option(section, "awg_itime", "0"); let itime = int_option(section, "awg_itime", "0");
if (is_lx) { let sb_variant_file = getenv("SB_VARIANT_STATE_FILE") || "/etc/tachyon/sing-box-variant";
let sb_version_file = getenv("SB_VERSION_STATE_FILE") || "/etc/tachyon/sing-box-version";
let sb_version_val = trim(fs.readfile(sb_version_file) || "");
let is_lx = sb_version_val != "" ? (index(sb_version_val, "-lx") >= 0) : (trim(fs.readfile(sb_variant_file) || "") == "lx");
// AmneziaWG version handling: 2.0, 3.0, and 3.1 (sing-box-lx v1.14.0-lx.32+)
let awg_ver = option(section, "awg_version", "");
if (awg_ver == "") {
if (option(section, "awg_rekey_after_time", "") != "" || option(section, "awg_rekey_timeout", "") != "" ||
option(section, "awg_reject_after_time", "") != "" || option(section, "awg_keepalive_timeout", "") != "" ||
option(section, "awg_max_handshake_attempts", "") != "") {
awg_ver = "3.1";
} else if (option(section, "awg_header_protection_key", "") != "" || option(section, "awg_content_padding_addition", "") != "") {
awg_ver = "3.0";
} else {
awg_ver = "2.0";
}
}
let is_lx_schema = is_lx;
if (is_lx_schema) {
// sing-box-lx expects AWG fields at the inbound root (AWG 2.0 schema); // sing-box-lx expects AWG fields at the inbound root (AWG 2.0 schema);
// magic headers accept a single value or an AWG 2.0 "min-max" range. // magic headers accept a single value or an AWG 2.0 "min-max" range.
// j1-j3/itime are sing-box-extended-only and are not emitted here. // j1-j3/itime are sing-box-extended-only and are not emitted here.
@@ -357,20 +378,6 @@ function add_standard_inbound(config, section, protocol, tag_name) {
if (i4 != "" && i4 != "0") inbound.i4 = i4; if (i4 != "" && i4 != "0") inbound.i4 = i4;
if (i5 != "" && i5 != "0") inbound.i5 = i5; if (i5 != "" && i5 != "0") inbound.i5 = i5;
// AmneziaWG version handling: 2.0, 3.0, and 3.1 (sing-box-lx v1.14.0-lx.32+)
let awg_ver = option(section, "awg_version", "");
if (awg_ver == "") {
if (option(section, "awg_rekey_after_time", "") != "" || option(section, "awg_rekey_timeout", "") != "" ||
option(section, "awg_reject_after_time", "") != "" || option(section, "awg_keepalive_timeout", "") != "" ||
option(section, "awg_max_handshake_attempts", "") != "") {
awg_ver = "3.1";
} else if (option(section, "awg_header_protection_key", "") != "" || option(section, "awg_content_padding_addition", "") != "") {
awg_ver = "3.0";
} else {
awg_ver = "2.0";
}
}
if (awg_ver == "3.0" || awg_ver == "3.1") { if (awg_ver == "3.0" || awg_ver == "3.1") {
let hpk = option(section, "awg_header_protection_key", ""); let hpk = option(section, "awg_header_protection_key", "");
if (hpk != "") { if (hpk != "") {
@@ -419,6 +426,39 @@ function add_standard_inbound(config, section, protocol, tag_name) {
if (j3 != "") amnezia.j3 = j3; if (j3 != "") amnezia.j3 = j3;
if (itime > 0) amnezia.itime = itime; if (itime > 0) amnezia.itime = itime;
} }
// sing-box-extended 2.7.0+ supports AWG 3.0 / 3.1 inside the amnezia object
if (awg_ver == "3.0" || awg_ver == "3.1") {
let hpk = option(section, "awg_header_protection_key", "");
if (hpk != "") {
if (amnezia.s1 < 12) amnezia.s1 = 20;
if (amnezia.s2 < 12) amnezia.s2 = 20;
if (amnezia.s3 < 12) amnezia.s3 = 20;
if (amnezia.s4 < 12) amnezia.s4 = 20;
amnezia.header_protection_key = hpk;
}
let cpa = option(section, "awg_content_padding_addition", "");
if (cpa != "") amnezia.content_padding_addition = cpa;
}
if (awg_ver == "3.1") {
let rka = option(section, "awg_rekey_after_time", "");
if (rka != "") amnezia.rekey_after_time = rka;
let rkt = option(section, "awg_rekey_timeout", "");
if (rkt != "") amnezia.rekey_timeout = rkt;
let rja = option(section, "awg_reject_after_time", "");
if (rja != "") amnezia.reject_after_time = rja;
let kpt = option(section, "awg_keepalive_timeout", "");
if (kpt != "") amnezia.keepalive_timeout = kpt;
let mha = option(section, "awg_max_handshake_attempts", "");
if (mha != "") amnezia.max_handshake_attempts = mha;
}
inbound.amnezia = amnezia; inbound.amnezia = amnezia;
} }
} }
@@ -428,7 +468,7 @@ function add_standard_inbound(config, section, protocol, tag_name) {
apply_tls(inbound, section, protocol); apply_tls(inbound, section, protocol);
apply_transport(inbound, section, protocol); apply_transport(inbound, section, protocol);
if (protocol == "awg" && is_lx) { if (protocol == "awg" && is_lx_schema) {
let server_port = int_option(section, "awg_server_port", int_option(section, "listen_port", 51820)); let server_port = int_option(section, "awg_server_port", int_option(section, "listen_port", 51820));
inbound.listen_port = server_port; inbound.listen_port = server_port;
delete inbound.listen; delete inbound.listen;