feat(diagnostics): нативная кнопка проверки сервисов
Реализована нативная проверка сервисов (watchdog, telegram, sing-box) через ucode, избавляя от внешней зависимости forkop-servicecheck.
This commit is contained in:
@@ -366,24 +366,24 @@
|
||||
"call": "AI Doctor Diagnosis",
|
||||
"key": "AI Doctor Diagnosis",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:850",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1206"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:855",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1211"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "AI Doctor Diagnostic Scan in Progress...",
|
||||
"key": "AI Doctor Diagnostic Scan in Progress...",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:822"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:827"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "AI Doctor failed",
|
||||
"key": "AI Doctor failed",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:873",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1212",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1221"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:878",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1217",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1226"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -443,7 +443,7 @@
|
||||
"call": "All fixes applied successfully",
|
||||
"key": "All fixes applied successfully",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1063"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1068"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -552,11 +552,18 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8005"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "An error occurred while checking services.",
|
||||
"key": "An error occurred while checking services.",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:165"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Analyzing system log (logread & errors)",
|
||||
"key": "Analyzing system log (logread & errors)",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:804"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:809"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -584,14 +591,14 @@
|
||||
"call": "Applying all fixes...",
|
||||
"key": "Applying all fixes...",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1052"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1057"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Applying fix",
|
||||
"key": "Applying fix",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1019"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1024"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -733,7 +740,7 @@
|
||||
"call": "Available actions",
|
||||
"key": "Available actions",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:50"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:52"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -814,7 +821,7 @@
|
||||
"call": "Bug report downloaded",
|
||||
"key": "Bug report downloaded",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1346"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1351"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1017,6 +1024,14 @@
|
||||
"src/tachyon/tabs/dashboard/partials/renderSections.ts:859"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Check Custom Domain",
|
||||
"key": "Check Custom Domain",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:115",
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:131"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Check interval",
|
||||
"key": "Check interval",
|
||||
@@ -1026,6 +1041,13 @@
|
||||
"src/tachyon/tabs/dashboard/initController.ts:1230"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Check Services",
|
||||
"key": "Check Services",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:136"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Check timeout after which the server is considered dead",
|
||||
"key": "Check timeout after which the server is considered dead",
|
||||
@@ -1060,35 +1082,35 @@
|
||||
"call": "Checking nftables filtering tables",
|
||||
"key": "Checking nftables filtering tables",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:803"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:808"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Checking sing-box service & DNSmasq",
|
||||
"key": "Checking sing-box service & DNSmasq",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:802"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:807"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Checking WAN interfaces & network routing",
|
||||
"key": "Checking WAN interfaces & network routing",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:801"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:806"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Checking Zapret & ByeDPI rules",
|
||||
"key": "Checking Zapret & ByeDPI rules",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:805"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:810"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Checking, please wait",
|
||||
"key": "Checking, please wait",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1628",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1639",
|
||||
"src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14",
|
||||
"src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15",
|
||||
"src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:15",
|
||||
@@ -1129,17 +1151,17 @@
|
||||
"call": "Checks failed",
|
||||
"key": "Checks failed",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10",
|
||||
"src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26"
|
||||
"src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26",
|
||||
"src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Checks passed",
|
||||
"key": "Checks passed",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13",
|
||||
"src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23",
|
||||
"src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43",
|
||||
"src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13"
|
||||
"src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1249,9 +1271,10 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1717",
|
||||
"src/partials/modal/renderModal.ts:263",
|
||||
"src/tachyon/tabs/dashboard/initController.ts:1085",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1194",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1199",
|
||||
"src/tachyon/tabs/monitoring/initController.ts:884",
|
||||
"src/tachyon/tabs/monitoring/initController.ts:934"
|
||||
"src/tachyon/tabs/monitoring/initController.ts:934",
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:28"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1448,7 +1471,7 @@
|
||||
"places": [
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1693",
|
||||
"src/partials/modal/renderModal.ts:258",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1189"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1194"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1478,7 +1501,7 @@
|
||||
"call": "Current Diagnosis",
|
||||
"key": "Current Diagnosis",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1157"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1162"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1524,6 +1547,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7720"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Custom domain (e.g. google.com)",
|
||||
"key": "Custom domain (e.g. google.com)",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:113"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Custom OpenAI-Compatible API (OpenRouter)",
|
||||
"key": "Custom OpenAI-Compatible API (OpenRouter)",
|
||||
@@ -1698,7 +1728,7 @@
|
||||
"call": "Disable autostart",
|
||||
"key": "Disable autostart",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:86"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:88"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -1975,17 +2005,17 @@
|
||||
"call": "Doctor failed",
|
||||
"key": "Doctor failed",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:715",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:753",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:761"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:720",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:758",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:766"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Doctor repair",
|
||||
"key": "Doctor repair",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:731",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:740"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:736",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:745"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2250,7 +2280,7 @@
|
||||
"call": "Enable autostart",
|
||||
"key": "Enable autostart",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:96"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:98"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2623,7 +2653,7 @@
|
||||
"call": "Failed to apply fix",
|
||||
"key": "Failed to apply fix",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1039"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1044"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2662,11 +2692,18 @@
|
||||
"src/tachyon/tabs/updates/initController.ts:774"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Failed to execute service check.",
|
||||
"key": "Failed to execute service check.",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:44"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Failed to generate bug report",
|
||||
"key": "Failed to generate bug report",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1349"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1354"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2684,6 +2721,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8246"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Failed to parse service check results.",
|
||||
"key": "Failed to parse service check results.",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:52"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Failed to parse WARP config:",
|
||||
"key": "Failed to parse WARP config:",
|
||||
@@ -2817,6 +2861,13 @@
|
||||
"src/tachyon/methods/custom/getDashboardSections.ts:654"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Fetching service status, please wait...",
|
||||
"key": "Fetching service status, please wait...",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:19"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Filter the servers that will be displayed on the dashboard.",
|
||||
"key": "Filter the servers that will be displayed on the dashboard.",
|
||||
@@ -2842,14 +2893,14 @@
|
||||
"call": "Fix All",
|
||||
"key": "Fix All",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1050"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1055"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Fix applied",
|
||||
"key": "Fix applied",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1034"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1039"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2864,8 +2915,8 @@
|
||||
"call": "Fixed",
|
||||
"key": "Fixed",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:737",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1030"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:742",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1035"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -2942,7 +2993,7 @@
|
||||
"call": "Generate bug report",
|
||||
"key": "Generate bug report",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:151"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:163"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -3029,14 +3080,14 @@
|
||||
"call": "Get global check",
|
||||
"key": "Get global check",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:105"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:107"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Global check",
|
||||
"key": "Global check",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:691"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:696"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -3245,6 +3296,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9549"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "HTTP (ms)",
|
||||
"key": "HTTP (ms)",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:67"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "HTTP error",
|
||||
"key": "HTTP error",
|
||||
@@ -4026,6 +4084,13 @@
|
||||
"src/validators/validateVmessUrl.ts:68"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "IP / DNS",
|
||||
"key": "IP / DNS",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "IP Addresses (IP CIDR)",
|
||||
"key": "IP Addresses (IP CIDR)",
|
||||
@@ -4065,15 +4130,15 @@
|
||||
"call": "Issues",
|
||||
"key": "Issues",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:733"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:738"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Issues detected",
|
||||
"key": "Issues detected",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17",
|
||||
"src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20"
|
||||
"src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20",
|
||||
"src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4753,7 +4818,7 @@
|
||||
"call": "No diagnostic history available yet.",
|
||||
"key": "No diagnostic history available yet.",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1092"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1097"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4763,6 +4828,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1510"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "No domains found to check.",
|
||||
"key": "No domains found to check.",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:57"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "No enabled server inbounds configured",
|
||||
"key": "No enabled server inbounds configured",
|
||||
@@ -4781,7 +4853,7 @@
|
||||
"call": "No issues found",
|
||||
"key": "No issues found",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:740"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:745"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4802,7 +4874,7 @@
|
||||
"call": "No quick fix required",
|
||||
"key": "No quick fix required",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1082"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1087"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -4921,11 +4993,11 @@
|
||||
"call": "Not running",
|
||||
"key": "Not running",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/diagnostic.store.ts:137",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:122",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:352",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:410",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:496"
|
||||
"src/tachyon/tabs/diagnostic/diagnostic.store.ts:140",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:123",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:353",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:411",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:497"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -5173,6 +5245,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:7696"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Outbound",
|
||||
"key": "Outbound",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:63"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "outbounds must be a non-empty array of strings",
|
||||
"key": "outbounds must be a non-empty array of strings",
|
||||
@@ -5695,7 +5774,7 @@
|
||||
"call": "Recommended Smart Quick Fixes:",
|
||||
"key": "Recommended Smart Quick Fixes:",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1002"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1007"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -5850,7 +5929,7 @@
|
||||
"call": "Restart Tachyon",
|
||||
"key": "Restart Tachyon",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:56"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6017,7 +6096,7 @@
|
||||
"call": "Run AI Doctor",
|
||||
"key": "Run AI Doctor",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:124"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:126"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6031,14 +6110,14 @@
|
||||
"call": "Run doctor repair",
|
||||
"key": "Run doctor repair",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:114"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:116"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Run History",
|
||||
"key": "Run History",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1169"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1174"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6134,6 +6213,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:432"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Section / Domain",
|
||||
"key": "Section / Domain",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:62"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Section action",
|
||||
"key": "Section action",
|
||||
@@ -6534,7 +6620,14 @@
|
||||
"places": [
|
||||
"src/tachyon/methods/shell/index.ts:401",
|
||||
"src/tachyon/methods/shell/index.ts:422",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:603"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:604"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Service Health Check",
|
||||
"key": "Service Health Check",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:24"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6627,8 +6720,8 @@
|
||||
"call": "Show sing-box config",
|
||||
"key": "Show sing-box config",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1282",
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1287",
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:154"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6754,7 +6847,7 @@
|
||||
"call": "Some fixes failed",
|
||||
"key": "Some fixes failed",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1067"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1072"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6919,7 +7012,7 @@
|
||||
"call": "Start Tachyon",
|
||||
"key": "Start Tachyon",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:76"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:78"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -6970,7 +7063,7 @@
|
||||
"call": "Stop Tachyon",
|
||||
"key": "Stop Tachyon",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:66"
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:68"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -7274,6 +7367,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:3097"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "TCP (ms)",
|
||||
"key": "TCP (ms)",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Telegram Bot",
|
||||
"key": "Telegram Bot",
|
||||
@@ -7482,6 +7582,13 @@
|
||||
"src/tachyon/helpers/singBoxVariant.ts:64"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "TLS (ms)",
|
||||
"key": "TLS (ms)",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:66"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "TLS / HTTPS",
|
||||
"key": "TLS / HTTPS",
|
||||
@@ -7857,10 +7964,10 @@
|
||||
"key": "Unknown error",
|
||||
"places": [
|
||||
"src/tachyon/api.ts:40",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:715",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:752",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:873",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1211"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:720",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:757",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:878",
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1216"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -8254,6 +8361,13 @@
|
||||
"../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1837"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Verdict",
|
||||
"key": "Verdict",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:68"
|
||||
]
|
||||
},
|
||||
{
|
||||
"call": "Via country.is",
|
||||
"key": "Via country.is",
|
||||
@@ -8265,8 +8379,8 @@
|
||||
"call": "View logs",
|
||||
"key": "View logs",
|
||||
"places": [
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1247",
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:133"
|
||||
"src/tachyon/tabs/diagnostic/initController.ts:1252",
|
||||
"src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:145"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-08-11 19:28+0300\n"
|
||||
"PO-Revision-Date: 2026-08-11 19:28+0300\n"
|
||||
"POT-Creation-Date: 2026-08-12 07:20+0300\n"
|
||||
"PO-Revision-Date: 2026-08-12 07:20+0300\n"
|
||||
"Last-Translator: Dushnilin <dushnilin@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
@@ -232,18 +232,18 @@ msgstr ""
|
||||
msgid "AI Doctor (ChatGPT / DeepSeek API)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:850
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1206
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:855
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1211
|
||||
msgid "AI Doctor Diagnosis"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:822
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:827
|
||||
msgid "AI Doctor Diagnostic Scan in Progress..."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:873
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1212
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1221
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:878
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1217
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1226
|
||||
msgid "AI Doctor failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -279,7 +279,7 @@ msgstr ""
|
||||
msgid "All except selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1063
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1068
|
||||
msgid "All fixes applied successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -344,7 +344,11 @@ msgstr ""
|
||||
msgid "AmneziaWG Generator"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:804
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:165
|
||||
msgid "An error occurred while checking services."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:809
|
||||
msgid "Analyzing system log (logread & errors)"
|
||||
msgstr ""
|
||||
|
||||
@@ -360,11 +364,11 @@ msgstr ""
|
||||
msgid "Apply section rules only to the specified local IP addresses"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1052
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1057
|
||||
msgid "Applying all fixes..."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1019
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1024
|
||||
msgid "Applying fix"
|
||||
msgstr ""
|
||||
|
||||
@@ -446,7 +450,7 @@ msgstr ""
|
||||
msgid "Automatically update remote hosts lists on schedule"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:50
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:52
|
||||
msgid "Available actions"
|
||||
msgstr ""
|
||||
|
||||
@@ -494,7 +498,7 @@ msgstr ""
|
||||
msgid "Browser is using FakeIP correctly"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1346
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1351
|
||||
msgid "Bug report downloaded"
|
||||
msgstr ""
|
||||
|
||||
@@ -617,12 +621,21 @@ msgstr ""
|
||||
msgid "Check Connection"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:115
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:131
|
||||
msgid "Check Custom Domain"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2636
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3099
|
||||
#: src/tachyon/tabs/dashboard/initController.ts:1230
|
||||
msgid "Check interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:136
|
||||
msgid "Check Services"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3112
|
||||
msgid "Check timeout after which the server is considered dead"
|
||||
msgstr ""
|
||||
@@ -641,23 +654,23 @@ msgstr ""
|
||||
msgid "Checking Connection..."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:803
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:808
|
||||
msgid "Checking nftables filtering tables"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:802
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:807
|
||||
msgid "Checking sing-box service & DNSmasq"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:801
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:806
|
||||
msgid "Checking WAN interfaces & network routing"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:805
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:810
|
||||
msgid "Checking Zapret & ByeDPI rules"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1628
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1639
|
||||
#: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14
|
||||
#: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15
|
||||
#: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:15
|
||||
@@ -686,14 +699,14 @@ msgstr ""
|
||||
msgid "checks"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10
|
||||
msgid "Checks failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23
|
||||
#: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13
|
||||
msgid "Checks passed"
|
||||
msgstr ""
|
||||
|
||||
@@ -758,9 +771,10 @@ msgstr ""
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1717
|
||||
#: src/partials/modal/renderModal.ts:263
|
||||
#: src/tachyon/tabs/dashboard/initController.ts:1085
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1194
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1199
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:884
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:934
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:28
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
@@ -876,7 +890,7 @@ msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1693
|
||||
#: src/partials/modal/renderModal.ts:258
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1189
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1194
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
@@ -894,7 +908,7 @@ msgstr ""
|
||||
msgid "Country code (e.g. ru, us, de)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1157
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1162
|
||||
msgid "Current Diagnosis"
|
||||
msgstr ""
|
||||
|
||||
@@ -923,6 +937,10 @@ msgstr ""
|
||||
msgid "Custom DNS Records (Hosts)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:113
|
||||
msgid "Custom domain (e.g. google.com)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1271
|
||||
msgid "Custom OpenAI-Compatible API (OpenRouter)"
|
||||
msgstr ""
|
||||
@@ -1021,7 +1039,7 @@ msgstr ""
|
||||
msgid "Direct connection"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:86
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:88
|
||||
msgid "Disable autostart"
|
||||
msgstr ""
|
||||
|
||||
@@ -1184,14 +1202,14 @@ msgstr ""
|
||||
msgid "Do not test specified servers."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:715
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:753
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:761
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:720
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:758
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:766
|
||||
msgid "Doctor failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:731
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:740
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:736
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:745
|
||||
msgid "Doctor repair"
|
||||
msgstr ""
|
||||
|
||||
@@ -1345,7 +1363,7 @@ msgstr ""
|
||||
msgid "Enable automatic updates for remote lists and rule sets"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:96
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:98
|
||||
msgid "Enable autostart"
|
||||
msgstr ""
|
||||
|
||||
@@ -1568,7 +1586,7 @@ msgstr ""
|
||||
msgid "External nfqws2 config files bypass Tachyon queue management and explicit validation."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1039
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1044
|
||||
msgid "Failed to apply fix"
|
||||
msgstr ""
|
||||
|
||||
@@ -1596,7 +1614,11 @@ msgstr ""
|
||||
msgid "Failed to execute"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1349
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:44
|
||||
msgid "Failed to execute service check."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1354
|
||||
msgid "Failed to generate bug report"
|
||||
msgstr ""
|
||||
|
||||
@@ -1609,6 +1631,10 @@ msgstr ""
|
||||
msgid "Failed to parse file:"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:52
|
||||
msgid "Failed to parse service check results."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8148
|
||||
msgid "Failed to parse WARP config:"
|
||||
msgstr ""
|
||||
@@ -1688,6 +1714,10 @@ msgstr ""
|
||||
msgid "Fastest"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:19
|
||||
msgid "Fetching service status, please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3312
|
||||
msgid "Filter the servers that will be displayed on the dashboard."
|
||||
msgstr ""
|
||||
@@ -1700,11 +1730,11 @@ msgstr ""
|
||||
msgid "Firewall WAN port"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1050
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1055
|
||||
msgid "Fix All"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1034
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1039
|
||||
msgid "Fix applied"
|
||||
msgstr ""
|
||||
|
||||
@@ -1713,8 +1743,8 @@ msgstr ""
|
||||
msgid "Fix the highlighted fields and save again."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:737
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1030
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:742
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1035
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
@@ -1758,7 +1788,7 @@ msgstr ""
|
||||
msgid "Generate a random 16-character hexadecimal HWID"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:151
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:163
|
||||
msgid "Generate bug report"
|
||||
msgstr ""
|
||||
|
||||
@@ -1809,11 +1839,11 @@ msgstr ""
|
||||
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:105
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:107
|
||||
msgid "Get global check"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:691
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:696
|
||||
msgid "Global check"
|
||||
msgstr ""
|
||||
|
||||
@@ -1936,6 +1966,10 @@ msgstr ""
|
||||
msgid "HTTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:67
|
||||
msgid "HTTP (ms)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/api.ts:27
|
||||
msgid "HTTP error"
|
||||
msgstr ""
|
||||
@@ -2393,6 +2427,10 @@ msgstr ""
|
||||
msgid "Invalid VMess URL: parsing failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:64
|
||||
msgid "IP / DNS"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10203
|
||||
msgid "IP Addresses (IP CIDR)"
|
||||
msgstr ""
|
||||
@@ -2413,12 +2451,12 @@ msgstr ""
|
||||
msgid "Isolate BitTorrent traffic and force it direct to prevent VPN bans"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:733
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:738
|
||||
msgid "Issues"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17
|
||||
msgid "Issues detected"
|
||||
msgstr ""
|
||||
|
||||
@@ -2816,7 +2854,7 @@ msgstr ""
|
||||
msgid "No Custom Rules Matched"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1092
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1097
|
||||
msgid "No diagnostic history available yet."
|
||||
msgstr ""
|
||||
|
||||
@@ -2824,6 +2862,10 @@ msgstr ""
|
||||
msgid "No domains detected yet"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:57
|
||||
msgid "No domains found to check."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187
|
||||
msgid "No enabled server inbounds configured"
|
||||
msgstr ""
|
||||
@@ -2832,7 +2874,7 @@ msgstr ""
|
||||
msgid "No file selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:740
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:745
|
||||
msgid "No issues found"
|
||||
msgstr ""
|
||||
|
||||
@@ -2844,7 +2886,7 @@ msgstr ""
|
||||
msgid "No public firewall port required"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1082
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1087
|
||||
msgid "No quick fix required"
|
||||
msgstr ""
|
||||
|
||||
@@ -2918,11 +2960,11 @@ msgstr ""
|
||||
msgid "Not responding"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:137
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:122
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:352
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:410
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:496
|
||||
#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:140
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:123
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:353
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:411
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:497
|
||||
msgid "Not running"
|
||||
msgstr ""
|
||||
|
||||
@@ -3069,6 +3111,10 @@ msgstr ""
|
||||
msgid "Or paste hosts file content:"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:63
|
||||
msgid "Outbound"
|
||||
msgstr ""
|
||||
|
||||
#: src/validators/validateOutboundJson.ts:111
|
||||
msgid "outbounds must be a non-empty array of strings"
|
||||
msgstr ""
|
||||
@@ -3374,7 +3420,7 @@ msgstr ""
|
||||
msgid "Rebuilt release"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1002
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1007
|
||||
msgid "Recommended Smart Quick Fixes:"
|
||||
msgstr ""
|
||||
|
||||
@@ -3463,7 +3509,7 @@ msgstr ""
|
||||
msgid "Response Packet Magic Header (S4)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:56
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58
|
||||
msgid "Restart Tachyon"
|
||||
msgstr ""
|
||||
|
||||
@@ -3561,7 +3607,7 @@ msgstr ""
|
||||
msgid "Rules proxy exist"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:124
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:126
|
||||
msgid "Run AI Doctor"
|
||||
msgstr ""
|
||||
|
||||
@@ -3569,11 +3615,11 @@ msgstr ""
|
||||
msgid "Run Diagnostic"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:114
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:116
|
||||
msgid "Run doctor repair"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1169
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1174
|
||||
msgid "Run History"
|
||||
msgstr ""
|
||||
|
||||
@@ -3634,6 +3680,10 @@ msgstr ""
|
||||
msgid "Section"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:62
|
||||
msgid "Section / Domain"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10198
|
||||
msgid "Section action"
|
||||
msgstr ""
|
||||
@@ -3868,10 +3918,14 @@ msgstr ""
|
||||
|
||||
#: src/tachyon/methods/shell/index.ts:401
|
||||
#: src/tachyon/methods/shell/index.ts:422
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:603
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:604
|
||||
msgid "Service action failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:24
|
||||
msgid "Service Health Check"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9325
|
||||
msgid "Service list"
|
||||
msgstr ""
|
||||
@@ -3922,8 +3976,8 @@ msgstr ""
|
||||
msgid "Show servers whose names match the expression."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1282
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1287
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:154
|
||||
msgid "Show sing-box config"
|
||||
msgstr ""
|
||||
|
||||
@@ -3995,7 +4049,7 @@ msgstr ""
|
||||
msgid "Snell Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1067
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1072
|
||||
msgid "Some fixes failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -4091,7 +4145,7 @@ msgstr ""
|
||||
msgid "Start bot"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:76
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:78
|
||||
msgid "Start Tachyon"
|
||||
msgstr ""
|
||||
|
||||
@@ -4121,7 +4175,7 @@ msgstr ""
|
||||
msgid "Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:66
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:68
|
||||
msgid "Stop Tachyon"
|
||||
msgstr ""
|
||||
|
||||
@@ -4300,6 +4354,10 @@ msgstr ""
|
||||
msgid "Tailscale hostname"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65
|
||||
msgid "TCP (ms)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:473
|
||||
msgid "Telegram Bot"
|
||||
msgstr ""
|
||||
@@ -4424,6 +4482,10 @@ msgstr ""
|
||||
msgid "tiny"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:66
|
||||
msgid "TLS (ms)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9531
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9550
|
||||
msgid "TLS / HTTPS"
|
||||
@@ -4648,10 +4710,10 @@ msgid "Unknown country"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/api.ts:40
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:715
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:752
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:873
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1211
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:720
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:757
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:878
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1216
|
||||
msgid "Unknown error"
|
||||
msgstr ""
|
||||
|
||||
@@ -4896,12 +4958,16 @@ msgstr ""
|
||||
msgid "Value must not contain control characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:68
|
||||
msgid "Verdict"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:1977
|
||||
msgid "Via country.is"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1247
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:133
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1252
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:145
|
||||
msgid "View logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-08-11 22:28+0300\n"
|
||||
"PO-Revision-Date: 2026-08-11 22:28+0300\n"
|
||||
"POT-Creation-Date: 2026-08-12 10:20+0300\n"
|
||||
"PO-Revision-Date: 2026-08-12 10:20+0300\n"
|
||||
"Last-Translator: Dushnilin\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ru\n"
|
||||
@@ -242,6 +242,9 @@ msgstr "Конфиг AmneziaWG успешно загружен!"
|
||||
msgid "AmneziaWG Generator"
|
||||
msgstr "Генератор AmneziaWG"
|
||||
|
||||
msgid "An error occurred while checking services."
|
||||
msgstr ""
|
||||
|
||||
msgid "Analyzing system log (logread & errors)"
|
||||
msgstr ""
|
||||
|
||||
@@ -434,9 +437,15 @@ msgstr "Пин сертификата недоступен. Примените
|
||||
msgid "Check Connection"
|
||||
msgstr "Проверить подключение"
|
||||
|
||||
msgid "Check Custom Domain"
|
||||
msgstr ""
|
||||
|
||||
msgid "Check interval"
|
||||
msgstr "Интервал проверки"
|
||||
|
||||
msgid "Check Services"
|
||||
msgstr ""
|
||||
|
||||
msgid "Check timeout after which the server is considered dead"
|
||||
msgstr "Таймаут проверки, после которого сервер считается недоступным"
|
||||
|
||||
@@ -635,6 +644,9 @@ msgstr "Кастомные заголовки устройства"
|
||||
msgid "Custom DNS Records (Hosts)"
|
||||
msgstr "Пользовательские записи DNS (Hosts)"
|
||||
|
||||
msgid "Custom domain (e.g. google.com)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Custom OpenAI-Compatible API (OpenRouter)"
|
||||
msgstr ""
|
||||
|
||||
@@ -1100,6 +1112,9 @@ msgstr "Не удалось скопировать!"
|
||||
msgid "Failed to execute"
|
||||
msgstr "Не удалось выполнить"
|
||||
|
||||
msgid "Failed to execute service check."
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to generate bug report"
|
||||
msgstr "Не удалось создать отчёт об ошибке"
|
||||
|
||||
@@ -1109,6 +1124,9 @@ msgstr "Не удалось создать конфиг WARP:"
|
||||
msgid "Failed to parse file:"
|
||||
msgstr "Не удалось разобрать файл:"
|
||||
|
||||
msgid "Failed to parse service check results."
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to parse WARP config:"
|
||||
msgstr "Не удалось разобрать конфиг WARP:"
|
||||
|
||||
@@ -1163,6 +1181,9 @@ msgstr "Интервал поиска более быстрого сервера
|
||||
msgid "Fastest"
|
||||
msgstr "Самый быстрый"
|
||||
|
||||
msgid "Fetching service status, please wait..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter the servers that will be displayed on the dashboard."
|
||||
msgstr "Фильтровать серверы, отображаемые на дашборде."
|
||||
|
||||
@@ -1343,6 +1364,9 @@ msgstr "Как часто проверять, восстановился ли DN
|
||||
msgid "HTTP"
|
||||
msgstr "HTTP"
|
||||
|
||||
msgid "HTTP (ms)"
|
||||
msgstr ""
|
||||
|
||||
msgid "HTTP error"
|
||||
msgstr "Ошибка HTTP"
|
||||
|
||||
@@ -1667,6 +1691,9 @@ msgstr "Неверный URL VLESS: ошибка разбора"
|
||||
msgid "Invalid VMess URL: parsing failed"
|
||||
msgstr "Некорректный VMess URL: ошибка разбора"
|
||||
|
||||
msgid "IP / DNS"
|
||||
msgstr ""
|
||||
|
||||
msgid "IP Addresses (IP CIDR)"
|
||||
msgstr "IP-адреса и подсети (IP CIDR)"
|
||||
|
||||
@@ -1973,6 +2000,9 @@ msgstr ""
|
||||
msgid "No domains detected yet"
|
||||
msgstr "Домены пока не обнаружены"
|
||||
|
||||
msgid "No domains found to check."
|
||||
msgstr ""
|
||||
|
||||
msgid "No enabled server inbounds configured"
|
||||
msgstr "Включённые серверные inbounds не настроены"
|
||||
|
||||
@@ -2138,6 +2168,9 @@ msgstr "Опциональные значения должны быть указ
|
||||
msgid "Or paste hosts file content:"
|
||||
msgstr "Или вставьте содержимое hosts-файла:"
|
||||
|
||||
msgid "Outbound"
|
||||
msgstr ""
|
||||
|
||||
msgid "outbounds must be a non-empty array of strings"
|
||||
msgstr "outbounds должен быть непустым массивом строк"
|
||||
|
||||
@@ -2534,6 +2567,9 @@ msgstr "Секретный токен для POST/PUT запросов"
|
||||
msgid "Section"
|
||||
msgstr "Секция"
|
||||
|
||||
msgid "Section / Domain"
|
||||
msgstr ""
|
||||
|
||||
msgid "Section action"
|
||||
msgstr "Действие секции"
|
||||
|
||||
@@ -2699,6 +2735,9 @@ msgstr "Серверы на дашборде"
|
||||
msgid "Service action failed"
|
||||
msgstr "Действие сервиса не выполнено"
|
||||
|
||||
msgid "Service Health Check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Service list"
|
||||
msgstr "Список сервисов"
|
||||
|
||||
@@ -3008,6 +3047,9 @@ msgstr "Tailscale endpoint"
|
||||
msgid "Tailscale hostname"
|
||||
msgstr "Hostname Tailscale"
|
||||
|
||||
msgid "TCP (ms)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Telegram Bot"
|
||||
msgstr "Telegram-бот"
|
||||
|
||||
@@ -3092,6 +3134,9 @@ msgstr "Допуск расхождения времени"
|
||||
msgid "tiny"
|
||||
msgstr "tiny"
|
||||
|
||||
msgid "TLS (ms)"
|
||||
msgstr ""
|
||||
|
||||
msgid "TLS / HTTPS"
|
||||
msgstr "TLS / HTTPS"
|
||||
|
||||
@@ -3392,6 +3437,9 @@ msgstr "Значение не может быть пустым"
|
||||
msgid "Value must not contain control characters"
|
||||
msgstr "Значение не должно содержать управляющие символы"
|
||||
|
||||
msgid "Verdict"
|
||||
msgstr ""
|
||||
|
||||
msgid "Via country.is"
|
||||
msgstr "Через country.is"
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
{
|
||||
"name": "fe-app-tachyon",
|
||||
"version": "1.2.69",
|
||||
"version": "1.2.75",
|
||||
"license": "MIT",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
|
||||
@@ -189,6 +189,7 @@ export interface StoreType {
|
||||
viewLogs: { loading: boolean };
|
||||
showSingBoxConfig: { loading: boolean };
|
||||
generateBugReport: { loading: boolean };
|
||||
checkServices: { loading: boolean };
|
||||
};
|
||||
diagnosticsSystemInfo: {
|
||||
loading: boolean;
|
||||
|
||||
@@ -132,6 +132,9 @@ export const initialDiagnosticStore: Pick<
|
||||
generateBugReport: {
|
||||
loading: false,
|
||||
},
|
||||
checkServices: {
|
||||
loading: false,
|
||||
},
|
||||
},
|
||||
diagnosticsRunAction: { loading: false },
|
||||
diagnosticsChecks: getDiagnosticsChecks(_('Not running')),
|
||||
|
||||
@@ -36,6 +36,7 @@ import {
|
||||
renderCheckSection,
|
||||
renderRunAction,
|
||||
renderSystemInfo,
|
||||
renderServiceCheckModal,
|
||||
} from './partials';
|
||||
import { TachyonShellMethods } from '../../methods';
|
||||
import { fetchServicesInfo } from '../../fetchers/fetchServicesInfo';
|
||||
@@ -623,6 +624,10 @@ async function handleServiceRuntimeAction({
|
||||
}
|
||||
}
|
||||
|
||||
function handleCheckServicesAction() {
|
||||
renderServiceCheckModal();
|
||||
}
|
||||
|
||||
async function handleRestart() {
|
||||
await handleServiceRuntimeAction({
|
||||
action: 'restart',
|
||||
@@ -1475,6 +1480,12 @@ function renderDiagnosticAvailableActionsWidget() {
|
||||
onClick: handleRunAiDoctor,
|
||||
disabled: diagnosticsActions.aiDoctor.loading,
|
||||
},
|
||||
checkServices: {
|
||||
visible: true,
|
||||
loading: diagnosticsActions.checkServices.loading,
|
||||
disabled: utilityActionsDisabled,
|
||||
onClick: handleCheckServicesAction,
|
||||
},
|
||||
viewLogs: {
|
||||
loading: diagnosticsActions.viewLogs.loading,
|
||||
visible: true,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
export * from './renderAvailableActions';
|
||||
export * from './renderCheckSection';
|
||||
export * from './renderRunAction';
|
||||
export * from './renderServiceCheckModal';
|
||||
export * from './renderSystemInfo';
|
||||
|
||||
@@ -31,6 +31,7 @@ interface IRenderAvailableActionsProps {
|
||||
viewLogs: ActionProps;
|
||||
showSingBoxConfig: ActionProps;
|
||||
generateBugReport: ActionProps;
|
||||
checkServices: ActionProps;
|
||||
}
|
||||
|
||||
export function renderAvailableActions({
|
||||
@@ -45,6 +46,7 @@ export function renderAvailableActions({
|
||||
viewLogs,
|
||||
showSingBoxConfig,
|
||||
generateBugReport,
|
||||
checkServices,
|
||||
}: IRenderAvailableActionsProps) {
|
||||
return E('div', { class: 'tachyon_diagnostic-page__right-bar__actions' }, [
|
||||
E('b', {}, _('Available actions')),
|
||||
@@ -126,6 +128,16 @@ export function renderAvailableActions({
|
||||
disabled: aiDoctor.disabled,
|
||||
}),
|
||||
]),
|
||||
...insertIf(checkServices.visible, [
|
||||
renderButton({
|
||||
classNames: ['cbi-button-apply'],
|
||||
onClick: checkServices.onClick,
|
||||
icon: renderSquareChartGanttIcon24,
|
||||
text: _('Check Services'),
|
||||
loading: checkServices.loading,
|
||||
disabled: checkServices.disabled,
|
||||
}),
|
||||
]),
|
||||
...insertIf(viewLogs.visible, [
|
||||
renderButton({
|
||||
onClick: viewLogs.onClick,
|
||||
|
||||
@@ -0,0 +1,166 @@
|
||||
import { callBaseMethod } from '../../../methods/shell/callBaseMethod';
|
||||
import { renderButton } from '../../../../partials';
|
||||
|
||||
interface ServiceCheckResult {
|
||||
section: string;
|
||||
route_type: string;
|
||||
domain: string;
|
||||
ip: string;
|
||||
dns_ms: number;
|
||||
tcp_ms: number;
|
||||
tls_ms: number;
|
||||
http_ms: number;
|
||||
status_class: string;
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export function renderServiceCheckModal() {
|
||||
const container = E('div', { class: 'tachyon-service-check-modal' }, [
|
||||
E('p', {}, _('Fetching service status, please wait...')),
|
||||
E('div', { class: 'spinning' }, '...'),
|
||||
]);
|
||||
|
||||
ui.showModal(_('Service Health Check'), E('div', {}, [
|
||||
container,
|
||||
E('div', { style: 'margin-top: 15px; text-align: right;' }, [
|
||||
renderButton({
|
||||
text: _('Close'),
|
||||
onClick: () => ui.hideModal()
|
||||
})
|
||||
])
|
||||
]));
|
||||
|
||||
callBaseMethod('diagnostics/status.uc' as any, [
|
||||
'service-health-check',
|
||||
])
|
||||
.then((res: any) => {
|
||||
container.innerHTML = '';
|
||||
if (!res.success) {
|
||||
container.appendChild(E('p', {}, _('Failed to execute service check.')));
|
||||
return;
|
||||
}
|
||||
|
||||
let results: ServiceCheckResult[] = [];
|
||||
try {
|
||||
if (typeof res.data === 'string') {
|
||||
results = JSON.parse(res.data);
|
||||
}
|
||||
} catch (e) {
|
||||
container.appendChild(E('p', {}, _('Failed to parse service check results.')));
|
||||
return;
|
||||
}
|
||||
|
||||
if (results.length === 0) {
|
||||
container.appendChild(E('p', {}, _('No domains found to check.')));
|
||||
}
|
||||
|
||||
const table = E('table', { class: 'table cbi-section-table' }, [
|
||||
E('tr', { class: 'tr cbi-section-table-titles' }, [
|
||||
E('th', { class: 'th' }, _('Section / Domain')),
|
||||
E('th', { class: 'th' }, _('Outbound')),
|
||||
E('th', { class: 'th' }, _('IP / DNS')),
|
||||
E('th', { class: 'th' }, _('TCP (ms)')),
|
||||
E('th', { class: 'th' }, _('TLS (ms)')),
|
||||
E('th', { class: 'th' }, _('HTTP (ms)')),
|
||||
E('th', { class: 'th' }, _('Verdict')),
|
||||
]),
|
||||
]);
|
||||
|
||||
results.forEach((item) => {
|
||||
const badgeColor = item.success
|
||||
? '#28a745'
|
||||
: item.status_class.includes('Timeout') || item.status_class.includes('HTTP') || item.status_class.includes('Reset')
|
||||
? '#dc3545'
|
||||
: '#ffc107';
|
||||
|
||||
const badge = E(
|
||||
'span',
|
||||
{
|
||||
style: `display: inline-block; padding: 2px 6px; border-radius: 4px; color: white; font-weight: bold; font-size: 11px; background: ${badgeColor};`,
|
||||
},
|
||||
item.status_class,
|
||||
);
|
||||
|
||||
table.appendChild(
|
||||
E('tr', { class: 'tr cbi-rowstyle-1' }, [
|
||||
E('td', { class: 'td' }, [
|
||||
E('strong', {}, item.section),
|
||||
E('br'),
|
||||
E('small', {}, item.domain),
|
||||
]),
|
||||
E('td', { class: 'td' }, item.route_type),
|
||||
E('td', { class: 'td' }, [
|
||||
item.ip || '?',
|
||||
E('br'),
|
||||
E('small', {}, `${item.dns_ms}ms`),
|
||||
]),
|
||||
E('td', { class: 'td' }, item.tcp_ms > 0 ? `${item.tcp_ms}` : '-'),
|
||||
E('td', { class: 'td' }, item.tls_ms > 0 ? `${item.tls_ms}` : '-'),
|
||||
E('td', { class: 'td' }, item.http_ms > 0 ? `${item.http_ms}` : '-'),
|
||||
E('td', { class: 'td' }, badge),
|
||||
]),
|
||||
);
|
||||
});
|
||||
|
||||
if (results.length > 0) {
|
||||
container.appendChild(table);
|
||||
}
|
||||
|
||||
const customDomainWrap = E('div', { style: 'margin-top: 15px; display: flex; gap: 10px;' }, [
|
||||
E('input', { type: 'text', id: 'custom-domain-check-input', placeholder: _('Custom domain (e.g. google.com)') })
|
||||
]);
|
||||
|
||||
let customBtn: HTMLButtonElement;
|
||||
customBtn = renderButton({
|
||||
text: _('Check Custom Domain'),
|
||||
classNames: ['cbi-button-action'],
|
||||
onClick: () => {
|
||||
const input = document.getElementById('custom-domain-check-input') as HTMLInputElement;
|
||||
if (!input || !input.value) return;
|
||||
const domain = input.value.trim();
|
||||
|
||||
if (customBtn) {
|
||||
customBtn.disabled = true;
|
||||
customBtn.textContent = '...';
|
||||
}
|
||||
|
||||
callBaseMethod('diagnostics/status.uc' as any, ['service-health-check', 'check-custom', domain]).then((cRes: any) => {
|
||||
if (customBtn) {
|
||||
customBtn.disabled = false;
|
||||
customBtn.textContent = _('Check Custom Domain');
|
||||
}
|
||||
if (cRes && cRes.success) {
|
||||
try {
|
||||
const cResults = JSON.parse(cRes.data);
|
||||
if (cResults.length > 0) {
|
||||
const cItem = cResults[0];
|
||||
const cBadgeColor = cItem.success ? '#28a745' : '#dc3545';
|
||||
const cBadge = E('span', { style: `display: inline-block; padding: 2px 6px; border-radius: 4px; color: white; font-weight: bold; font-size: 11px; background: ${cBadgeColor};` }, cItem.status_class);
|
||||
|
||||
if (results.length === 0 && !document.body.contains(table)) {
|
||||
container.insertBefore(table, customDomainWrap);
|
||||
}
|
||||
|
||||
table.appendChild(E('tr', { class: 'tr cbi-rowstyle-2' }, [
|
||||
E('td', { class: 'td' }, [E('strong', {}, cItem.section), E('br'), E('small', {}, cItem.domain)]),
|
||||
E('td', { class: 'td' }, cItem.route_type),
|
||||
E('td', { class: 'td' }, [cItem.ip || '?', E('br'), E('small', {}, `${cItem.dns_ms}ms`)]),
|
||||
E('td', { class: 'td' }, cItem.tcp_ms > 0 ? `${cItem.tcp_ms}` : '-'),
|
||||
E('td', { class: 'td' }, cItem.tls_ms > 0 ? `${cItem.tls_ms}` : '-'),
|
||||
E('td', { class: 'td' }, cItem.http_ms > 0 ? `${cItem.http_ms}` : '-'),
|
||||
E('td', { class: 'td' }, cBadge),
|
||||
]));
|
||||
}
|
||||
} catch(e) {}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
customDomainWrap.appendChild(customBtn);
|
||||
container.appendChild(customDomainWrap);
|
||||
})
|
||||
.catch(() => {
|
||||
container.innerHTML = '';
|
||||
container.appendChild(E('p', {}, _('An error occurred while checking services.')));
|
||||
});
|
||||
}
|
||||
@@ -5085,6 +5085,9 @@ var initialDiagnosticStore = {
|
||||
},
|
||||
generateBugReport: {
|
||||
loading: false
|
||||
},
|
||||
checkServices: {
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
diagnosticsRunAction: { loading: false },
|
||||
@@ -9720,7 +9723,8 @@ function renderAvailableActions({
|
||||
aiDoctor,
|
||||
viewLogs,
|
||||
showSingBoxConfig,
|
||||
generateBugReport
|
||||
generateBugReport,
|
||||
checkServices
|
||||
}) {
|
||||
return E("div", { class: "tachyon_diagnostic-page__right-bar__actions" }, [
|
||||
E("b", {}, _("Available actions")),
|
||||
@@ -9802,6 +9806,16 @@ function renderAvailableActions({
|
||||
disabled: aiDoctor.disabled
|
||||
})
|
||||
]),
|
||||
...insertIf(checkServices.visible, [
|
||||
renderButton({
|
||||
classNames: ["cbi-button-apply"],
|
||||
onClick: checkServices.onClick,
|
||||
icon: renderSquareChartGanttIcon24,
|
||||
text: _("Check Services"),
|
||||
loading: checkServices.loading,
|
||||
disabled: checkServices.disabled
|
||||
})
|
||||
]),
|
||||
...insertIf(viewLogs.visible, [
|
||||
renderButton({
|
||||
onClick: viewLogs.onClick,
|
||||
@@ -10009,6 +10023,138 @@ function renderRunAction({
|
||||
]);
|
||||
}
|
||||
|
||||
// src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts
|
||||
function renderServiceCheckModal() {
|
||||
const container = E("div", { class: "tachyon-service-check-modal" }, [
|
||||
E("p", {}, _("Fetching service status, please wait...")),
|
||||
E("div", { class: "spinning" }, "...")
|
||||
]);
|
||||
ui.showModal(_("Service Health Check"), E("div", {}, [
|
||||
container,
|
||||
E("div", { style: "margin-top: 15px; text-align: right;" }, [
|
||||
renderButton({
|
||||
text: _("Close"),
|
||||
onClick: () => ui.hideModal()
|
||||
})
|
||||
])
|
||||
]));
|
||||
callBaseMethod("diagnostics/status.uc", [
|
||||
"service-health-check"
|
||||
]).then((res) => {
|
||||
container.innerHTML = "";
|
||||
if (!res.success) {
|
||||
container.appendChild(E("p", {}, _("Failed to execute service check.")));
|
||||
return;
|
||||
}
|
||||
let results = [];
|
||||
try {
|
||||
if (typeof res.data === "string") {
|
||||
results = JSON.parse(res.data);
|
||||
}
|
||||
} catch (e) {
|
||||
container.appendChild(E("p", {}, _("Failed to parse service check results.")));
|
||||
return;
|
||||
}
|
||||
if (results.length === 0) {
|
||||
container.appendChild(E("p", {}, _("No domains found to check.")));
|
||||
}
|
||||
const table = E("table", { class: "table cbi-section-table" }, [
|
||||
E("tr", { class: "tr cbi-section-table-titles" }, [
|
||||
E("th", { class: "th" }, _("Section / Domain")),
|
||||
E("th", { class: "th" }, _("Outbound")),
|
||||
E("th", { class: "th" }, _("IP / DNS")),
|
||||
E("th", { class: "th" }, _("TCP (ms)")),
|
||||
E("th", { class: "th" }, _("TLS (ms)")),
|
||||
E("th", { class: "th" }, _("HTTP (ms)")),
|
||||
E("th", { class: "th" }, _("Verdict"))
|
||||
])
|
||||
]);
|
||||
results.forEach((item) => {
|
||||
const badgeColor = item.success ? "#28a745" : item.status_class.includes("Timeout") || item.status_class.includes("HTTP") || item.status_class.includes("Reset") ? "#dc3545" : "#ffc107";
|
||||
const badge = E(
|
||||
"span",
|
||||
{
|
||||
style: `display: inline-block; padding: 2px 6px; border-radius: 4px; color: white; font-weight: bold; font-size: 11px; background: ${badgeColor};`
|
||||
},
|
||||
item.status_class
|
||||
);
|
||||
table.appendChild(
|
||||
E("tr", { class: "tr cbi-rowstyle-1" }, [
|
||||
E("td", { class: "td" }, [
|
||||
E("strong", {}, item.section),
|
||||
E("br"),
|
||||
E("small", {}, item.domain)
|
||||
]),
|
||||
E("td", { class: "td" }, item.route_type),
|
||||
E("td", { class: "td" }, [
|
||||
item.ip || "?",
|
||||
E("br"),
|
||||
E("small", {}, `${item.dns_ms}ms`)
|
||||
]),
|
||||
E("td", { class: "td" }, item.tcp_ms > 0 ? `${item.tcp_ms}` : "-"),
|
||||
E("td", { class: "td" }, item.tls_ms > 0 ? `${item.tls_ms}` : "-"),
|
||||
E("td", { class: "td" }, item.http_ms > 0 ? `${item.http_ms}` : "-"),
|
||||
E("td", { class: "td" }, badge)
|
||||
])
|
||||
);
|
||||
});
|
||||
if (results.length > 0) {
|
||||
container.appendChild(table);
|
||||
}
|
||||
const customDomainWrap = E("div", { style: "margin-top: 15px; display: flex; gap: 10px;" }, [
|
||||
E("input", { type: "text", id: "custom-domain-check-input", placeholder: _("Custom domain (e.g. google.com)") })
|
||||
]);
|
||||
let customBtn;
|
||||
customBtn = renderButton({
|
||||
text: _("Check Custom Domain"),
|
||||
classNames: ["cbi-button-action"],
|
||||
onClick: () => {
|
||||
const input = document.getElementById("custom-domain-check-input");
|
||||
if (!input || !input.value) return;
|
||||
const domain = input.value.trim();
|
||||
if (customBtn) {
|
||||
customBtn.disabled = true;
|
||||
customBtn.textContent = "...";
|
||||
}
|
||||
callBaseMethod("diagnostics/status.uc", ["service-health-check", "check-custom", domain]).then((cRes) => {
|
||||
if (customBtn) {
|
||||
customBtn.disabled = false;
|
||||
customBtn.textContent = _("Check Custom Domain");
|
||||
}
|
||||
if (cRes && cRes.success) {
|
||||
try {
|
||||
const cResults = JSON.parse(cRes.data);
|
||||
if (cResults.length > 0) {
|
||||
const cItem = cResults[0];
|
||||
const cBadgeColor = cItem.success ? "#28a745" : "#dc3545";
|
||||
const cBadge = E("span", { style: `display: inline-block; padding: 2px 6px; border-radius: 4px; color: white; font-weight: bold; font-size: 11px; background: ${cBadgeColor};` }, cItem.status_class);
|
||||
if (results.length === 0 && !document.body.contains(table)) {
|
||||
container.insertBefore(table, customDomainWrap);
|
||||
}
|
||||
table.appendChild(E("tr", { class: "tr cbi-rowstyle-2" }, [
|
||||
E("td", { class: "td" }, [E("strong", {}, cItem.section), E("br"), E("small", {}, cItem.domain)]),
|
||||
E("td", { class: "td" }, cItem.route_type),
|
||||
E("td", { class: "td" }, [cItem.ip || "?", E("br"), E("small", {}, `${cItem.dns_ms}ms`)]),
|
||||
E("td", { class: "td" }, cItem.tcp_ms > 0 ? `${cItem.tcp_ms}` : "-"),
|
||||
E("td", { class: "td" }, cItem.tls_ms > 0 ? `${cItem.tls_ms}` : "-"),
|
||||
E("td", { class: "td" }, cItem.http_ms > 0 ? `${cItem.http_ms}` : "-"),
|
||||
E("td", { class: "td" }, cBadge)
|
||||
]));
|
||||
}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
customDomainWrap.appendChild(customBtn);
|
||||
container.appendChild(customDomainWrap);
|
||||
}).catch(() => {
|
||||
container.innerHTML = "";
|
||||
container.appendChild(E("p", {}, _("An error occurred while checking services.")));
|
||||
});
|
||||
}
|
||||
|
||||
// src/tachyon/tabs/diagnostic/partials/renderSystemInfo.ts
|
||||
function renderSystemInfo({ items }) {
|
||||
return E(
|
||||
@@ -11015,6 +11161,9 @@ async function handleServiceRuntimeAction({
|
||||
}
|
||||
}
|
||||
}
|
||||
function handleCheckServicesAction() {
|
||||
renderServiceCheckModal();
|
||||
}
|
||||
async function handleRestart() {
|
||||
await handleServiceRuntimeAction({
|
||||
action: "restart",
|
||||
@@ -11686,6 +11835,12 @@ function renderDiagnosticAvailableActionsWidget() {
|
||||
onClick: handleRunAiDoctor,
|
||||
disabled: diagnosticsActions.aiDoctor.loading
|
||||
},
|
||||
checkServices: {
|
||||
visible: true,
|
||||
loading: diagnosticsActions.checkServices.loading,
|
||||
disabled: utilityActionsDisabled,
|
||||
onClick: handleCheckServicesAction
|
||||
},
|
||||
viewLogs: {
|
||||
loading: diagnosticsActions.viewLogs.loading,
|
||||
visible: true,
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-08-11 22:28+0300\n"
|
||||
"PO-Revision-Date: 2026-08-11 22:28+0300\n"
|
||||
"POT-Creation-Date: 2026-08-12 10:20+0300\n"
|
||||
"PO-Revision-Date: 2026-08-12 10:20+0300\n"
|
||||
"Last-Translator: Dushnilin\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: ru\n"
|
||||
@@ -242,6 +242,9 @@ msgstr "Конфиг AmneziaWG успешно загружен!"
|
||||
msgid "AmneziaWG Generator"
|
||||
msgstr "Генератор AmneziaWG"
|
||||
|
||||
msgid "An error occurred while checking services."
|
||||
msgstr ""
|
||||
|
||||
msgid "Analyzing system log (logread & errors)"
|
||||
msgstr ""
|
||||
|
||||
@@ -434,9 +437,15 @@ msgstr "Пин сертификата недоступен. Примените
|
||||
msgid "Check Connection"
|
||||
msgstr "Проверить подключение"
|
||||
|
||||
msgid "Check Custom Domain"
|
||||
msgstr ""
|
||||
|
||||
msgid "Check interval"
|
||||
msgstr "Интервал проверки"
|
||||
|
||||
msgid "Check Services"
|
||||
msgstr ""
|
||||
|
||||
msgid "Check timeout after which the server is considered dead"
|
||||
msgstr "Таймаут проверки, после которого сервер считается недоступным"
|
||||
|
||||
@@ -635,6 +644,9 @@ msgstr "Кастомные заголовки устройства"
|
||||
msgid "Custom DNS Records (Hosts)"
|
||||
msgstr "Пользовательские записи DNS (Hosts)"
|
||||
|
||||
msgid "Custom domain (e.g. google.com)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Custom OpenAI-Compatible API (OpenRouter)"
|
||||
msgstr ""
|
||||
|
||||
@@ -1100,6 +1112,9 @@ msgstr "Не удалось скопировать!"
|
||||
msgid "Failed to execute"
|
||||
msgstr "Не удалось выполнить"
|
||||
|
||||
msgid "Failed to execute service check."
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to generate bug report"
|
||||
msgstr "Не удалось создать отчёт об ошибке"
|
||||
|
||||
@@ -1109,6 +1124,9 @@ msgstr "Не удалось создать конфиг WARP:"
|
||||
msgid "Failed to parse file:"
|
||||
msgstr "Не удалось разобрать файл:"
|
||||
|
||||
msgid "Failed to parse service check results."
|
||||
msgstr ""
|
||||
|
||||
msgid "Failed to parse WARP config:"
|
||||
msgstr "Не удалось разобрать конфиг WARP:"
|
||||
|
||||
@@ -1163,6 +1181,9 @@ msgstr "Интервал поиска более быстрого сервера
|
||||
msgid "Fastest"
|
||||
msgstr "Самый быстрый"
|
||||
|
||||
msgid "Fetching service status, please wait..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Filter the servers that will be displayed on the dashboard."
|
||||
msgstr "Фильтровать серверы, отображаемые на дашборде."
|
||||
|
||||
@@ -1343,6 +1364,9 @@ msgstr "Как часто проверять, восстановился ли DN
|
||||
msgid "HTTP"
|
||||
msgstr "HTTP"
|
||||
|
||||
msgid "HTTP (ms)"
|
||||
msgstr ""
|
||||
|
||||
msgid "HTTP error"
|
||||
msgstr "Ошибка HTTP"
|
||||
|
||||
@@ -1667,6 +1691,9 @@ msgstr "Неверный URL VLESS: ошибка разбора"
|
||||
msgid "Invalid VMess URL: parsing failed"
|
||||
msgstr "Некорректный VMess URL: ошибка разбора"
|
||||
|
||||
msgid "IP / DNS"
|
||||
msgstr ""
|
||||
|
||||
msgid "IP Addresses (IP CIDR)"
|
||||
msgstr "IP-адреса и подсети (IP CIDR)"
|
||||
|
||||
@@ -1973,6 +2000,9 @@ msgstr ""
|
||||
msgid "No domains detected yet"
|
||||
msgstr "Домены пока не обнаружены"
|
||||
|
||||
msgid "No domains found to check."
|
||||
msgstr ""
|
||||
|
||||
msgid "No enabled server inbounds configured"
|
||||
msgstr "Включённые серверные inbounds не настроены"
|
||||
|
||||
@@ -2138,6 +2168,9 @@ msgstr "Опциональные значения должны быть указ
|
||||
msgid "Or paste hosts file content:"
|
||||
msgstr "Или вставьте содержимое hosts-файла:"
|
||||
|
||||
msgid "Outbound"
|
||||
msgstr ""
|
||||
|
||||
msgid "outbounds must be a non-empty array of strings"
|
||||
msgstr "outbounds должен быть непустым массивом строк"
|
||||
|
||||
@@ -2534,6 +2567,9 @@ msgstr "Секретный токен для POST/PUT запросов"
|
||||
msgid "Section"
|
||||
msgstr "Секция"
|
||||
|
||||
msgid "Section / Domain"
|
||||
msgstr ""
|
||||
|
||||
msgid "Section action"
|
||||
msgstr "Действие секции"
|
||||
|
||||
@@ -2699,6 +2735,9 @@ msgstr "Серверы на дашборде"
|
||||
msgid "Service action failed"
|
||||
msgstr "Действие сервиса не выполнено"
|
||||
|
||||
msgid "Service Health Check"
|
||||
msgstr ""
|
||||
|
||||
msgid "Service list"
|
||||
msgstr "Список сервисов"
|
||||
|
||||
@@ -3008,6 +3047,9 @@ msgstr "Tailscale endpoint"
|
||||
msgid "Tailscale hostname"
|
||||
msgstr "Hostname Tailscale"
|
||||
|
||||
msgid "TCP (ms)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Telegram Bot"
|
||||
msgstr "Telegram-бот"
|
||||
|
||||
@@ -3092,6 +3134,9 @@ msgstr "Допуск расхождения времени"
|
||||
msgid "tiny"
|
||||
msgstr "tiny"
|
||||
|
||||
msgid "TLS (ms)"
|
||||
msgstr ""
|
||||
|
||||
msgid "TLS / HTTPS"
|
||||
msgstr "TLS / HTTPS"
|
||||
|
||||
@@ -3392,6 +3437,9 @@ msgstr "Значение не может быть пустым"
|
||||
msgid "Value must not contain control characters"
|
||||
msgstr "Значение не должно содержать управляющие символы"
|
||||
|
||||
msgid "Verdict"
|
||||
msgstr ""
|
||||
|
||||
msgid "Via country.is"
|
||||
msgstr "Через country.is"
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: TACHYON\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2026-08-11 19:28+0300\n"
|
||||
"PO-Revision-Date: 2026-08-11 19:28+0300\n"
|
||||
"POT-Creation-Date: 2026-08-12 07:20+0300\n"
|
||||
"PO-Revision-Date: 2026-08-12 07:20+0300\n"
|
||||
"Last-Translator: Dushnilin <dushnilin@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
@@ -232,18 +232,18 @@ msgstr ""
|
||||
msgid "AI Doctor (ChatGPT / DeepSeek API)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:850
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1206
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:855
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1211
|
||||
msgid "AI Doctor Diagnosis"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:822
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:827
|
||||
msgid "AI Doctor Diagnostic Scan in Progress..."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:873
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1212
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1221
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:878
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1217
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1226
|
||||
msgid "AI Doctor failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -279,7 +279,7 @@ msgstr ""
|
||||
msgid "All except selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1063
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1068
|
||||
msgid "All fixes applied successfully"
|
||||
msgstr ""
|
||||
|
||||
@@ -344,7 +344,11 @@ msgstr ""
|
||||
msgid "AmneziaWG Generator"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:804
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:165
|
||||
msgid "An error occurred while checking services."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:809
|
||||
msgid "Analyzing system log (logread & errors)"
|
||||
msgstr ""
|
||||
|
||||
@@ -360,11 +364,11 @@ msgstr ""
|
||||
msgid "Apply section rules only to the specified local IP addresses"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1052
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1057
|
||||
msgid "Applying all fixes..."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1019
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1024
|
||||
msgid "Applying fix"
|
||||
msgstr ""
|
||||
|
||||
@@ -446,7 +450,7 @@ msgstr ""
|
||||
msgid "Automatically update remote hosts lists on schedule"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:50
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:52
|
||||
msgid "Available actions"
|
||||
msgstr ""
|
||||
|
||||
@@ -494,7 +498,7 @@ msgstr ""
|
||||
msgid "Browser is using FakeIP correctly"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1346
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1351
|
||||
msgid "Bug report downloaded"
|
||||
msgstr ""
|
||||
|
||||
@@ -617,12 +621,21 @@ msgstr ""
|
||||
msgid "Check Connection"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:115
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:131
|
||||
msgid "Check Custom Domain"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:2636
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3099
|
||||
#: src/tachyon/tabs/dashboard/initController.ts:1230
|
||||
msgid "Check interval"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:136
|
||||
msgid "Check Services"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3112
|
||||
msgid "Check timeout after which the server is considered dead"
|
||||
msgstr ""
|
||||
@@ -641,23 +654,23 @@ msgstr ""
|
||||
msgid "Checking Connection..."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:803
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:808
|
||||
msgid "Checking nftables filtering tables"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:802
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:807
|
||||
msgid "Checking sing-box service & DNSmasq"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:801
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:806
|
||||
msgid "Checking WAN interfaces & network routing"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:805
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:810
|
||||
msgid "Checking Zapret & ByeDPI rules"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1628
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1639
|
||||
#: src/tachyon/tabs/diagnostic/checks/runByedpiCheck.ts:14
|
||||
#: src/tachyon/tabs/diagnostic/checks/runDnsCheck.ts:15
|
||||
#: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:15
|
||||
@@ -686,14 +699,14 @@ msgstr ""
|
||||
msgid "checks"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:26
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:10
|
||||
msgid "Checks failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:23
|
||||
#: src/tachyon/tabs/diagnostic/checks/runFakeIPCheck.ts:43
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:13
|
||||
msgid "Checks passed"
|
||||
msgstr ""
|
||||
|
||||
@@ -758,9 +771,10 @@ msgstr ""
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1717
|
||||
#: src/partials/modal/renderModal.ts:263
|
||||
#: src/tachyon/tabs/dashboard/initController.ts:1085
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1194
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1199
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:884
|
||||
#: src/tachyon/tabs/monitoring/initController.ts:934
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:28
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
@@ -876,7 +890,7 @@ msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/server.js:1693
|
||||
#: src/partials/modal/renderModal.ts:258
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1189
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1194
|
||||
msgid "Copy"
|
||||
msgstr ""
|
||||
|
||||
@@ -894,7 +908,7 @@ msgstr ""
|
||||
msgid "Country code (e.g. ru, us, de)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1157
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1162
|
||||
msgid "Current Diagnosis"
|
||||
msgstr ""
|
||||
|
||||
@@ -923,6 +937,10 @@ msgstr ""
|
||||
msgid "Custom DNS Records (Hosts)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:113
|
||||
msgid "Custom domain (e.g. google.com)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/settings.js:1271
|
||||
msgid "Custom OpenAI-Compatible API (OpenRouter)"
|
||||
msgstr ""
|
||||
@@ -1021,7 +1039,7 @@ msgstr ""
|
||||
msgid "Direct connection"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:86
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:88
|
||||
msgid "Disable autostart"
|
||||
msgstr ""
|
||||
|
||||
@@ -1184,14 +1202,14 @@ msgstr ""
|
||||
msgid "Do not test specified servers."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:715
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:753
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:761
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:720
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:758
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:766
|
||||
msgid "Doctor failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:731
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:740
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:736
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:745
|
||||
msgid "Doctor repair"
|
||||
msgstr ""
|
||||
|
||||
@@ -1345,7 +1363,7 @@ msgstr ""
|
||||
msgid "Enable automatic updates for remote lists and rule sets"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:96
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:98
|
||||
msgid "Enable autostart"
|
||||
msgstr ""
|
||||
|
||||
@@ -1568,7 +1586,7 @@ msgstr ""
|
||||
msgid "External nfqws2 config files bypass Tachyon queue management and explicit validation."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1039
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1044
|
||||
msgid "Failed to apply fix"
|
||||
msgstr ""
|
||||
|
||||
@@ -1596,7 +1614,11 @@ msgstr ""
|
||||
msgid "Failed to execute"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1349
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:44
|
||||
msgid "Failed to execute service check."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1354
|
||||
msgid "Failed to generate bug report"
|
||||
msgstr ""
|
||||
|
||||
@@ -1609,6 +1631,10 @@ msgstr ""
|
||||
msgid "Failed to parse file:"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:52
|
||||
msgid "Failed to parse service check results."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:8148
|
||||
msgid "Failed to parse WARP config:"
|
||||
msgstr ""
|
||||
@@ -1688,6 +1714,10 @@ msgstr ""
|
||||
msgid "Fastest"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:19
|
||||
msgid "Fetching service status, please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:3312
|
||||
msgid "Filter the servers that will be displayed on the dashboard."
|
||||
msgstr ""
|
||||
@@ -1700,11 +1730,11 @@ msgstr ""
|
||||
msgid "Firewall WAN port"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1050
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1055
|
||||
msgid "Fix All"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1034
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1039
|
||||
msgid "Fix applied"
|
||||
msgstr ""
|
||||
|
||||
@@ -1713,8 +1743,8 @@ msgstr ""
|
||||
msgid "Fix the highlighted fields and save again."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:737
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1030
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:742
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1035
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
@@ -1758,7 +1788,7 @@ msgstr ""
|
||||
msgid "Generate a random 16-character hexadecimal HWID"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:151
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:163
|
||||
msgid "Generate bug report"
|
||||
msgstr ""
|
||||
|
||||
@@ -1809,11 +1839,11 @@ msgstr ""
|
||||
msgid "GET endpoints are open on LAN. POST endpoints require Authorization: Bearer <token>."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:105
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:107
|
||||
msgid "Get global check"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:691
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:696
|
||||
msgid "Global check"
|
||||
msgstr ""
|
||||
|
||||
@@ -1936,6 +1966,10 @@ msgstr ""
|
||||
msgid "HTTP"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:67
|
||||
msgid "HTTP (ms)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/api.ts:27
|
||||
msgid "HTTP error"
|
||||
msgstr ""
|
||||
@@ -2393,6 +2427,10 @@ msgstr ""
|
||||
msgid "Invalid VMess URL: parsing failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:64
|
||||
msgid "IP / DNS"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10203
|
||||
msgid "IP Addresses (IP CIDR)"
|
||||
msgstr ""
|
||||
@@ -2413,12 +2451,12 @@ msgstr ""
|
||||
msgid "Isolate BitTorrent traffic and force it direct to prevent VPN bans"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:733
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:738
|
||||
msgid "Issues"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17
|
||||
#: src/tachyon/tabs/diagnostic/helpers/getMeta.ts:20
|
||||
#: src/tachyon/tabs/diagnostic/checks/getCheckItemsMeta.ts:17
|
||||
msgid "Issues detected"
|
||||
msgstr ""
|
||||
|
||||
@@ -2816,7 +2854,7 @@ msgstr ""
|
||||
msgid "No Custom Rules Matched"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1092
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1097
|
||||
msgid "No diagnostic history available yet."
|
||||
msgstr ""
|
||||
|
||||
@@ -2824,6 +2862,10 @@ msgstr ""
|
||||
msgid "No domains detected yet"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:57
|
||||
msgid "No domains found to check."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/checks/runInboundsCheck.ts:187
|
||||
msgid "No enabled server inbounds configured"
|
||||
msgstr ""
|
||||
@@ -2832,7 +2874,7 @@ msgstr ""
|
||||
msgid "No file selected"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:740
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:745
|
||||
msgid "No issues found"
|
||||
msgstr ""
|
||||
|
||||
@@ -2844,7 +2886,7 @@ msgstr ""
|
||||
msgid "No public firewall port required"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1082
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1087
|
||||
msgid "No quick fix required"
|
||||
msgstr ""
|
||||
|
||||
@@ -2918,11 +2960,11 @@ msgstr ""
|
||||
msgid "Not responding"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:137
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:122
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:352
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:410
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:496
|
||||
#: src/tachyon/tabs/diagnostic/diagnostic.store.ts:140
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:123
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:353
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:411
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:497
|
||||
msgid "Not running"
|
||||
msgstr ""
|
||||
|
||||
@@ -3069,6 +3111,10 @@ msgstr ""
|
||||
msgid "Or paste hosts file content:"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:63
|
||||
msgid "Outbound"
|
||||
msgstr ""
|
||||
|
||||
#: src/validators/validateOutboundJson.ts:111
|
||||
msgid "outbounds must be a non-empty array of strings"
|
||||
msgstr ""
|
||||
@@ -3374,7 +3420,7 @@ msgstr ""
|
||||
msgid "Rebuilt release"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1002
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1007
|
||||
msgid "Recommended Smart Quick Fixes:"
|
||||
msgstr ""
|
||||
|
||||
@@ -3463,7 +3509,7 @@ msgstr ""
|
||||
msgid "Response Packet Magic Header (S4)"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:56
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:58
|
||||
msgid "Restart Tachyon"
|
||||
msgstr ""
|
||||
|
||||
@@ -3561,7 +3607,7 @@ msgstr ""
|
||||
msgid "Rules proxy exist"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:124
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:126
|
||||
msgid "Run AI Doctor"
|
||||
msgstr ""
|
||||
|
||||
@@ -3569,11 +3615,11 @@ msgstr ""
|
||||
msgid "Run Diagnostic"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:114
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:116
|
||||
msgid "Run doctor repair"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1169
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1174
|
||||
msgid "Run History"
|
||||
msgstr ""
|
||||
|
||||
@@ -3634,6 +3680,10 @@ msgstr ""
|
||||
msgid "Section"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:62
|
||||
msgid "Section / Domain"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:10198
|
||||
msgid "Section action"
|
||||
msgstr ""
|
||||
@@ -3868,10 +3918,14 @@ msgstr ""
|
||||
|
||||
#: src/tachyon/methods/shell/index.ts:401
|
||||
#: src/tachyon/methods/shell/index.ts:422
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:603
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:604
|
||||
msgid "Service action failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:24
|
||||
msgid "Service Health Check"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9325
|
||||
msgid "Service list"
|
||||
msgstr ""
|
||||
@@ -3922,8 +3976,8 @@ msgstr ""
|
||||
msgid "Show servers whose names match the expression."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1282
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:142
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1287
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:154
|
||||
msgid "Show sing-box config"
|
||||
msgstr ""
|
||||
|
||||
@@ -3995,7 +4049,7 @@ msgstr ""
|
||||
msgid "Snell Version"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1067
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1072
|
||||
msgid "Some fixes failed"
|
||||
msgstr ""
|
||||
|
||||
@@ -4091,7 +4145,7 @@ msgstr ""
|
||||
msgid "Start bot"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:76
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:78
|
||||
msgid "Start Tachyon"
|
||||
msgstr ""
|
||||
|
||||
@@ -4121,7 +4175,7 @@ msgstr ""
|
||||
msgid "Stop checking when URLTest group is not used. Use sing-box duration format like 1d, 12h or 30m."
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:66
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:68
|
||||
msgid "Stop Tachyon"
|
||||
msgstr ""
|
||||
|
||||
@@ -4300,6 +4354,10 @@ msgstr ""
|
||||
msgid "Tailscale hostname"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:65
|
||||
msgid "TCP (ms)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/tachyon.js:473
|
||||
msgid "Telegram Bot"
|
||||
msgstr ""
|
||||
@@ -4424,6 +4482,10 @@ msgstr ""
|
||||
msgid "tiny"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:66
|
||||
msgid "TLS (ms)"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9531
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:9550
|
||||
msgid "TLS / HTTPS"
|
||||
@@ -4648,10 +4710,10 @@ msgid "Unknown country"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/api.ts:40
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:715
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:752
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:873
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1211
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:720
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:757
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:878
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1216
|
||||
msgid "Unknown error"
|
||||
msgstr ""
|
||||
|
||||
@@ -4896,12 +4958,16 @@ msgstr ""
|
||||
msgid "Value must not contain control characters"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderServiceCheckModal.ts:68
|
||||
msgid "Verdict"
|
||||
msgstr ""
|
||||
|
||||
#: ../luci-app-tachyon/htdocs/luci-static/resources/view/tachyon/section.js:1977
|
||||
msgid "Via country.is"
|
||||
msgstr ""
|
||||
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1247
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:133
|
||||
#: src/tachyon/tabs/diagnostic/initController.ts:1252
|
||||
#: src/tachyon/tabs/diagnostic/partials/renderAvailableActions.ts:145
|
||||
msgid "View logs"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env ucode
|
||||
|
||||
let fs = require("fs");
|
||||
let uci = require("uci");
|
||||
|
||||
let TARGET_DOMAINS = {
|
||||
youtube: "www.youtube.com",
|
||||
discord: "discord.com",
|
||||
telegram: "web.telegram.org",
|
||||
instagram: "www.instagram.com",
|
||||
twitter: "twitter.com",
|
||||
facebook: "www.facebook.com",
|
||||
rutracker: "rutracker.org",
|
||||
tiktok: "www.tiktok.com",
|
||||
google_ai: "gemini.google.com",
|
||||
openai: "chatgpt.com",
|
||||
github: "github.com",
|
||||
netflix: "www.netflix.com",
|
||||
russia_inside: "www.instagram.com"
|
||||
};
|
||||
|
||||
function perform_curl_check(domain) {
|
||||
let url = "https://" + domain;
|
||||
let cmd = sprintf("curl -k -s -o /dev/null -w '%%{time_namelookup}|%%{time_connect}|%%{time_appconnect}|%%{time_starttransfer}|%%{time_total}|%%{http_code}|%%{remote_ip}' --connect-timeout 5 --max-time 10 %s", url);
|
||||
let f = fs.popen(cmd, "r");
|
||||
if (!f) return null;
|
||||
let result_str = f.read("all");
|
||||
let exit_code = f.close();
|
||||
|
||||
// exit_code is shifted by 8 in popen close
|
||||
exit_code = exit_code / 256;
|
||||
|
||||
let parts = split(result_str, "|");
|
||||
if (length(parts) < 7) {
|
||||
return { success: false, error: "curl_failed", exit_code: exit_code };
|
||||
}
|
||||
|
||||
let time_namelookup = int(1000 * float(parts[0]));
|
||||
let time_connect = int(1000 * float(parts[1]));
|
||||
let time_appconnect = int(1000 * float(parts[2]));
|
||||
let time_starttransfer = int(1000 * float(parts[3]));
|
||||
let time_total = int(1000 * float(parts[4]));
|
||||
let http_code = int(parts[5]);
|
||||
let remote_ip = parts[6];
|
||||
|
||||
let tcp_ms = time_connect > 0 ? time_connect - time_namelookup : 0;
|
||||
let tls_ms = time_appconnect > 0 ? time_appconnect - time_connect : 0;
|
||||
let http_ms = time_starttransfer > 0 ? time_starttransfer - time_appconnect : 0;
|
||||
|
||||
let status_class = "OK";
|
||||
|
||||
if (exit_code == 6) status_class = "DNS Error";
|
||||
else if (exit_code == 7 || exit_code == 28) status_class = "TCP Timeout/Refused";
|
||||
else if (exit_code == 35 || (exit_code == 0 && time_appconnect == 0 && time_connect > 0)) status_class = "TLS Reset";
|
||||
else if (exit_code != 0) status_class = "Error (" + exit_code + ")";
|
||||
else if (http_code == 403 || http_code == 451) status_class = "HTTP " + http_code;
|
||||
else if (http_code >= 200 && http_code < 400) status_class = "OK";
|
||||
else status_class = "HTTP " + http_code;
|
||||
|
||||
return {
|
||||
success: exit_code == 0 && (http_code >= 200 && http_code < 400),
|
||||
status_class: status_class,
|
||||
dns_ms: time_namelookup,
|
||||
tcp_ms: tcp_ms,
|
||||
tls_ms: tls_ms,
|
||||
http_ms: http_ms,
|
||||
total_ms: time_total,
|
||||
http_code: http_code,
|
||||
remote_ip: remote_ip,
|
||||
exit_code: exit_code
|
||||
};
|
||||
}
|
||||
|
||||
function process_sections() {
|
||||
let cursor = uci.cursor();
|
||||
cursor.load("tachyon");
|
||||
|
||||
let results = [];
|
||||
|
||||
cursor.foreach("tachyon", "section", function(s) {
|
||||
if (s.enabled != "1") return;
|
||||
|
||||
let domains_to_check = [];
|
||||
|
||||
if (type(s.community_lists) == "array") {
|
||||
for (let i = 0; i < length(s.community_lists); i++) {
|
||||
let list_name = s.community_lists[i];
|
||||
if (TARGET_DOMAINS[list_name]) {
|
||||
push(domains_to_check, TARGET_DOMAINS[list_name]);
|
||||
}
|
||||
}
|
||||
} else if (type(s.community_lists) == "string") {
|
||||
if (TARGET_DOMAINS[s.community_lists]) {
|
||||
push(domains_to_check, TARGET_DOMAINS[s.community_lists]);
|
||||
}
|
||||
}
|
||||
|
||||
let unique_domains = {};
|
||||
for (let i = 0; i < length(domains_to_check); i++) {
|
||||
unique_domains[domains_to_check[i]] = true;
|
||||
}
|
||||
|
||||
for (let domain in keys(unique_domains)) {
|
||||
let label = s.label || s['.name'];
|
||||
let route_type = s.action || "direct";
|
||||
|
||||
if (s.action == "zapret" && s.zapret_strategy) {
|
||||
route_type = "zapret (" + s.zapret_strategy + ")";
|
||||
} else if (s.action == "zapret2" && s.zapret2_strategy) {
|
||||
route_type = "zapret2 (" + s.zapret2_strategy + ")";
|
||||
} else if (s.action == "byedpi" && s.byedpi_strategy) {
|
||||
route_type = "byedpi (" + s.byedpi_strategy + ")";
|
||||
}
|
||||
|
||||
let res = perform_curl_check(domain);
|
||||
let check_result = {
|
||||
section: label,
|
||||
route_type: route_type,
|
||||
domain: domain,
|
||||
ip: res ? res.remote_ip : "",
|
||||
dns_ms: res ? res.dns_ms : 0,
|
||||
tcp_ms: res ? res.tcp_ms : 0,
|
||||
tls_ms: res ? res.tls_ms : 0,
|
||||
http_ms: res ? res.http_ms : 0,
|
||||
status_class: res ? res.status_class : "Error",
|
||||
success: res ? res.success : false
|
||||
};
|
||||
push(results, check_result);
|
||||
}
|
||||
});
|
||||
|
||||
print(sprintf("%J", results), "\n");
|
||||
}
|
||||
|
||||
function process_custom_domain(domain) {
|
||||
let res = perform_curl_check(domain);
|
||||
let results = [{
|
||||
section: "Custom",
|
||||
route_type: "auto",
|
||||
domain: domain,
|
||||
ip: res ? res.remote_ip : "",
|
||||
dns_ms: res ? res.dns_ms : 0,
|
||||
tcp_ms: res ? res.tcp_ms : 0,
|
||||
tls_ms: res ? res.tls_ms : 0,
|
||||
http_ms: res ? res.http_ms : 0,
|
||||
status_class: res ? res.status_class : "Error",
|
||||
success: res ? res.success : false
|
||||
}];
|
||||
print(sprintf("%J", results), "\n");
|
||||
}
|
||||
|
||||
if (ARGV[0] == "check-custom" && ARGV[1]) {
|
||||
process_custom_domain(ARGV[1]);
|
||||
} else {
|
||||
process_sections();
|
||||
}
|
||||
@@ -2031,6 +2031,8 @@ else if (mode == "clash-proxy-latencies-result")
|
||||
clash_proxy_latencies_result(ARGV[1], ARGV[2]);
|
||||
else if (mode == "clash-unknown-action")
|
||||
clash_unknown_action();
|
||||
else if (mode == "service-health-check")
|
||||
system("ucode /usr/lib/tachyon/diagnostics/service_check.uc " + (ARGV[1] || ""));
|
||||
else {
|
||||
warn("Usage: diagnostics/status.uc <operation> ...\n");
|
||||
exit(1);
|
||||
|
||||
Reference in New Issue
Block a user