Fix diagnostics version and status handling

This commit is contained in:
ushan0v
2026-05-08 02:17:48 +03:00
parent 259955ef98
commit d0b762d292
13 changed files with 761 additions and 494 deletions
+144 -121
View File
@@ -35,7 +35,7 @@
"call": "A latency-tested group of proxy URLs for this section",
"key": "A latency-tested group of proxy URLs for this section",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1879"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1907"
]
},
{
@@ -49,15 +49,15 @@
"call": "A manual group of proxy URLs for this section",
"key": "A manual group of proxy URLs for this section",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1861"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1889"
]
},
{
"call": "Action",
"key": "Action",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1631",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1663"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1659",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1691"
]
},
{
@@ -78,14 +78,14 @@
"call": "Add URLs or local paths to .lst lists",
"key": "Add URLs or local paths to .lst lists",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2297"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2325"
]
},
{
"call": "Add URLs or local paths to .srs / .json lists",
"key": "Add URLs or local paths to .srs / .json lists",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2282"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2310"
]
},
{
@@ -114,21 +114,21 @@
"key": "Applicable for SOCKS and Shadowsocks links",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:170",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1993"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2021"
]
},
{
"call": "At least one valid domain must be specified.",
"key": "At least one valid domain must be specified.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:916"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:944"
]
},
{
"call": "At least one valid IP or subnet must be specified.",
"key": "At least one valid IP or subnet must be specified.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:927"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:955"
]
},
{
@@ -149,7 +149,7 @@
"call": "Backend validation failed: %s",
"key": "Backend validation failed: %s",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1018"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1046"
]
},
{
@@ -191,7 +191,7 @@
"call": "Built-in rule sets",
"key": "Built-in rule sets",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2187"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2215"
]
},
{
@@ -219,6 +219,13 @@
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:27"
]
},
{
"call": "Checking",
"key": "Checking",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:472"
]
},
{
"call": "Checking, please wait",
"key": "Checking, please wait",
@@ -242,18 +249,18 @@
"call": "Checks failed",
"key": "Checks failed",
"places": [
"src/podkop/tabs/diagnostic/helpers/getMeta.ts:26",
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:58",
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:61",
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:64",
"src/podkop/tabs/diagnostic/helpers/getMeta.ts:26"
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:64"
]
},
{
"call": "Checks passed",
"key": "Checks passed",
"places": [
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:54",
"src/podkop/tabs/diagnostic/helpers/getMeta.ts:13"
"src/podkop/tabs/diagnostic/helpers/getMeta.ts:13",
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:54"
]
},
{
@@ -281,7 +288,7 @@
"call": "Conditions",
"key": "Conditions",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1619"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1647"
]
},
{
@@ -302,14 +309,14 @@
"call": "Connection",
"key": "Connection",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1749"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1777"
]
},
{
"call": "Connection Type",
"key": "Connection Type",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1731"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1759"
]
},
{
@@ -317,7 +324,7 @@
"key": "Connection URL",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:19",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1734"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1762"
]
},
{
@@ -362,6 +369,14 @@
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:235"
]
},
{
"call": "Dev",
"key": "Dev",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:483",
"src/podkop/tabs/diagnostic/initController.ts:534"
]
},
{
"call": "DHCP has DNS server",
"key": "DHCP has DNS server",
@@ -424,7 +439,7 @@
"key": "DNS over HTTPS (DoH)",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:227",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2058",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2086",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:21"
]
},
@@ -433,7 +448,7 @@
"key": "DNS over TLS (DoT)",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:228",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2059",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2087",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:22"
]
},
@@ -441,7 +456,7 @@
"call": "DNS protocol",
"key": "DNS protocol",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2056"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2084"
]
},
{
@@ -469,7 +484,7 @@
"call": "DNS server",
"key": "DNS server",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2074"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2102"
]
},
{
@@ -498,28 +513,28 @@
"call": "Domain and IP Lists",
"key": "Domain and IP Lists",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2296"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2324"
]
},
{
"call": "Domain keyword",
"key": "Domain keyword",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2157"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2185"
]
},
{
"call": "Domain regex",
"key": "Domain regex",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2164"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2192"
]
},
{
"call": "Domains",
"key": "Domains",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2129"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2157"
]
},
{
@@ -608,7 +623,7 @@
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:8",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/ruleset.js:10",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1621"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1649"
]
},
{
@@ -622,7 +637,7 @@
"call": "Enable a dedicated DNS resolver when this section uses an interface",
"key": "Enable a dedicated DNS resolver when this section uses an interface",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2045"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2073"
]
},
{
@@ -636,7 +651,7 @@
"call": "Enable Mixed Proxy",
"key": "Enable Mixed Proxy",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2096"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2124"
]
},
{
@@ -665,14 +680,14 @@
"key": "Enter a complete sing-box outbound object",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:52",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1772"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1800"
]
},
{
"call": "Enter the subscription URL to fetch proxy configurations from your provider",
"key": "Enter the subscription URL to fetch proxy configurations from your provider",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1794"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1822"
]
},
{
@@ -707,7 +722,7 @@
"call": "Exact full domain",
"key": "Exact full domain",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2143"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2171"
]
},
{
@@ -735,14 +750,14 @@
"call": "Expose this section as a local HTTP+SOCKS proxy",
"key": "Expose this section as a local HTTP+SOCKS proxy",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2097"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2125"
]
},
{
"call": "External nfqws config files bypass Podkop Plus queue management and explicit validation.",
"key": "External nfqws config files bypass Podkop Plus queue management and explicit validation.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1079"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1107"
]
},
{
@@ -756,12 +771,12 @@
"call": "Failed to execute!",
"key": "Failed to execute!",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:256",
"src/podkop/tabs/diagnostic/initController.ts:260",
"src/podkop/tabs/diagnostic/initController.ts:306",
"src/podkop/tabs/diagnostic/initController.ts:310",
"src/podkop/tabs/diagnostic/initController.ts:347",
"src/podkop/tabs/diagnostic/initController.ts:351"
"src/podkop/tabs/diagnostic/initController.ts:254",
"src/podkop/tabs/diagnostic/initController.ts:258",
"src/podkop/tabs/diagnostic/initController.ts:293",
"src/podkop/tabs/diagnostic/initController.ts:297",
"src/podkop/tabs/diagnostic/initController.ts:323",
"src/podkop/tabs/diagnostic/initController.ts:327"
]
},
{
@@ -792,21 +807,21 @@
"call": "Global check",
"key": "Global check",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:251"
"src/podkop/tabs/diagnostic/initController.ts:249"
]
},
{
"call": "Group subscription proxies by country",
"key": "Group subscription proxies by country",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1848"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1876"
]
},
{
"call": "Group subscription proxies by the country flag at the beginning of the outbound tag",
"key": "Group subscription proxies by the country flag at the beginning of the outbound tag",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1849"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1877"
]
},
{
@@ -820,7 +835,7 @@
"call": "How to configure the proxy connection for this section",
"key": "How to configure the proxy connection for this section",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1732"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1760"
]
},
{
@@ -836,8 +851,8 @@
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:23",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:179",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1739",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2004"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1767",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2032"
]
},
{
@@ -999,7 +1014,7 @@
"call": "Invalid port number. Must be between 1 and 65535",
"key": "Invalid port number. Must be between 1 and 65535",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2124",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2152",
"src/validators/validateShadowsocksUrl.ts:85"
]
},
@@ -1162,7 +1177,7 @@
"key": "Invalid URL format",
"places": [
"src/validators/validateUrl.ts:8",
"src/validators/validateUrl.ts:31"
"src/validators/validateUrl.ts:38"
]
},
{
@@ -1183,16 +1198,16 @@
"call": "IPs",
"key": "IPs",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2136"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2164"
]
},
{
"call": "Issues detected",
"key": "Issues detected",
"places": [
"src/podkop/tabs/diagnostic/helpers/getMeta.ts:20",
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:67",
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:70",
"src/podkop/tabs/diagnostic/helpers/getMeta.ts:20"
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:70"
]
},
{
@@ -1206,14 +1221,14 @@
"call": "Latest",
"key": "Latest",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:524"
"src/podkop/tabs/diagnostic/initController.ts:544"
]
},
{
"call": "List must be a direct .lst URL or a local .lst path",
"key": "List must be a direct .lst URL or a local .lst path",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1584"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1612"
]
},
{
@@ -1255,42 +1270,42 @@
"call": "Match destination IPs or subnets",
"key": "Match destination IPs or subnets",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2137"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2165"
]
},
{
"call": "Match domains containing a substring",
"key": "Match domains containing a substring",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2158"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2186"
]
},
{
"call": "Match domains including all subdomains",
"key": "Match domains including all subdomains",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2130"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2158"
]
},
{
"call": "Match domains using a regular expression",
"key": "Match domains using a regular expression",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2165"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2193"
]
},
{
"call": "Match only one exact full domain name",
"key": "Match only one exact full domain name",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2144"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2172"
]
},
{
"call": "Match source IPs or subnets",
"key": "Match source IPs or subnets",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2172"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2200"
]
},
{
@@ -1298,7 +1313,7 @@
"key": "Maximum response time delta in milliseconds",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:114",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1929"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1957"
]
},
{
@@ -1312,7 +1327,7 @@
"call": "Mixed Proxy Port",
"key": "Mixed Proxy Port",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2108"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2136"
]
},
{
@@ -1327,7 +1342,7 @@
"key": "Must be a number in the range of 50 - 1000",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:136",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1952"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1980"
]
},
{
@@ -1348,14 +1363,14 @@
"call": "NFQWS Strategy",
"key": "NFQWS Strategy",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1697"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1725"
]
},
{
"call": "NFQWS strategy cannot be empty",
"key": "NFQWS strategy cannot be empty",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1209"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1237"
]
},
{
@@ -1390,7 +1405,7 @@
"call": "not installed",
"key": "not installed",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:547"
"src/podkop/tabs/diagnostic/initController.ts:567"
]
},
{
@@ -1446,7 +1461,7 @@
"call": "Optional values must be attached with '=' here; a separate token would be ignored by nfqws.",
"key": "Optional values must be attached with '=' here; a separate token would be ignored by nfqws.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1287"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1315"
]
},
{
@@ -1455,15 +1470,15 @@
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:22",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:51",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1738",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1771"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1766",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1799"
]
},
{
"call": "Outdated",
"key": "Outdated",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:514"
"src/podkop/tabs/diagnostic/initController.ts:523"
]
},
{
@@ -1524,7 +1539,7 @@
"call": "Podkop Plus manages the nfqws process lifecycle itself, so daemon mode is not allowed here.",
"key": "Podkop Plus manages the nfqws process lifecycle itself, so daemon mode is not allowed here.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1097"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1125"
]
},
{
@@ -1566,14 +1581,14 @@
"call": "Port cannot be empty",
"key": "Port cannot be empty",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2116"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2144"
]
},
{
"call": "Port for the local mixed proxy of this section",
"key": "Port for the local mixed proxy of this section",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2109"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2137"
]
},
{
@@ -1601,7 +1616,7 @@
"call": "Regional options cannot be used together",
"key": "Regional options cannot be used together",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2226"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2254"
]
},
{
@@ -1622,7 +1637,7 @@
"call": "Resolver for interface outbound",
"key": "Resolver for interface outbound",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2044"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2072"
]
},
{
@@ -1636,14 +1651,14 @@
"call": "Resource selection by hostname inside nfqws is not supported here; sing-box selects resources before NFQUEUE.",
"key": "Resource selection by hostname inside nfqws is not supported here; sing-box selects resources before NFQUEUE.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1082"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1110"
]
},
{
"call": "Resource selection by IP or CIDR inside nfqws is not supported here; sing-box selects resources before NFQUEUE.",
"key": "Resource selection by IP or CIDR inside nfqws is not supported here; sing-box selects resources before NFQUEUE.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1085"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1113"
]
},
{
@@ -1664,7 +1679,7 @@
"call": "Rule set must be a direct .srs / .json URL or a local .srs / .json path",
"key": "Rule set must be a direct .srs / .json URL or a local .srs / .json path",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1576"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1604"
]
},
{
@@ -1678,7 +1693,7 @@
"call": "Rule sets",
"key": "Rule sets",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2281"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2309"
]
},
{
@@ -1734,7 +1749,7 @@
"call": "Russia inside restrictions",
"key": "Russia inside restrictions",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2245"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2273"
]
},
{
@@ -1762,7 +1777,7 @@
"call": "Section name",
"key": "Section name",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1650"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1678"
]
},
{
@@ -1776,7 +1791,7 @@
"call": "Select a predefined list for routing",
"key": "Select a predefined list for routing",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2188"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2216"
]
},
{
@@ -1839,7 +1854,7 @@
"call": "Selector connections",
"key": "Selector connections",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1860"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1888"
]
},
{
@@ -1853,7 +1868,7 @@
"call": "Service list",
"key": "Service list",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2191"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2219"
]
},
{
@@ -1868,14 +1883,14 @@
"key": "Settings",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:408",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1618"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1646"
]
},
{
"call": "Show sing-box config",
"key": "Show sing-box config",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:335",
"src/podkop/tabs/diagnostic/initController.ts:311",
"src/podkop/tabs/diagnostic/partials/renderAvailableActions.ts:116"
]
},
@@ -1946,7 +1961,7 @@
"call": "Source IPs",
"key": "Source IPs",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2171"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2199"
]
},
{
@@ -2002,21 +2017,21 @@
"call": "Subscription",
"key": "Subscription",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1737"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1765"
]
},
{
"call": "Subscription update interval",
"key": "Subscription update interval",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1813"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1841"
]
},
{
"call": "Subscription URL",
"key": "Subscription URL",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1793"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1821"
]
},
{
@@ -2065,7 +2080,7 @@
"call": "The desync fwmark is managed by Podkop Plus for loop prevention and must not be overridden here.",
"key": "The desync fwmark is managed by Podkop Plus for loop prevention and must not be overridden here.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1094"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1122"
]
},
{
@@ -2079,7 +2094,7 @@
"call": "The NFQUEUE number is assigned by Podkop Plus for each rule and must not be overridden here.",
"key": "The NFQUEUE number is assigned by Podkop Plus for each rule and must not be overridden here.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1091"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1119"
]
},
{
@@ -2093,28 +2108,28 @@
"call": "This field must start a working nfqws strategy; --dry-run exits immediately and is not allowed here.",
"key": "This field must start a working nfqws strategy; --dry-run exits immediately and is not allowed here.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1100"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1128"
]
},
{
"call": "This field must start a working nfqws strategy; --version exits immediately and is not allowed here.",
"key": "This field must start a working nfqws strategy; --version exits immediately and is not allowed here.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1103"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1131"
]
},
{
"call": "This flag does not accept a value.",
"key": "This flag does not accept a value.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1272"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1300"
]
},
{
"call": "This option requires a value.",
"key": "This option requires a value.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1303"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1331"
]
},
{
@@ -2178,14 +2193,14 @@
"key": "UDP over TCP",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:169",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1992"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2020"
]
},
{
"call": "Unable to validate the NFQWS strategy through the backend parser.",
"key": "Unable to validate the NFQWS strategy through the backend parser.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1014"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1042"
]
},
{
@@ -2199,7 +2214,7 @@
"call": "Unexpected standalone token. Use explicit flags such as --name or --name=value.",
"key": "Unexpected standalone token. Use explicit flags such as --name or --name=value.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1252"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1280"
]
},
{
@@ -2213,14 +2228,14 @@
"call": "unknown",
"key": "unknown",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:26",
"src/podkop/tabs/diagnostic/initController.ts:27",
"src/podkop/tabs/diagnostic/initController.ts:28",
"src/podkop/tabs/diagnostic/initController.ts:29",
"src/podkop/tabs/diagnostic/initController.ts:30",
"src/podkop/tabs/diagnostic/initController.ts:31",
"src/podkop/tabs/diagnostic/initController.ts:32",
"src/podkop/tabs/diagnostic/initController.ts:33",
"src/podkop/tabs/diagnostic/initController.ts:486"
"src/podkop/tabs/diagnostic/initController.ts:34",
"src/podkop/tabs/diagnostic/initController.ts:36",
"src/podkop/tabs/diagnostic/initController.ts:37",
"src/podkop/tabs/diagnostic/initController.ts:457"
]
},
{
@@ -2234,7 +2249,7 @@
"call": "Unknown NFQWS flag.",
"key": "Unknown NFQWS flag.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1263"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1291"
]
},
{
@@ -2270,14 +2285,14 @@
"call": "URLTest connections",
"key": "URLTest connections",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1878"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1906"
]
},
{
"call": "URLTest interval",
"key": "URLTest interval",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1896"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1924"
]
},
{
@@ -2298,7 +2313,7 @@
"call": "URLTest tolerance",
"key": "URLTest tolerance",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1928"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1956"
]
},
{
@@ -2313,7 +2328,7 @@
"key": "URLTest URL",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:139",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1959"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1987"
]
},
{
@@ -2327,7 +2342,7 @@
"call": "Use a network interface as the outbound for this section",
"key": "Use a network interface as the outbound for this section",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2005"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2033"
]
},
{
@@ -2342,7 +2357,7 @@
"call": "Use sing-box duration format. Leave empty to disable automatic updates.",
"key": "Use sing-box duration format. Leave empty to disable automatic updates.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1814",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1842",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:283"
]
},
@@ -2350,7 +2365,7 @@
"call": "Use sing-box duration format. Leave empty to disable periodic URLTest checks.",
"key": "Use sing-box duration format. Leave empty to disable periodic URLTest checks.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1897"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1925"
]
},
{
@@ -2369,7 +2384,7 @@
"src/validators/validateSocksUrl.ts:80",
"src/validators/validateSubnet.ts:38",
"src/validators/validateTrojanUrl.ts:59",
"src/validators/validateUrl.ts:28",
"src/validators/validateUrl.ts:35",
"src/validators/validateVlessUrl.ts:108"
]
},
@@ -2382,11 +2397,19 @@
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:480"
]
},
{
"call": "Check unavailable",
"key": "Check unavailable",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:494",
"src/podkop/tabs/diagnostic/initController.ts:507"
]
},
{
"call": "View logs",
"key": "View logs",
"places": [
"src/podkop/tabs/diagnostic/initController.ts:295",
"src/podkop/tabs/diagnostic/initController.ts:282",
"src/podkop/tabs/diagnostic/partials/renderAvailableActions.ts:107"
]
},
@@ -2394,7 +2417,7 @@
"call": "Visible name of this section",
"key": "Visible name of this section",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1651"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1679"
]
},
{
@@ -2402,28 +2425,28 @@
"key": "vless://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:32",
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1750"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1778"
]
},
{
"call": "Warning: %s cannot be used together with %s. Previous selections have been removed.",
"key": "Warning: %s cannot be used together with %s. Previous selections have been removed.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2228"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2256"
]
},
{
"call": "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection.",
"key": "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2247"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2275"
]
},
{
"call": "What Podkop Plus should do when this section matches",
"key": "What Podkop Plus should do when this section matches",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1664"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1692"
]
},
{
@@ -2452,7 +2475,7 @@
"call": "Zapret hostlist templates are not supported here because Podkop Plus does not expand them for per-rule NFQWS strategies.",
"key": "Zapret hostlist templates are not supported here because Podkop Plus does not expand them for per-rule NFQWS strategies.",
"places": [
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1088"
"../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1116"
]
},
{
@@ -2483,4 +2506,4 @@
"src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:82"
]
}
]
]
+135 -121
View File
@@ -1,15 +1,15 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2026 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PODKOP PLUS package.
# Podkop Plus <noreply@podkop.plus>, 2026.
# ushan0v <142658494+ushan0v@users.noreply.github.com>, 2026.
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-07 09:30+0300\n"
"PO-Revision-Date: 2026-05-07 09:30+0300\n"
"Last-Translator: Podkop Plus <noreply@podkop.plus>\n"
"POT-Creation-Date: 2026-05-07 12:24+0300\n"
"PO-Revision-Date: 2026-05-07 12:24+0300\n"
"Last-Translator: ushan0v <142658494+ushan0v@users.noreply.github.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
@@ -36,7 +36,7 @@ msgstr ""
msgid "A latency-tested group of proxy URLs for this node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1879
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1907
msgid "A latency-tested group of proxy URLs for this section"
msgstr ""
@@ -44,12 +44,12 @@ msgstr ""
msgid "A manual group of proxy URLs for this node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1861
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1889
msgid "A manual group of proxy URLs for this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1631
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1663
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1659
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1691
msgid "Action"
msgstr ""
@@ -61,11 +61,11 @@ msgstr ""
msgid "Add a section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2297
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2325
msgid "Add URLs or local paths to .lst lists"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2282
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2310
msgid "Add URLs or local paths to .srs / .json lists"
msgstr ""
@@ -82,15 +82,15 @@ msgid "An error occurred while saving the form:"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:170
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1993
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2021
msgid "Applicable for SOCKS and Shadowsocks links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:916
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:944
msgid "At least one valid domain must be specified."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:927
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:955
msgid "At least one valid IP or subnet must be specified."
msgstr ""
@@ -102,7 +102,7 @@ msgstr ""
msgid "Available actions"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1018
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1046
msgid "Backend validation failed: %s"
msgstr ""
@@ -126,7 +126,7 @@ msgstr ""
msgid "Browser is using FakeIP correctly"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2187
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2215
msgid "Built-in rule sets"
msgstr ""
@@ -146,6 +146,10 @@ msgstr ""
msgid "Cannot receive checks result"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:472
msgid "Checking"
msgstr ""
#: src/podkop/tabs/diagnostic/checks/runDnsCheck.ts:15
#: src/podkop/tabs/diagnostic/checks/runFakeIPCheck.ts:15
#: src/podkop/tabs/diagnostic/checks/runNftCheck.ts:13
@@ -159,15 +163,15 @@ msgstr ""
msgid "checks"
msgstr ""
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:26
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:58
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:61
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:64
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:26
msgid "Checks failed"
msgstr ""
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:54
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:13
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:54
msgid "Checks passed"
msgstr ""
@@ -183,7 +187,7 @@ msgstr ""
msgid "Close"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1619
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1647
msgid "Conditions"
msgstr ""
@@ -195,16 +199,16 @@ msgstr ""
msgid "Configuration for Podkop Plus service"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1749
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1777
msgid "Connection"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1731
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1759
msgid "Connection Type"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:19
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1734
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1762
msgid "Connection URL"
msgstr ""
@@ -232,6 +236,11 @@ msgstr ""
msgid "Delay value cannot be empty"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:483
#: src/podkop/tabs/diagnostic/initController.ts:534
msgid "Dev"
msgstr ""
#: src/podkop/tabs/diagnostic/checks/runDnsCheck.ts:82
msgid "DHCP has DNS server"
msgstr ""
@@ -266,18 +275,18 @@ msgid "DNS on router"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:227
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2058
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2086
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:21
msgid "DNS over HTTPS (DoH)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:228
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2059
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2087
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:22
msgid "DNS over TLS (DoT)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2056
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2084
msgid "DNS protocol"
msgstr ""
@@ -293,7 +302,7 @@ msgstr ""
msgid "DNS Rewrite TTL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2074
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2102
msgid "DNS server"
msgstr ""
@@ -310,19 +319,19 @@ msgstr ""
msgid "Do not panic, everything can be fixed, just..."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2296
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2324
msgid "Domain and IP Lists"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2157
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2185
msgid "Domain keyword"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2164
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2192
msgid "Domain regex"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2129
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2157
msgid "Domains"
msgstr ""
@@ -375,7 +384,7 @@ msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:8
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/ruleset.js:10
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1621
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1649
msgid "Enable"
msgstr ""
@@ -383,7 +392,7 @@ msgstr ""
msgid "Enable a dedicated DNS resolver when this node uses an interface"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2045
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2073
msgid "Enable a dedicated DNS resolver when this section uses an interface"
msgstr ""
@@ -391,7 +400,7 @@ msgstr ""
msgid "Enable autostart"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2096
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2124
msgid "Enable Mixed Proxy"
msgstr ""
@@ -408,11 +417,11 @@ msgid "Enable YACD WAN Access"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:52
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1772
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1800
msgid "Enter a complete sing-box outbound object"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1794
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1822
msgid "Enter the subscription URL to fetch proxy configurations from your provider"
msgstr ""
@@ -432,7 +441,7 @@ msgstr ""
msgid "Every minute"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2143
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2171
msgid "Exact full domain"
msgstr ""
@@ -448,11 +457,11 @@ msgstr ""
msgid "Expecting: %s"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2097
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2125
msgid "Expose this section as a local HTTP+SOCKS proxy"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1079
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1107
msgid "External nfqws config files bypass Podkop Plus queue management and explicit validation."
msgstr ""
@@ -460,12 +469,12 @@ msgstr ""
msgid "Failed to copy!"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:256
#: src/podkop/tabs/diagnostic/initController.ts:260
#: src/podkop/tabs/diagnostic/initController.ts:306
#: src/podkop/tabs/diagnostic/initController.ts:310
#: src/podkop/tabs/diagnostic/initController.ts:347
#: src/podkop/tabs/diagnostic/initController.ts:351
#: src/podkop/tabs/diagnostic/initController.ts:254
#: src/podkop/tabs/diagnostic/initController.ts:258
#: src/podkop/tabs/diagnostic/initController.ts:293
#: src/podkop/tabs/diagnostic/initController.ts:297
#: src/podkop/tabs/diagnostic/initController.ts:323
#: src/podkop/tabs/diagnostic/initController.ts:327
msgid "Failed to execute!"
msgstr ""
@@ -484,15 +493,15 @@ msgstr ""
msgid "Get global check"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:251
#: src/podkop/tabs/diagnostic/initController.ts:249
msgid "Global check"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1848
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1876
msgid "Group subscription proxies by country"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1849
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1877
msgid "Group subscription proxies by the country flag at the beginning of the outbound tag"
msgstr ""
@@ -500,7 +509,7 @@ msgstr ""
msgid "How often this remote rule set should be refreshed"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1732
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1760
msgid "How to configure the proxy connection for this section"
msgstr ""
@@ -510,8 +519,8 @@ msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:23
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:179
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1739
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2004
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1767
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2032
msgid "Interface"
msgstr ""
@@ -604,7 +613,7 @@ msgstr ""
msgid "Invalid path format. Path must start with \"/\" and contain valid characters"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2124
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2152
#: src/validators/validateShadowsocksUrl.ts:85
msgid "Invalid port number. Must be between 1 and 65535"
msgstr ""
@@ -698,7 +707,7 @@ msgid "Invalid Trojan URL: parsing failed"
msgstr ""
#: src/validators/validateUrl.ts:8
#: src/validators/validateUrl.ts:31
#: src/validators/validateUrl.ts:38
msgid "Invalid URL format"
msgstr ""
@@ -710,13 +719,13 @@ msgstr ""
msgid "IP address 0.0.0.0 is not allowed"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2136
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2164
msgid "IPs"
msgstr ""
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:20
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:67
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:70
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:20
msgid "Issues detected"
msgstr ""
@@ -724,11 +733,11 @@ msgstr ""
msgid "Keyword must not contain spaces"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:524
#: src/podkop/tabs/diagnostic/initController.ts:544
msgid "Latest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1584
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1612
msgid "List must be a direct .lst URL or a local .lst path"
msgstr ""
@@ -752,32 +761,32 @@ msgstr ""
msgid "Main DNS"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2137
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2165
msgid "Match destination IPs or subnets"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2158
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2186
msgid "Match domains containing a substring"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2130
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2158
msgid "Match domains including all subdomains"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2165
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2193
msgid "Match domains using a regular expression"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2144
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2172
msgid "Match only one exact full domain name"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2172
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2200
msgid "Match source IPs or subnets"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:114
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1929
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1957
msgid "Maximum response time delta in milliseconds"
msgstr ""
@@ -785,7 +794,7 @@ msgstr ""
msgid "Memory Usage"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2108
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2136
msgid "Mixed Proxy Port"
msgstr ""
@@ -794,7 +803,7 @@ msgid "Monitored Interfaces"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:136
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1952
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1980
msgid "Must be a number in the range of 50 - 1000"
msgstr ""
@@ -806,11 +815,11 @@ msgstr ""
msgid "NFQUEUE range overlaps with another rule"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1697
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1725
msgid "NFQWS Strategy"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1209
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1237
msgid "NFQWS strategy cannot be empty"
msgstr ""
@@ -830,7 +839,7 @@ msgstr ""
msgid "Not implement yet"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:547
#: src/podkop/tabs/diagnostic/initController.ts:567
msgid "not installed"
msgstr ""
@@ -865,18 +874,18 @@ msgstr ""
msgid "Optional node used to download this remote rule set"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1287
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1315
msgid "Optional values must be attached with '=' here; a separate token would be ignored by nfqws."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:22
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:51
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1738
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1771
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1766
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1799
msgid "Outbound JSON"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:514
#: src/podkop/tabs/diagnostic/initController.ts:523
msgid "Outdated"
msgstr ""
@@ -913,7 +922,7 @@ msgstr ""
msgid "Pending"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1097
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1125
msgid "Podkop Plus manages the nfqws process lifecycle itself, so daemon mode is not allowed here."
msgstr ""
@@ -937,11 +946,11 @@ msgstr ""
msgid "Podkop-managed nfqws runtime is ready"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2116
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2144
msgid "Port cannot be empty"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2109
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2137
msgid "Port for the local mixed proxy of this section"
msgstr ""
@@ -957,7 +966,7 @@ msgstr ""
msgid "Proxy traffic is routed via FakeIP"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2226
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2254
msgid "Regional options cannot be used together"
msgstr ""
@@ -969,7 +978,7 @@ msgstr ""
msgid "Remote URL to a sing-box rule set"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2044
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2072
msgid "Resolver for interface outbound"
msgstr ""
@@ -977,11 +986,11 @@ msgstr ""
msgid "Resolver For Interface Outbound"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1082
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1110
msgid "Resource selection by hostname inside nfqws is not supported here; sing-box selects resources before NFQUEUE."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1085
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1113
msgid "Resource selection by IP or CIDR inside nfqws is not supported here; sing-box selects resources before NFQUEUE."
msgstr ""
@@ -993,7 +1002,7 @@ msgstr ""
msgid "Routing Excluded IPs"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1576
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1604
msgid "Rule set must be a direct .srs / .json URL or a local .srs / .json path"
msgstr ""
@@ -1001,7 +1010,7 @@ msgstr ""
msgid "Rule set URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2281
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2309
msgid "Rule sets"
msgstr ""
@@ -1033,7 +1042,7 @@ msgstr ""
msgid "Run Diagnostic"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2245
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2273
msgid "Russia inside restrictions"
msgstr ""
@@ -1049,7 +1058,7 @@ msgstr ""
msgid "Section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1650
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1678
msgid "Section name"
msgstr ""
@@ -1057,7 +1066,7 @@ msgstr ""
msgid "Sections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2188
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2216
msgid "Select a predefined list for routing"
msgstr ""
@@ -1093,7 +1102,7 @@ msgstr ""
msgid "Select the WAN interfaces to be monitored"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1860
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1888
msgid "Selector connections"
msgstr ""
@@ -1101,7 +1110,7 @@ msgstr ""
msgid "Selector Links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2191
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2219
msgid "Service list"
msgstr ""
@@ -1110,11 +1119,11 @@ msgid "Services info"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:408
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1618
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1646
msgid "Settings"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:335
#: src/podkop/tabs/diagnostic/initController.ts:311
#: src/podkop/tabs/diagnostic/partials/renderAvailableActions.ts:116
msgid "Show sing-box config"
msgstr ""
@@ -1155,7 +1164,7 @@ msgstr ""
msgid "Source file"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2171
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2199
msgid "Source IPs"
msgstr ""
@@ -1187,15 +1196,15 @@ msgstr ""
msgid "Stop Podkop Plus"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1737
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1765
msgid "Subscription"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1813
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1841
msgid "Subscription update interval"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1793
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1821
msgid "Subscription URL"
msgstr ""
@@ -1223,7 +1232,7 @@ msgstr ""
msgid "Test latency"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1094
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1122
msgid "The desync fwmark is managed by Podkop Plus for loop prevention and must not be overridden here."
msgstr ""
@@ -1231,7 +1240,7 @@ msgstr ""
msgid "The DNS server used to look up the IP address of an upstream DNS server"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1091
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1119
msgid "The NFQUEUE number is assigned by Podkop Plus for each rule and must not be overridden here."
msgstr ""
@@ -1239,19 +1248,19 @@ msgstr ""
msgid "There are rules using Zapret"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1100
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1128
msgid "This field must start a working nfqws strategy; --dry-run exits immediately and is not allowed here."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1103
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1131
msgid "This field must start a working nfqws strategy; --version exits immediately and is not allowed here."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1272
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1300
msgid "This flag does not accept a value."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1303
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1331
msgid "This option requires a value."
msgstr ""
@@ -1288,11 +1297,11 @@ msgid "UDP (Unprotected DNS)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:169
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1992
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2020
msgid "UDP over TCP"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1014
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1042
msgid "Unable to validate the NFQWS strategy through the backend parser."
msgstr ""
@@ -1300,7 +1309,7 @@ msgstr ""
msgid "Unexpected Podkop-managed nfqws runtime is running"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1252
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1280
msgid "Unexpected standalone token. Use explicit flags such as --name or --name=value."
msgstr ""
@@ -1308,14 +1317,14 @@ msgstr ""
msgid "unique UCI identifier"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:26
#: src/podkop/tabs/diagnostic/initController.ts:27
#: src/podkop/tabs/diagnostic/initController.ts:28
#: src/podkop/tabs/diagnostic/initController.ts:29
#: src/podkop/tabs/diagnostic/initController.ts:30
#: src/podkop/tabs/diagnostic/initController.ts:31
#: src/podkop/tabs/diagnostic/initController.ts:32
#: src/podkop/tabs/diagnostic/initController.ts:33
#: src/podkop/tabs/diagnostic/initController.ts:486
#: src/podkop/tabs/diagnostic/initController.ts:34
#: src/podkop/tabs/diagnostic/initController.ts:36
#: src/podkop/tabs/diagnostic/initController.ts:37
#: src/podkop/tabs/diagnostic/initController.ts:457
msgid "unknown"
msgstr ""
@@ -1323,7 +1332,7 @@ msgstr ""
msgid "Unknown error"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1263
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1291
msgid "Unknown NFQWS flag."
msgstr ""
@@ -1344,11 +1353,11 @@ msgstr ""
msgid "URL must use one of the following protocols:"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1878
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1906
msgid "URLTest connections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1896
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1924
msgid "URLTest interval"
msgstr ""
@@ -1360,7 +1369,7 @@ msgstr ""
msgid "URLTest Links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1928
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1956
msgid "URLTest tolerance"
msgstr ""
@@ -1369,7 +1378,7 @@ msgid "URLTest Tolerance"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:139
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1959
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1987
msgid "URLTest URL"
msgstr ""
@@ -1377,7 +1386,7 @@ msgstr ""
msgid "Use a network interface as the outbound for this node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2005
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2033
msgid "Use a network interface as the outbound for this section"
msgstr ""
@@ -1386,12 +1395,12 @@ msgstr ""
msgid "Use sing-box duration format like 1d, 12h or 30m"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1814
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1842
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:283
msgid "Use sing-box duration format. Leave empty to disable automatic updates."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1897
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1925
msgid "Use sing-box duration format. Leave empty to disable periodic URLTest checks."
msgstr ""
@@ -1407,7 +1416,7 @@ msgstr ""
#: src/validators/validateSocksUrl.ts:80
#: src/validators/validateSubnet.ts:38
#: src/validators/validateTrojanUrl.ts:59
#: src/validators/validateUrl.ts:28
#: src/validators/validateUrl.ts:35
#: src/validators/validateVlessUrl.ts:108
msgid "Valid"
msgstr ""
@@ -1418,29 +1427,34 @@ msgstr ""
msgid "Validation errors:"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:295
#: src/podkop/tabs/diagnostic/initController.ts:494
#: src/podkop/tabs/diagnostic/initController.ts:507
msgid "Check unavailable"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:282
#: src/podkop/tabs/diagnostic/partials/renderAvailableActions.ts:107
msgid "View logs"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1651
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1679
msgid "Visible name of this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:32
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1750
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1778
msgid "vless://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2228
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2256
msgid "Warning: %s cannot be used together with %s. Previous selections have been removed."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2247
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2275
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1664
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1692
msgid "What Podkop Plus should do when this section matches"
msgstr ""
@@ -1457,7 +1471,7 @@ msgstr ""
msgid "Zapret (provider not available)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1088
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1116
msgid "Zapret hostlist templates are not supported here because Podkop Plus does not expand them for per-rule NFQWS strategies."
msgstr ""
+13 -4
View File
@@ -1,15 +1,15 @@
# RU translations for PODKOP PLUS package.
# Copyright (C) 2026 THE PODKOP PLUS COPYRIGHT HOLDER
# This file is distributed under the same license as the PODKOP PLUS package.
# Automatically generated, 2026.
# ushan0v, 2026.
#
msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-07 12:30+0300\n"
"PO-Revision-Date: 2026-05-07 12:30+0300\n"
"Last-Translator: Automatically generated\n"
"POT-Creation-Date: 2026-05-07 15:24+0300\n"
"PO-Revision-Date: 2026-05-07 15:24+0300\n"
"Last-Translator: ushan0v\n"
"Language-Team: none\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
@@ -107,6 +107,9 @@ msgstr "Путь к файлу кэша не может быть пустым"
msgid "Cannot receive checks result"
msgstr "Не удалось получить результаты проверки"
msgid "Checking"
msgstr "Проверка"
msgid "Checking, please wait"
msgstr "Проверяем, пожалуйста подождите"
@@ -164,6 +167,9 @@ msgstr "Задержка в миллисекундах перед перезап
msgid "Delay value cannot be empty"
msgstr "Значение задержки не может быть пустым"
msgid "Dev"
msgstr "Dev"
msgid "DHCP has DNS server"
msgstr "DHCP содержит DNS сервер"
@@ -998,6 +1004,9 @@ msgstr "Валидно"
msgid "Validation errors:"
msgstr "Ошибки валидации:"
msgid "Check unavailable"
msgstr "Проверка недоступна"
msgid "View logs"
msgstr "Посмотреть логи"
@@ -0,0 +1,57 @@
export type ReleaseVersionCompareResult = -1 | 0 | 1 | null;
function normalizeReleaseVersion(version: string) {
return version.trim().replace(/^v/i, '');
}
function parseReleaseVersion(version: string): number[] | null {
const normalized = normalizeReleaseVersion(version);
const match = normalized.match(/^(\d+(?:\.\d+)*)(?:-(\d+))?$/);
if (!match) {
return null;
}
const baseParts = match[1].split('.').map((part) => Number(part));
const releasePart = match[2] ? Number(match[2]) : 0;
const parts = [...baseParts, releasePart];
return parts.every((part) => Number.isSafeInteger(part)) ? parts : null;
}
export function compareReleaseVersions(
currentVersion: string,
latestVersion: string,
): ReleaseVersionCompareResult {
const currentParts = parseReleaseVersion(currentVersion);
const latestParts = parseReleaseVersion(latestVersion);
if (!currentParts || !latestParts) {
return null;
}
const length = Math.max(currentParts.length, latestParts.length);
for (let index = 0; index < length; index += 1) {
const currentPart = currentParts[index] ?? 0;
const latestPart = latestParts[index] ?? 0;
if (currentPart < latestPart) {
return -1;
}
if (currentPart > latestPart) {
return 1;
}
}
return 0;
}
export function isDevVersion(version: string): boolean {
return (
version === 'dev' ||
/(?:^|[.+-])dev(?:$|[.+-])/i.test(version) ||
version.includes('COMPILED')
);
}
@@ -0,0 +1,35 @@
import { describe, expect, it } from 'vitest';
import {
compareReleaseVersions,
isDevVersion,
} from '../compareReleaseVersions';
describe('compareReleaseVersions', () => {
it('detects equal versions with and without v prefix', () => {
expect(compareReleaseVersions('0.7.14-3', 'v0.7.14-3')).toBe(0);
});
it('detects outdated versions', () => {
expect(compareReleaseVersions('0.7.14-2', '0.7.14-3')).toBe(-1);
});
it('detects versions newer than the latest release', () => {
expect(compareReleaseVersions('0.7.14-4', '0.7.14-3')).toBe(1);
});
it('compares base version before fork release', () => {
expect(compareReleaseVersions('0.7.15-1', '0.7.14-3')).toBe(1);
});
it('returns null for non-release versions', () => {
expect(compareReleaseVersions('0.7.14-dev+abc123', '0.7.14-3')).toBeNull();
});
});
describe('isDevVersion', () => {
it('detects placeholder and dev builds', () => {
expect(isDevVersion('dev')).toBe(true);
expect(isDevVersion('__COMPILED_VERSION_VARIABLE__')).toBe(true);
expect(isDevVersion('0.7.14-dev+abc123')).toBe(true);
});
});
@@ -3,6 +3,7 @@ import { logger, store } from '../services';
import { Podkop } from '../types';
let latestServicesInfoRequestId = 0;
let latestPodkopStatusRequestId = 0;
function getSettledMethodResponse<T>(
scope: string,
@@ -63,19 +64,31 @@ export async function fetchServicesInfo() {
}
export async function fetchPodkopStatus() {
const requestId = ++latestPodkopStatusRequestId;
const podkop = await PodkopShellMethods.getStatus();
if (requestId !== latestPodkopStatusRequestId) {
return podkop.success ? podkop.data : null;
}
const previous = store.get().servicesInfoWidget;
const previousData = previous.data;
store.set({
servicesInfoWidget: {
loading: false,
failed: !podkop.success,
data: {
...previous.data,
podkopRunning: podkop.success ? podkop.data.running : 0,
podkopEnabled: podkop.success ? podkop.data.enabled : 0,
podkopStatus: podkop.success ? podkop.data.status : '',
...previousData,
podkopRunning: podkop.success
? podkop.data.running
: previousData.podkopRunning,
podkopEnabled: podkop.success
? podkop.data.enabled
: previousData.podkopEnabled,
podkopStatus: podkop.success
? podkop.data.status
: previousData.podkopStatus || 'unknown',
podkopLifecycleState: podkop.success
? podkop.data.lifecycle_state || 'unknown'
: 'unknown',
@@ -21,6 +21,10 @@ import { PODKOP_LUCI_APP_VERSION } from '../../../constants';
import { showToast } from '../../../helpers/showToast';
import { renderWikiDisclaimer } from './partials/renderWikiDisclaimer';
import { runSectionsCheck } from './checks/runSectionsCheck';
import {
compareReleaseVersions,
isDevVersion,
} from '../../../helpers/compareReleaseVersions';
const UNKNOWN_DIAGNOSTICS_SYSTEM_INFO = {
podkop_version: _('unknown'),
@@ -235,13 +239,7 @@ async function handleDisable() {
}
async function handleShowGlobalCheck() {
const diagnosticsActions = store.get().diagnosticsActions;
store.set({
diagnosticsActions: {
...diagnosticsActions,
globalCheck: { loading: true },
},
});
setDiagnosticActionLoading('globalCheck', true);
try {
const globalCheck = await PodkopShellMethods.globalCheck();
@@ -259,23 +257,12 @@ async function handleShowGlobalCheck() {
logger.error('[DIAGNOSTIC]', 'handleShowGlobalCheck - e', e);
showToast(_('Failed to execute!'), 'error');
} finally {
store.set({
diagnosticsActions: {
...diagnosticsActions,
globalCheck: { loading: false },
},
});
setDiagnosticActionLoading('globalCheck', false);
}
}
async function handleViewLogs() {
const diagnosticsActions = store.get().diagnosticsActions;
store.set({
diagnosticsActions: {
...diagnosticsActions,
viewLogs: { loading: true },
},
});
setDiagnosticActionLoading('viewLogs', true);
try {
const viewLogs = await PodkopShellMethods.checkLogs();
@@ -309,23 +296,12 @@ async function handleViewLogs() {
logger.error('[DIAGNOSTIC]', 'handleViewLogs - e', e);
showToast(_('Failed to execute!'), 'error');
} finally {
store.set({
diagnosticsActions: {
...diagnosticsActions,
viewLogs: { loading: false },
},
});
setDiagnosticActionLoading('viewLogs', false);
}
}
async function handleShowSingBoxConfig() {
const diagnosticsActions = store.get().diagnosticsActions;
store.set({
diagnosticsActions: {
...diagnosticsActions,
showSingBoxConfig: { loading: true },
},
});
setDiagnosticActionLoading('showSingBoxConfig', true);
try {
const showSingBoxConfig = await PodkopShellMethods.showSingBoxConfig();
@@ -350,12 +326,7 @@ async function handleShowSingBoxConfig() {
logger.error('[DIAGNOSTIC]', 'handleShowSingBoxConfig - e', e);
showToast(_('Failed to execute!'), 'error');
} finally {
store.set({
diagnosticsActions: {
...diagnosticsActions,
showSingBoxConfig: { loading: false },
},
});
setDiagnosticActionLoading('showSingBoxConfig', false);
}
}
@@ -407,7 +378,8 @@ function renderDiagnosticAvailableActionsWidget() {
servicesInfoWidget.loading ||
lifecycleBusy ||
atLeastOneMutatingActionLoading;
const utilityActionsDisabled = lifecycleBusy || atLeastOneMutatingActionLoading;
const utilityActionsDisabled =
lifecycleBusy || atLeastOneMutatingActionLoading;
const startVisible =
isStarting ||
(!podkopRunning && !isStopping && !isRestarting && !isReloading);
@@ -415,7 +387,8 @@ function renderDiagnosticAvailableActionsWidget() {
isStopping ||
(podkopRunning && !isStarting && !isRestarting && !isReloading);
const frozenStartStop =
restartLoading && (restartStartStopSnapshot || (podkopRunning ? 'stop' : 'start'));
restartLoading &&
(restartStartStopSnapshot || (podkopRunning ? 'stop' : 'start'));
const container = document.getElementById('pdk_diagnostic-page-actions');
@@ -427,13 +400,17 @@ function renderDiagnosticAvailableActionsWidget() {
disabled: serviceControlsDisabled,
},
start: {
loading: frozenStartStop ? false : diagnosticsActions.start.loading || isStarting,
loading: frozenStartStop
? false
: diagnosticsActions.start.loading || isStarting,
visible: frozenStartStop ? frozenStartStop === 'start' : startVisible,
onClick: handleStart,
disabled: serviceControlsDisabled,
},
stop: {
loading: frozenStartStop ? false : diagnosticsActions.stop.loading || isStopping,
loading: frozenStartStop
? false
: diagnosticsActions.stop.loading || isStopping,
visible: frozenStartStop ? frozenStartStop === 'stop' : stopVisible,
onClick: handleStop,
disabled: serviceControlsDisabled,
@@ -492,16 +469,54 @@ function renderDiagnosticSystemInfoWidget() {
);
const latestVersion =
`${diagnosticsSystemInfo.podkop_latest_version || ''}`.replace(/^v/, '');
const isDevVersion = version === 'dev';
if (loading || unknown || !hasActualVersion || isDevVersion) {
if (loading) {
return {
key: 'Podkop Plus',
value: version,
tag: {
label: _('Checking'),
kind: 'neutral',
},
};
}
if (`${version}`.replace(/^v/, '') !== latestVersion) {
if (isDevVersion(version)) {
return {
key: 'Podkop Plus',
value: version,
tag: {
label: _('Dev'),
kind: 'neutral',
},
};
}
if (unknown || !hasActualVersion) {
return {
key: 'Podkop Plus',
value: version,
tag: {
label: _('Check unavailable'),
kind: 'neutral',
},
};
}
const versionCompareResult = compareReleaseVersions(version, latestVersion);
if (versionCompareResult === null) {
return {
key: 'Podkop Plus',
value: version,
tag: {
label: _('Check unavailable'),
kind: 'neutral',
},
};
}
if (versionCompareResult < 0) {
logger.debug(
'[DIAGNOSTIC]',
'diagnosticsSystemInfo',
@@ -517,6 +532,17 @@ function renderDiagnosticSystemInfoWidget() {
};
}
if (versionCompareResult > 0) {
return {
key: 'Podkop Plus',
value: version,
tag: {
label: _('Dev'),
kind: 'neutral',
},
};
}
return {
key: 'Podkop Plus',
value: version,
@@ -543,8 +569,8 @@ function renderDiagnosticSystemInfoWidget() {
value: diagnosticsSystemInfo.loading
? 'loading'
: diagnosticsSystemInfo.zapret_installed
? diagnosticsSystemInfo.zapret_version
: _('not installed'),
? diagnosticsSystemInfo.zapret_version
: _('not installed'),
},
{
key: 'OS',
@@ -5,7 +5,7 @@ export interface IRenderSystemInfoRow {
value: string;
tag?: {
label: string;
kind: 'warning' | 'success';
kind: 'neutral' | 'warning' | 'success';
};
}
@@ -23,6 +23,9 @@ export function renderSystemInfo({ items }: IRenderSystemInfoProps) {
...items.map((item) => {
const tagClass = [
'pdk_diagnostic-page__right-bar__system-info__row__tag',
...insertIf(item.tag?.kind === 'neutral', [
'pdk_diagnostic-page__right-bar__system-info__row__tag--neutral',
]),
...insertIf(item.tag?.kind === 'warning', [
'pdk_diagnostic-page__right-bar__system-info__row__tag--warning',
]),
@@ -93,6 +93,11 @@ export const styles = `
margin-left: 5px;
}
.pdk_diagnostic-page__right-bar__system-info__row__tag--neutral {
border: 1px var(--background-color-high, gray) solid;
color: var(--text-color-medium, gray);
}
.pdk_diagnostic-page__right-bar__system-info__row__tag--warning {
border: 1px var(--warn-color-medium, orange) solid;
color: var(--warn-color-medium, orange);
@@ -2129,6 +2129,7 @@ function prettyBytes(n) {
// src/podkop/fetchers/fetchServicesInfo.ts
var latestServicesInfoRequestId = 0;
var latestPodkopStatusRequestId = 0;
function getSettledMethodResponse(scope, result) {
if (result.status === "fulfilled") {
return result.value;
@@ -2171,17 +2172,22 @@ async function fetchServicesInfo() {
});
}
async function fetchPodkopStatus() {
const requestId = ++latestPodkopStatusRequestId;
const podkop = await PodkopShellMethods.getStatus();
if (requestId !== latestPodkopStatusRequestId) {
return podkop.success ? podkop.data : null;
}
const previous = store.get().servicesInfoWidget;
const previousData = previous.data;
store.set({
servicesInfoWidget: {
loading: false,
failed: !podkop.success,
data: {
...previous.data,
podkopRunning: podkop.success ? podkop.data.running : 0,
podkopEnabled: podkop.success ? podkop.data.enabled : 0,
podkopStatus: podkop.success ? podkop.data.status : "",
...previousData,
podkopRunning: podkop.success ? podkop.data.running : previousData.podkopRunning,
podkopEnabled: podkop.success ? podkop.data.enabled : previousData.podkopEnabled,
podkopStatus: podkop.success ? podkop.data.status : previousData.podkopStatus || "unknown",
podkopLifecycleState: podkop.success ? podkop.data.lifecycle_state || "unknown" : "unknown",
podkopLifecycleAction: podkop.success ? podkop.data.lifecycle_action || "none" : "none",
podkopLifecycleBusy: podkop.success ? podkop.data.lifecycle_busy || 0 : 0
@@ -4266,6 +4272,9 @@ function renderSystemInfo({ items }) {
...items.map((item) => {
const tagClass = [
"pdk_diagnostic-page__right-bar__system-info__row__tag",
...insertIf(item.tag?.kind === "neutral", [
"pdk_diagnostic-page__right-bar__system-info__row__tag--neutral"
]),
...insertIf(item.tag?.kind === "warning", [
"pdk_diagnostic-page__right-bar__system-info__row__tag--warning"
]),
@@ -4430,6 +4439,44 @@ async function runSectionsCheck() {
}
}
// src/helpers/compareReleaseVersions.ts
function normalizeReleaseVersion(version) {
return version.trim().replace(/^v/i, "");
}
function parseReleaseVersion(version) {
const normalized = normalizeReleaseVersion(version);
const match = normalized.match(/^(\d+(?:\.\d+)*)(?:-(\d+))?$/);
if (!match) {
return null;
}
const baseParts = match[1].split(".").map((part) => Number(part));
const releasePart = match[2] ? Number(match[2]) : 0;
const parts = [...baseParts, releasePart];
return parts.every((part) => Number.isSafeInteger(part)) ? parts : null;
}
function compareReleaseVersions(currentVersion, latestVersion) {
const currentParts = parseReleaseVersion(currentVersion);
const latestParts = parseReleaseVersion(latestVersion);
if (!currentParts || !latestParts) {
return null;
}
const length = Math.max(currentParts.length, latestParts.length);
for (let index = 0; index < length; index += 1) {
const currentPart = currentParts[index] ?? 0;
const latestPart = latestParts[index] ?? 0;
if (currentPart < latestPart) {
return -1;
}
if (currentPart > latestPart) {
return 1;
}
}
return 0;
}
function isDevVersion(version) {
return version === "dev" || /(?:^|[.+-])dev(?:$|[.+-])/i.test(version) || version.includes("COMPILED");
}
// src/podkop/tabs/diagnostic/initController.ts
var UNKNOWN_DIAGNOSTICS_SYSTEM_INFO = {
podkop_version: _("unknown"),
@@ -4598,13 +4645,7 @@ async function handleDisable() {
}
}
async function handleShowGlobalCheck() {
const diagnosticsActions = store.get().diagnosticsActions;
store.set({
diagnosticsActions: {
...diagnosticsActions,
globalCheck: { loading: true }
}
});
setDiagnosticActionLoading("globalCheck", true);
try {
const globalCheck = await PodkopShellMethods.globalCheck();
if (globalCheck.success) {
@@ -4620,22 +4661,11 @@ async function handleShowGlobalCheck() {
logger.error("[DIAGNOSTIC]", "handleShowGlobalCheck - e", e);
showToast(_("Failed to execute!"), "error");
} finally {
store.set({
diagnosticsActions: {
...diagnosticsActions,
globalCheck: { loading: false }
}
});
setDiagnosticActionLoading("globalCheck", false);
}
}
async function handleViewLogs() {
const diagnosticsActions = store.get().diagnosticsActions;
store.set({
diagnosticsActions: {
...diagnosticsActions,
viewLogs: { loading: true }
}
});
setDiagnosticActionLoading("viewLogs", true);
try {
const viewLogs = await PodkopShellMethods.checkLogs();
if (viewLogs.success) {
@@ -4664,22 +4694,11 @@ async function handleViewLogs() {
logger.error("[DIAGNOSTIC]", "handleViewLogs - e", e);
showToast(_("Failed to execute!"), "error");
} finally {
store.set({
diagnosticsActions: {
...diagnosticsActions,
viewLogs: { loading: false }
}
});
setDiagnosticActionLoading("viewLogs", false);
}
}
async function handleShowSingBoxConfig() {
const diagnosticsActions = store.get().diagnosticsActions;
store.set({
diagnosticsActions: {
...diagnosticsActions,
showSingBoxConfig: { loading: true }
}
});
setDiagnosticActionLoading("showSingBoxConfig", true);
try {
const showSingBoxConfig = await PodkopShellMethods.showSingBoxConfig();
if (showSingBoxConfig.success) {
@@ -4702,12 +4721,7 @@ async function handleShowSingBoxConfig() {
logger.error("[DIAGNOSTIC]", "handleShowSingBoxConfig - e", e);
showToast(_("Failed to execute!"), "error");
} finally {
store.set({
diagnosticsActions: {
...diagnosticsActions,
showSingBoxConfig: { loading: false }
}
});
setDiagnosticActionLoading("showSingBoxConfig", false);
}
}
function renderWikiDisclaimerWidget() {
@@ -4813,14 +4827,48 @@ function renderDiagnosticSystemInfoWidget() {
diagnosticsSystemInfo.podkop_version
);
const latestVersion = `${diagnosticsSystemInfo.podkop_latest_version || ""}`.replace(/^v/, "");
const isDevVersion = version === "dev";
if (loading || unknown || !hasActualVersion || isDevVersion) {
if (loading) {
return {
key: "Podkop Plus",
value: version
value: version,
tag: {
label: _("Checking"),
kind: "neutral"
}
};
}
if (`${version}`.replace(/^v/, "") !== latestVersion) {
if (isDevVersion(version)) {
return {
key: "Podkop Plus",
value: version,
tag: {
label: _("Dev"),
kind: "neutral"
}
};
}
if (unknown || !hasActualVersion) {
return {
key: "Podkop Plus",
value: version,
tag: {
label: _("Check unavailable"),
kind: "neutral"
}
};
}
const versionCompareResult = compareReleaseVersions(version, latestVersion);
if (versionCompareResult === null) {
return {
key: "Podkop Plus",
value: version,
tag: {
label: _("Check unavailable"),
kind: "neutral"
}
};
}
if (versionCompareResult < 0) {
logger.debug(
"[DIAGNOSTIC]",
"diagnosticsSystemInfo",
@@ -4835,6 +4883,16 @@ function renderDiagnosticSystemInfoWidget() {
}
};
}
if (versionCompareResult > 0) {
return {
key: "Podkop Plus",
value: version,
tag: {
label: _("Dev"),
kind: "neutral"
}
};
}
return {
key: "Podkop Plus",
value: version,
@@ -5092,6 +5150,11 @@ var styles4 = `
margin-left: 5px;
}
.pdk_diagnostic-page__right-bar__system-info__row__tag--neutral {
border: 1px var(--background-color-high, gray) solid;
color: var(--text-color-medium, gray);
}
.pdk_diagnostic-page__right-bar__system-info__row__tag--warning {
border: 1px var(--warn-color-medium, orange) solid;
color: var(--warn-color-medium, orange);
+13 -4
View File
@@ -1,15 +1,15 @@
# RU translations for PODKOP PLUS package.
# Copyright (C) 2026 THE PODKOP PLUS COPYRIGHT HOLDER
# This file is distributed under the same license as the PODKOP PLUS package.
# Automatically generated, 2026.
# ushan0v, 2026.
#
msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-07 12:30+0300\n"
"PO-Revision-Date: 2026-05-07 12:30+0300\n"
"Last-Translator: Automatically generated\n"
"POT-Creation-Date: 2026-05-07 15:24+0300\n"
"PO-Revision-Date: 2026-05-07 15:24+0300\n"
"Last-Translator: ushan0v\n"
"Language-Team: none\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
@@ -107,6 +107,9 @@ msgstr "Путь к файлу кэша не может быть пустым"
msgid "Cannot receive checks result"
msgstr "Не удалось получить результаты проверки"
msgid "Checking"
msgstr "Проверка"
msgid "Checking, please wait"
msgstr "Проверяем, пожалуйста подождите"
@@ -164,6 +167,9 @@ msgstr "Задержка в миллисекундах перед перезап
msgid "Delay value cannot be empty"
msgstr "Значение задержки не может быть пустым"
msgid "Dev"
msgstr "Dev"
msgid "DHCP has DNS server"
msgstr "DHCP содержит DNS сервер"
@@ -998,6 +1004,9 @@ msgstr "Валидно"
msgid "Validation errors:"
msgstr "Ошибки валидации:"
msgid "Check unavailable"
msgstr "Проверка недоступна"
msgid "View logs"
msgstr "Посмотреть логи"
+135 -121
View File
@@ -1,15 +1,15 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2026 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PODKOP PLUS package.
# Podkop Plus <noreply@podkop.plus>, 2026.
# ushan0v <142658494+ushan0v@users.noreply.github.com>, 2026.
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-07 09:30+0300\n"
"PO-Revision-Date: 2026-05-07 09:30+0300\n"
"Last-Translator: Podkop Plus <noreply@podkop.plus>\n"
"POT-Creation-Date: 2026-05-07 12:24+0300\n"
"PO-Revision-Date: 2026-05-07 12:24+0300\n"
"Last-Translator: ushan0v <142658494+ushan0v@users.noreply.github.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
@@ -36,7 +36,7 @@ msgstr ""
msgid "A latency-tested group of proxy URLs for this node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1879
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1907
msgid "A latency-tested group of proxy URLs for this section"
msgstr ""
@@ -44,12 +44,12 @@ msgstr ""
msgid "A manual group of proxy URLs for this node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1861
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1889
msgid "A manual group of proxy URLs for this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1631
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1663
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1659
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1691
msgid "Action"
msgstr ""
@@ -61,11 +61,11 @@ msgstr ""
msgid "Add a section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2297
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2325
msgid "Add URLs or local paths to .lst lists"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2282
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2310
msgid "Add URLs or local paths to .srs / .json lists"
msgstr ""
@@ -82,15 +82,15 @@ msgid "An error occurred while saving the form:"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:170
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1993
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2021
msgid "Applicable for SOCKS and Shadowsocks links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:916
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:944
msgid "At least one valid domain must be specified."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:927
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:955
msgid "At least one valid IP or subnet must be specified."
msgstr ""
@@ -102,7 +102,7 @@ msgstr ""
msgid "Available actions"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1018
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1046
msgid "Backend validation failed: %s"
msgstr ""
@@ -126,7 +126,7 @@ msgstr ""
msgid "Browser is using FakeIP correctly"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2187
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2215
msgid "Built-in rule sets"
msgstr ""
@@ -146,6 +146,10 @@ msgstr ""
msgid "Cannot receive checks result"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:472
msgid "Checking"
msgstr ""
#: src/podkop/tabs/diagnostic/checks/runDnsCheck.ts:15
#: src/podkop/tabs/diagnostic/checks/runFakeIPCheck.ts:15
#: src/podkop/tabs/diagnostic/checks/runNftCheck.ts:13
@@ -159,15 +163,15 @@ msgstr ""
msgid "checks"
msgstr ""
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:26
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:58
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:61
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:64
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:26
msgid "Checks failed"
msgstr ""
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:54
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:13
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:54
msgid "Checks passed"
msgstr ""
@@ -183,7 +187,7 @@ msgstr ""
msgid "Close"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1619
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1647
msgid "Conditions"
msgstr ""
@@ -195,16 +199,16 @@ msgstr ""
msgid "Configuration for Podkop Plus service"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1749
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1777
msgid "Connection"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1731
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1759
msgid "Connection Type"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:19
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1734
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1762
msgid "Connection URL"
msgstr ""
@@ -232,6 +236,11 @@ msgstr ""
msgid "Delay value cannot be empty"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:483
#: src/podkop/tabs/diagnostic/initController.ts:534
msgid "Dev"
msgstr ""
#: src/podkop/tabs/diagnostic/checks/runDnsCheck.ts:82
msgid "DHCP has DNS server"
msgstr ""
@@ -266,18 +275,18 @@ msgid "DNS on router"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:227
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2058
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2086
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:21
msgid "DNS over HTTPS (DoH)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:228
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2059
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2087
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:22
msgid "DNS over TLS (DoT)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2056
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2084
msgid "DNS protocol"
msgstr ""
@@ -293,7 +302,7 @@ msgstr ""
msgid "DNS Rewrite TTL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2074
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2102
msgid "DNS server"
msgstr ""
@@ -310,19 +319,19 @@ msgstr ""
msgid "Do not panic, everything can be fixed, just..."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2296
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2324
msgid "Domain and IP Lists"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2157
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2185
msgid "Domain keyword"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2164
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2192
msgid "Domain regex"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2129
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2157
msgid "Domains"
msgstr ""
@@ -375,7 +384,7 @@ msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:8
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/ruleset.js:10
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1621
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1649
msgid "Enable"
msgstr ""
@@ -383,7 +392,7 @@ msgstr ""
msgid "Enable a dedicated DNS resolver when this node uses an interface"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2045
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2073
msgid "Enable a dedicated DNS resolver when this section uses an interface"
msgstr ""
@@ -391,7 +400,7 @@ msgstr ""
msgid "Enable autostart"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2096
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2124
msgid "Enable Mixed Proxy"
msgstr ""
@@ -408,11 +417,11 @@ msgid "Enable YACD WAN Access"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:52
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1772
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1800
msgid "Enter a complete sing-box outbound object"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1794
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1822
msgid "Enter the subscription URL to fetch proxy configurations from your provider"
msgstr ""
@@ -432,7 +441,7 @@ msgstr ""
msgid "Every minute"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2143
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2171
msgid "Exact full domain"
msgstr ""
@@ -448,11 +457,11 @@ msgstr ""
msgid "Expecting: %s"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2097
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2125
msgid "Expose this section as a local HTTP+SOCKS proxy"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1079
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1107
msgid "External nfqws config files bypass Podkop Plus queue management and explicit validation."
msgstr ""
@@ -460,12 +469,12 @@ msgstr ""
msgid "Failed to copy!"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:256
#: src/podkop/tabs/diagnostic/initController.ts:260
#: src/podkop/tabs/diagnostic/initController.ts:306
#: src/podkop/tabs/diagnostic/initController.ts:310
#: src/podkop/tabs/diagnostic/initController.ts:347
#: src/podkop/tabs/diagnostic/initController.ts:351
#: src/podkop/tabs/diagnostic/initController.ts:254
#: src/podkop/tabs/diagnostic/initController.ts:258
#: src/podkop/tabs/diagnostic/initController.ts:293
#: src/podkop/tabs/diagnostic/initController.ts:297
#: src/podkop/tabs/diagnostic/initController.ts:323
#: src/podkop/tabs/diagnostic/initController.ts:327
msgid "Failed to execute!"
msgstr ""
@@ -484,15 +493,15 @@ msgstr ""
msgid "Get global check"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:251
#: src/podkop/tabs/diagnostic/initController.ts:249
msgid "Global check"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1848
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1876
msgid "Group subscription proxies by country"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1849
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1877
msgid "Group subscription proxies by the country flag at the beginning of the outbound tag"
msgstr ""
@@ -500,7 +509,7 @@ msgstr ""
msgid "How often this remote rule set should be refreshed"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1732
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1760
msgid "How to configure the proxy connection for this section"
msgstr ""
@@ -510,8 +519,8 @@ msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:23
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:179
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1739
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2004
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1767
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2032
msgid "Interface"
msgstr ""
@@ -604,7 +613,7 @@ msgstr ""
msgid "Invalid path format. Path must start with \"/\" and contain valid characters"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2124
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2152
#: src/validators/validateShadowsocksUrl.ts:85
msgid "Invalid port number. Must be between 1 and 65535"
msgstr ""
@@ -698,7 +707,7 @@ msgid "Invalid Trojan URL: parsing failed"
msgstr ""
#: src/validators/validateUrl.ts:8
#: src/validators/validateUrl.ts:31
#: src/validators/validateUrl.ts:38
msgid "Invalid URL format"
msgstr ""
@@ -710,13 +719,13 @@ msgstr ""
msgid "IP address 0.0.0.0 is not allowed"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2136
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2164
msgid "IPs"
msgstr ""
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:20
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:67
#: src/podkop/tabs/diagnostic/checks/runZapretCheck.ts:70
#: src/podkop/tabs/diagnostic/helpers/getMeta.ts:20
msgid "Issues detected"
msgstr ""
@@ -724,11 +733,11 @@ msgstr ""
msgid "Keyword must not contain spaces"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:524
#: src/podkop/tabs/diagnostic/initController.ts:544
msgid "Latest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1584
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1612
msgid "List must be a direct .lst URL or a local .lst path"
msgstr ""
@@ -752,32 +761,32 @@ msgstr ""
msgid "Main DNS"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2137
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2165
msgid "Match destination IPs or subnets"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2158
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2186
msgid "Match domains containing a substring"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2130
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2158
msgid "Match domains including all subdomains"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2165
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2193
msgid "Match domains using a regular expression"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2144
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2172
msgid "Match only one exact full domain name"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2172
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2200
msgid "Match source IPs or subnets"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:114
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1929
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1957
msgid "Maximum response time delta in milliseconds"
msgstr ""
@@ -785,7 +794,7 @@ msgstr ""
msgid "Memory Usage"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2108
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2136
msgid "Mixed Proxy Port"
msgstr ""
@@ -794,7 +803,7 @@ msgid "Monitored Interfaces"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:136
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1952
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1980
msgid "Must be a number in the range of 50 - 1000"
msgstr ""
@@ -806,11 +815,11 @@ msgstr ""
msgid "NFQUEUE range overlaps with another rule"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1697
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1725
msgid "NFQWS Strategy"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1209
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1237
msgid "NFQWS strategy cannot be empty"
msgstr ""
@@ -830,7 +839,7 @@ msgstr ""
msgid "Not implement yet"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:547
#: src/podkop/tabs/diagnostic/initController.ts:567
msgid "not installed"
msgstr ""
@@ -865,18 +874,18 @@ msgstr ""
msgid "Optional node used to download this remote rule set"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1287
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1315
msgid "Optional values must be attached with '=' here; a separate token would be ignored by nfqws."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:22
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:51
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1738
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1771
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1766
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1799
msgid "Outbound JSON"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:514
#: src/podkop/tabs/diagnostic/initController.ts:523
msgid "Outdated"
msgstr ""
@@ -913,7 +922,7 @@ msgstr ""
msgid "Pending"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1097
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1125
msgid "Podkop Plus manages the nfqws process lifecycle itself, so daemon mode is not allowed here."
msgstr ""
@@ -937,11 +946,11 @@ msgstr ""
msgid "Podkop-managed nfqws runtime is ready"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2116
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2144
msgid "Port cannot be empty"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2109
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2137
msgid "Port for the local mixed proxy of this section"
msgstr ""
@@ -957,7 +966,7 @@ msgstr ""
msgid "Proxy traffic is routed via FakeIP"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2226
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2254
msgid "Regional options cannot be used together"
msgstr ""
@@ -969,7 +978,7 @@ msgstr ""
msgid "Remote URL to a sing-box rule set"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2044
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2072
msgid "Resolver for interface outbound"
msgstr ""
@@ -977,11 +986,11 @@ msgstr ""
msgid "Resolver For Interface Outbound"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1082
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1110
msgid "Resource selection by hostname inside nfqws is not supported here; sing-box selects resources before NFQUEUE."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1085
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1113
msgid "Resource selection by IP or CIDR inside nfqws is not supported here; sing-box selects resources before NFQUEUE."
msgstr ""
@@ -993,7 +1002,7 @@ msgstr ""
msgid "Routing Excluded IPs"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1576
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1604
msgid "Rule set must be a direct .srs / .json URL or a local .srs / .json path"
msgstr ""
@@ -1001,7 +1010,7 @@ msgstr ""
msgid "Rule set URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2281
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2309
msgid "Rule sets"
msgstr ""
@@ -1033,7 +1042,7 @@ msgstr ""
msgid "Run Diagnostic"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2245
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2273
msgid "Russia inside restrictions"
msgstr ""
@@ -1049,7 +1058,7 @@ msgstr ""
msgid "Section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1650
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1678
msgid "Section name"
msgstr ""
@@ -1057,7 +1066,7 @@ msgstr ""
msgid "Sections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2188
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2216
msgid "Select a predefined list for routing"
msgstr ""
@@ -1093,7 +1102,7 @@ msgstr ""
msgid "Select the WAN interfaces to be monitored"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1860
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1888
msgid "Selector connections"
msgstr ""
@@ -1101,7 +1110,7 @@ msgstr ""
msgid "Selector Links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2191
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2219
msgid "Service list"
msgstr ""
@@ -1110,11 +1119,11 @@ msgid "Services info"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:408
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1618
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1646
msgid "Settings"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:335
#: src/podkop/tabs/diagnostic/initController.ts:311
#: src/podkop/tabs/diagnostic/partials/renderAvailableActions.ts:116
msgid "Show sing-box config"
msgstr ""
@@ -1155,7 +1164,7 @@ msgstr ""
msgid "Source file"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2171
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2199
msgid "Source IPs"
msgstr ""
@@ -1187,15 +1196,15 @@ msgstr ""
msgid "Stop Podkop Plus"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1737
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1765
msgid "Subscription"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1813
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1841
msgid "Subscription update interval"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1793
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1821
msgid "Subscription URL"
msgstr ""
@@ -1223,7 +1232,7 @@ msgstr ""
msgid "Test latency"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1094
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1122
msgid "The desync fwmark is managed by Podkop Plus for loop prevention and must not be overridden here."
msgstr ""
@@ -1231,7 +1240,7 @@ msgstr ""
msgid "The DNS server used to look up the IP address of an upstream DNS server"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1091
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1119
msgid "The NFQUEUE number is assigned by Podkop Plus for each rule and must not be overridden here."
msgstr ""
@@ -1239,19 +1248,19 @@ msgstr ""
msgid "There are rules using Zapret"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1100
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1128
msgid "This field must start a working nfqws strategy; --dry-run exits immediately and is not allowed here."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1103
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1131
msgid "This field must start a working nfqws strategy; --version exits immediately and is not allowed here."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1272
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1300
msgid "This flag does not accept a value."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1303
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1331
msgid "This option requires a value."
msgstr ""
@@ -1288,11 +1297,11 @@ msgid "UDP (Unprotected DNS)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:169
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1992
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2020
msgid "UDP over TCP"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1014
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1042
msgid "Unable to validate the NFQWS strategy through the backend parser."
msgstr ""
@@ -1300,7 +1309,7 @@ msgstr ""
msgid "Unexpected Podkop-managed nfqws runtime is running"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1252
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1280
msgid "Unexpected standalone token. Use explicit flags such as --name or --name=value."
msgstr ""
@@ -1308,14 +1317,14 @@ msgstr ""
msgid "unique UCI identifier"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:26
#: src/podkop/tabs/diagnostic/initController.ts:27
#: src/podkop/tabs/diagnostic/initController.ts:28
#: src/podkop/tabs/diagnostic/initController.ts:29
#: src/podkop/tabs/diagnostic/initController.ts:30
#: src/podkop/tabs/diagnostic/initController.ts:31
#: src/podkop/tabs/diagnostic/initController.ts:32
#: src/podkop/tabs/diagnostic/initController.ts:33
#: src/podkop/tabs/diagnostic/initController.ts:486
#: src/podkop/tabs/diagnostic/initController.ts:34
#: src/podkop/tabs/diagnostic/initController.ts:36
#: src/podkop/tabs/diagnostic/initController.ts:37
#: src/podkop/tabs/diagnostic/initController.ts:457
msgid "unknown"
msgstr ""
@@ -1323,7 +1332,7 @@ msgstr ""
msgid "Unknown error"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1263
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1291
msgid "Unknown NFQWS flag."
msgstr ""
@@ -1344,11 +1353,11 @@ msgstr ""
msgid "URL must use one of the following protocols:"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1878
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1906
msgid "URLTest connections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1896
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1924
msgid "URLTest interval"
msgstr ""
@@ -1360,7 +1369,7 @@ msgstr ""
msgid "URLTest Links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1928
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1956
msgid "URLTest tolerance"
msgstr ""
@@ -1369,7 +1378,7 @@ msgid "URLTest Tolerance"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:139
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1959
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1987
msgid "URLTest URL"
msgstr ""
@@ -1377,7 +1386,7 @@ msgstr ""
msgid "Use a network interface as the outbound for this node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2005
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2033
msgid "Use a network interface as the outbound for this section"
msgstr ""
@@ -1386,12 +1395,12 @@ msgstr ""
msgid "Use sing-box duration format like 1d, 12h or 30m"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1814
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1842
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/settings.js:283
msgid "Use sing-box duration format. Leave empty to disable automatic updates."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1897
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1925
msgid "Use sing-box duration format. Leave empty to disable periodic URLTest checks."
msgstr ""
@@ -1407,7 +1416,7 @@ msgstr ""
#: src/validators/validateSocksUrl.ts:80
#: src/validators/validateSubnet.ts:38
#: src/validators/validateTrojanUrl.ts:59
#: src/validators/validateUrl.ts:28
#: src/validators/validateUrl.ts:35
#: src/validators/validateVlessUrl.ts:108
msgid "Valid"
msgstr ""
@@ -1418,29 +1427,34 @@ msgstr ""
msgid "Validation errors:"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:295
#: src/podkop/tabs/diagnostic/initController.ts:494
#: src/podkop/tabs/diagnostic/initController.ts:507
msgid "Check unavailable"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:282
#: src/podkop/tabs/diagnostic/partials/renderAvailableActions.ts:107
msgid "View logs"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1651
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1679
msgid "Visible name of this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/node.js:32
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1750
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1778
msgid "vless://, ss://, trojan://, socks4/5://, hy2/hysteria2:// links"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2228
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2256
msgid "Warning: %s cannot be used together with %s. Previous selections have been removed."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2247
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2275
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1664
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1692
msgid "What Podkop Plus should do when this section matches"
msgstr ""
@@ -1457,7 +1471,7 @@ msgstr ""
msgid "Zapret (provider not available)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1088
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1116
msgid "Zapret hostlist templates are not supported here because Podkop Plus does not expand them for per-rule NFQWS strategies."
msgstr ""
+19 -23
View File
@@ -5134,7 +5134,7 @@ show_system_info() {
fetch_latest_podkop_version() {
command -v curl >/dev/null 2>&1 || return 1
curl --connect-timeout 1 -m 2 -fsSL "https://api.github.com/repos/$PODKOP_RELEASE_REPO/releases/latest" 2>/dev/null |
curl --connect-timeout 2 -m 5 -fsSL "https://api.github.com/repos/$PODKOP_RELEASE_REPO/releases/latest" 2>/dev/null |
sed -n 's/^[[:space:]]*"tag_name":[[:space:]]*"\([^"]*\)".*/\1/p' |
head -n 1
}
@@ -5169,7 +5169,7 @@ refresh_podkop_latest_version_cache() {
get_podkop_latest_version() {
local cache_file="/tmp/podkop-plus.latest-version.cache"
local cache_ttl=21600
local now cache_value cache_timestamp cache_is_recent
local now cache_value cache_timestamp cache_is_recent fetched_value
now="$(date +%s 2>/dev/null)"
cache_value="$(sed -n '1p' "$cache_file" 2>/dev/null)"
@@ -5189,16 +5189,20 @@ get_podkop_latest_version() {
cache_is_recent=1
fi
if [ "$cache_is_recent" -eq 1 ] &&
is_min_package_version "$cache_value" "$PODKOP_VERSION"; then
if [ "$cache_is_recent" -eq 1 ]; then
echo "$cache_value"
return 0
fi
(refresh_podkop_latest_version_cache) >/dev/null 2>&1 &
fetched_value="$(fetch_latest_podkop_version)"
if [ -n "$fetched_value" ]; then
now="$(date +%s 2>/dev/null)"
case "$now" in
'' | *[!0-9]*) now=0 ;;
esac
if [ "$cache_is_recent" -eq 1 ] && [ -n "$cache_value" ]; then
echo "$PODKOP_VERSION"
write_podkop_latest_version_cache "$fetched_value" "$now"
echo "$fetched_value"
return 0
fi
@@ -5220,7 +5224,7 @@ get_luci_app_version() {
}
system_info_cache_is_valid() {
local now cached_at cached_latest latest_cache_value luci_app_version
local now cached_at cached_latest luci_app_version
[ -s "$PODKOP_SYSTEM_INFO_CACHE_FILE" ] || return 1
jq -e . "$PODKOP_SYSTEM_INFO_CACHE_FILE" >/dev/null 2>&1 || return 1
@@ -5248,11 +5252,7 @@ system_info_cache_is_valid() {
"$PODKOP_SYSTEM_INFO_CACHE_FILE" >/dev/null 2>&1 || return 1
cached_latest="$(jq -r '.podkop_latest_version // "unknown"' "$PODKOP_SYSTEM_INFO_CACHE_FILE" 2>/dev/null)"
latest_cache_value="$(sed -n '1p' /tmp/podkop-plus.latest-version.cache 2>/dev/null)"
if [ "$cached_latest" = "unknown" ] && [ -n "$latest_cache_value" ]; then
return 1
fi
[ "$cached_latest" = "unknown" ] && return 1
return 0
}
@@ -5465,6 +5465,11 @@ get_status() {
lifecycle_action="${stored_action:-none}"
lifecycle_updated_at="$stored_updated_at"
lifecycle_pid="$stored_pid"
elif [ "$stored_state" = "running" ] && [ "$running" -eq 0 ]; then
lifecycle_state="failed"
lifecycle_action="${stored_action:-none}"
lifecycle_updated_at="$stored_updated_at"
lifecycle_pid="$stored_pid"
fi
fi
@@ -5747,17 +5752,8 @@ check_sing_box() {
version=$(sing-box version 2> /dev/null | head -n 1 | awk '{print $3}')
if [ -n "$version" ]; then
version=$(echo "$version" | sed 's/^v//')
local major
local minor
local patch
major=$(echo "$version" | cut -d. -f1)
minor=$(echo "$version" | cut -d. -f2)
patch=$(echo "$version" | cut -d. -f3)
# Compare version: must be >= 1.12.4
if [ "$major" -gt 1 ] ||
[ "$major" -eq 1 ] && [ "$minor" -gt 12 ] ||
[ "$major" -eq 1 ] && [ "$minor" -eq 12 ] && [ "$patch" -ge 4 ]; then
if is_min_package_version "$version" "1.12.4"; then
sing_box_version_ok=1
fi
fi