mirror of
https://github.com/itdoginfo/podkop.git
synced 2025-12-06 11:36:50 +03:00
Compare commits
29 Commits
0.7.4
...
56829c74c8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56829c74c8 | ||
|
|
9d78cd2ce4 | ||
|
|
d9ce3b361e | ||
|
|
c67aadf267 | ||
|
|
ac4d7570f3 | ||
|
|
86897fd0af | ||
|
|
230ffbce46 | ||
|
|
dd5ddd1a14 | ||
|
|
cc947f9734 | ||
|
|
f8510cd828 | ||
|
|
23cbe7be4a | ||
|
|
f168fb7e31 | ||
|
|
fe84b3154f | ||
|
|
d09fdc0b95 | ||
|
|
835cd85970 | ||
|
|
8a3b41ec9c | ||
|
|
10d7617739 | ||
|
|
68010ed5f7 | ||
|
|
557e3666eb | ||
|
|
01bff8ccfb | ||
|
|
675a6af89c | ||
|
|
f1a6ff3469 | ||
|
|
d4b3377d68 | ||
|
|
d2ef640d76 | ||
|
|
47457f2c27 | ||
|
|
8a29e176f2 | ||
|
|
9653310208 | ||
|
|
3540610c78 | ||
|
|
fb54d62a7f |
@@ -41,25 +41,32 @@
|
|||||||
"src/podkop/tabs/diagnostic/checks/runNftCheck.ts:106"
|
"src/podkop/tabs/diagnostic/checks/runNftCheck.ts:106"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"call": "Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall.",
|
||||||
|
"key": "Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall.",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:247"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"call": "Applicable for SOCKS and Shadowsocks proxy",
|
"call": "Applicable for SOCKS and Shadowsocks proxy",
|
||||||
"key": "Applicable for SOCKS and Shadowsocks proxy",
|
"key": "Applicable for SOCKS and Shadowsocks proxy",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:111"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:175"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "At least one valid domain must be specified. Comments-only content is not allowed.",
|
"call": "At least one valid domain must be specified. Comments-only content is not allowed.",
|
||||||
"key": "At least one valid domain must be specified. Comments-only content is not allowed.",
|
"key": "At least one valid domain must be specified. Comments-only content is not allowed.",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:356"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:420"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "At least one valid subnet or IP must be specified. Comments-only content is not allowed.",
|
"call": "At least one valid subnet or IP must be specified. Comments-only content is not allowed.",
|
||||||
"key": "At least one valid subnet or IP must be specified. Comments-only content is not allowed.",
|
"key": "At least one valid subnet or IP must be specified. Comments-only content is not allowed.",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:437"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:501"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -101,14 +108,14 @@
|
|||||||
"call": "Cache File Path",
|
"call": "Cache File Path",
|
||||||
"key": "Cache File Path",
|
"key": "Cache File Path",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:329"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:348"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Cache file path cannot be empty",
|
"call": "Cache file path cannot be empty",
|
||||||
"key": "Cache file path cannot be empty",
|
"key": "Cache file path cannot be empty",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:343"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:362"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -171,14 +178,14 @@
|
|||||||
"call": "Community Lists",
|
"call": "Community Lists",
|
||||||
"key": "Community Lists",
|
"key": "Community Lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:211"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:275"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Config File Path",
|
"call": "Config File Path",
|
||||||
"key": "Config File Path",
|
"key": "Config File Path",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:316"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:335"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -276,22 +283,22 @@
|
|||||||
"call": "Disable QUIC",
|
"call": "Disable QUIC",
|
||||||
"key": "Disable QUIC",
|
"key": "Disable QUIC",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:246"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:265"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Disable the QUIC protocol to improve compatibility or fix issues with video streaming",
|
"call": "Disable the QUIC protocol to improve compatibility or fix issues with video streaming",
|
||||||
"key": "Disable the QUIC protocol to improve compatibility or fix issues with video streaming",
|
"key": "Disable the QUIC protocol to improve compatibility or fix issues with video streaming",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:247"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:266"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Disabled",
|
"call": "Disabled",
|
||||||
"key": "Disabled",
|
"key": "Disabled",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:302",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:366",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:382"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:446"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -305,7 +312,7 @@
|
|||||||
"call": "DNS over HTTPS (DoH)",
|
"call": "DNS over HTTPS (DoH)",
|
||||||
"key": "DNS over HTTPS (DoH)",
|
"key": "DNS over HTTPS (DoH)",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:179",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:243",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:15"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:15"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -313,7 +320,7 @@
|
|||||||
"call": "DNS over TLS (DoT)",
|
"call": "DNS over TLS (DoT)",
|
||||||
"key": "DNS over TLS (DoT)",
|
"key": "DNS over TLS (DoT)",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:180",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:244",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:16"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:16"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -321,7 +328,7 @@
|
|||||||
"call": "DNS Protocol Type",
|
"call": "DNS Protocol Type",
|
||||||
"key": "DNS Protocol Type",
|
"key": "DNS Protocol Type",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:176",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:240",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:12"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:12"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -336,7 +343,7 @@
|
|||||||
"call": "DNS Server",
|
"call": "DNS Server",
|
||||||
"key": "DNS Server",
|
"key": "DNS Server",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:189",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:253",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:24"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:24"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -358,14 +365,14 @@
|
|||||||
"call": "Domain Resolver",
|
"call": "Domain Resolver",
|
||||||
"key": "Domain Resolver",
|
"key": "Domain Resolver",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:166"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:230"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Dont Touch My DHCP!",
|
"call": "Dont Touch My DHCP!",
|
||||||
"key": "Dont Touch My DHCP!",
|
"key": "Dont Touch My DHCP!",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:307"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:326"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -387,36 +394,30 @@
|
|||||||
"call": "Download Lists via Proxy/VPN",
|
"call": "Download Lists via Proxy/VPN",
|
||||||
"key": "Download Lists via Proxy/VPN",
|
"key": "Download Lists via Proxy/VPN",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:269"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:288"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Download Lists via specific proxy section",
|
"call": "Download Lists via specific proxy section",
|
||||||
"key": "Download Lists via specific proxy section",
|
"key": "Download Lists via specific proxy section",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:278"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:297"
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"call": "Downloading all lists via main Proxy/VPN",
|
|
||||||
"key": "Downloading all lists via main Proxy/VPN",
|
|
||||||
"places": [
|
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Downloading all lists via specific Proxy/VPN",
|
"call": "Downloading all lists via specific Proxy/VPN",
|
||||||
"key": "Downloading all lists via specific Proxy/VPN",
|
"key": "Downloading all lists via specific Proxy/VPN",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:289",
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:298"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Dynamic List",
|
"call": "Dynamic List",
|
||||||
"key": "Dynamic List",
|
"key": "Dynamic List",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:303",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:367",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:383"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:447"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -430,14 +431,14 @@
|
|||||||
"call": "Enable built-in DNS resolver for domains handled by this section",
|
"call": "Enable built-in DNS resolver for domains handled by this section",
|
||||||
"key": "Enable built-in DNS resolver for domains handled by this section",
|
"key": "Enable built-in DNS resolver for domains handled by this section",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:167"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:231"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Enable Mixed Proxy",
|
"call": "Enable Mixed Proxy",
|
||||||
"key": "Enable Mixed Proxy",
|
"key": "Enable Mixed Proxy",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:575"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:639"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -451,7 +452,7 @@
|
|||||||
"call": "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies",
|
"call": "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies",
|
||||||
"key": "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies",
|
"key": "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:576"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:640"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -461,6 +462,13 @@
|
|||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:237"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:237"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"call": "Enable YACD WAN Access",
|
||||||
|
"key": "Enable YACD WAN Access",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:246"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"call": "Enter complete outbound configuration in JSON format",
|
"call": "Enter complete outbound configuration in JSON format",
|
||||||
"key": "Enter complete outbound configuration in JSON format",
|
"key": "Enter complete outbound configuration in JSON format",
|
||||||
@@ -472,35 +480,63 @@
|
|||||||
"call": "Enter domain names separated by commas, spaces, or newlines. You can add comments using //",
|
"call": "Enter domain names separated by commas, spaces, or newlines. You can add comments using //",
|
||||||
"key": "Enter domain names separated by commas, spaces, or newlines. You can add comments using //",
|
"key": "Enter domain names separated by commas, spaces, or newlines. You can add comments using //",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:338"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:402"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Enter domain names without protocols, e.g. example.com or sub.example.com",
|
"call": "Enter domain names without protocols, e.g. example.com or sub.example.com",
|
||||||
"key": "Enter domain names without protocols, e.g. example.com or sub.example.com",
|
"key": "Enter domain names without protocols, e.g. example.com or sub.example.com",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:312"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:376"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses",
|
"call": "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses",
|
||||||
"key": "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses",
|
"key": "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:392"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:456"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "Every 1 minute",
|
||||||
|
"key": "Every 1 minute",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:114"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "Every 3 minutes",
|
||||||
|
"key": "Every 3 minutes",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:115"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "Every 30 seconds",
|
||||||
|
"key": "Every 30 seconds",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:113"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "Every 5 minutes",
|
||||||
|
"key": "Every 5 minutes",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:116"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Exclude NTP",
|
"call": "Exclude NTP",
|
||||||
"key": "Exclude NTP",
|
"key": "Exclude NTP",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:365"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:384"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN",
|
"call": "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN",
|
||||||
"key": "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN",
|
"key": "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:366"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:385"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -526,14 +562,15 @@
|
|||||||
"call": "Fastest",
|
"call": "Fastest",
|
||||||
"key": "Fastest",
|
"key": "Fastest",
|
||||||
"places": [
|
"places": [
|
||||||
"src/podkop/methods/custom/getDashboardSections.ts:117"
|
"src/podkop/methods/custom/getDashboardSections.ts:117",
|
||||||
|
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Fully Routed IPs",
|
"call": "Fully Routed IPs",
|
||||||
"key": "Fully Routed IPs",
|
"key": "Fully Routed IPs",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:550"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:614"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -611,7 +648,7 @@
|
|||||||
"call": "Invalid JSON format",
|
"call": "Invalid JSON format",
|
||||||
"key": "Invalid JSON format",
|
"key": "Invalid JSON format",
|
||||||
"places": [
|
"places": [
|
||||||
"src/validators/validateOutboundJson.ts:19"
|
"src/validators/validateOutboundJson.ts:9"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -779,7 +816,8 @@
|
|||||||
"call": "Invalid URL format",
|
"call": "Invalid URL format",
|
||||||
"key": "Invalid URL format",
|
"key": "Invalid URL format",
|
||||||
"places": [
|
"places": [
|
||||||
"src/validators/validateUrl.ts:18"
|
"src/validators/validateUrl.ts:8",
|
||||||
|
"src/validators/validateUrl.ts:31"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -814,21 +852,21 @@
|
|||||||
"call": "List Update Frequency",
|
"call": "List Update Frequency",
|
||||||
"key": "List Update Frequency",
|
"key": "List Update Frequency",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:257"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:276"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Local Domain Lists",
|
"call": "Local Domain Lists",
|
||||||
"key": "Local Domain Lists",
|
"key": "Local Domain Lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:458"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:522"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Local Subnet Lists",
|
"call": "Local Subnet Lists",
|
||||||
"key": "Local Subnet Lists",
|
"key": "Local Subnet Lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:481"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:545"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -849,7 +887,7 @@
|
|||||||
"call": "Mixed Proxy Port",
|
"call": "Mixed Proxy Port",
|
||||||
"key": "Mixed Proxy Port",
|
"key": "Mixed Proxy Port",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:586"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:650"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -859,11 +897,18 @@
|
|||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:198"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:198"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"call": "Must be a number in the range of 50 - 1000",
|
||||||
|
"key": "Must be a number in the range of 50 - 1000",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:140"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"call": "Network Interface",
|
"call": "Network Interface",
|
||||||
"key": "Network Interface",
|
"key": "Network Interface",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:120"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:184"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -884,8 +929,9 @@
|
|||||||
"call": "Not responding",
|
"call": "Not responding",
|
||||||
"key": "Not responding",
|
"key": "Not responding",
|
||||||
"places": [
|
"places": [
|
||||||
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59",
|
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:75",
|
||||||
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79"
|
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:81",
|
||||||
|
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:100"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -920,13 +966,6 @@
|
|||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:64"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:64"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"call": "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields",
|
|
||||||
"key": "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields",
|
|
||||||
"places": [
|
|
||||||
"src/validators/validateOutboundJson.ts:11"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"call": "Outdated",
|
"call": "Outdated",
|
||||||
"key": "Outdated",
|
"key": "Outdated",
|
||||||
@@ -952,21 +991,21 @@
|
|||||||
"call": "Path must be absolute (start with /)",
|
"call": "Path must be absolute (start with /)",
|
||||||
"key": "Path must be absolute (start with /)",
|
"key": "Path must be absolute (start with /)",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:347"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:366"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Path must contain at least one directory (like /tmp/cache.db)",
|
"call": "Path must contain at least one directory (like /tmp/cache.db)",
|
||||||
"key": "Path must contain at least one directory (like /tmp/cache.db)",
|
"key": "Path must contain at least one directory (like /tmp/cache.db)",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:356"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:375"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Path must end with cache.db",
|
"call": "Path must end with cache.db",
|
||||||
"key": "Path must end with cache.db",
|
"key": "Path must end with cache.db",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:351"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:370"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -998,7 +1037,7 @@
|
|||||||
"call": "Podkop will not modify your DHCP configuration",
|
"call": "Podkop will not modify your DHCP configuration",
|
||||||
"key": "Podkop will not modify your DHCP configuration",
|
"key": "Podkop will not modify your DHCP configuration",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:308"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:327"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1026,21 +1065,21 @@
|
|||||||
"call": "Regional options cannot be used together",
|
"call": "Regional options cannot be used together",
|
||||||
"key": "Regional options cannot be used together",
|
"key": "Regional options cannot be used together",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:245"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:309"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Remote Domain Lists",
|
"call": "Remote Domain Lists",
|
||||||
"key": "Remote Domain Lists",
|
"key": "Remote Domain Lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:504"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:568"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Remote Subnet Lists",
|
"call": "Remote Subnet Lists",
|
||||||
"key": "Remote Subnet Lists",
|
"key": "Remote Subnet Lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:527"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:591"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1068,7 +1107,7 @@
|
|||||||
"call": "Routing Excluded IPs",
|
"call": "Routing Excluded IPs",
|
||||||
"key": "Routing Excluded IPs",
|
"key": "Routing Excluded IPs",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:376"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:395"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1124,7 +1163,14 @@
|
|||||||
"call": "Russia inside restrictions",
|
"call": "Russia inside restrictions",
|
||||||
"key": "Russia inside restrictions",
|
"key": "Russia inside restrictions",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:264"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:328"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "Secret key for authenticating remote access to YACD when WAN access is enabled.",
|
||||||
|
"key": "Secret key for authenticating remote access to YACD when WAN access is enabled.",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:257"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1138,7 +1184,7 @@
|
|||||||
"call": "Select a predefined list for routing",
|
"call": "Select a predefined list for routing",
|
||||||
"key": "Select a predefined list for routing",
|
"key": "Select a predefined list for routing",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:212"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:276"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1159,7 +1205,7 @@
|
|||||||
"call": "Select how often the domain or subnet lists are updated automatically",
|
"call": "Select how often the domain or subnet lists are updated automatically",
|
||||||
"key": "Select how often the domain or subnet lists are updated automatically",
|
"key": "Select how often the domain or subnet lists are updated automatically",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:258"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:277"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1173,14 +1219,14 @@
|
|||||||
"call": "Select network interface for VPN connection",
|
"call": "Select network interface for VPN connection",
|
||||||
"key": "Select network interface for VPN connection",
|
"key": "Select network interface for VPN connection",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:121"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:185"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Select or enter DNS server address",
|
"call": "Select or enter DNS server address",
|
||||||
"key": "Select or enter DNS server address",
|
"key": "Select or enter DNS server address",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:190",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:254",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:25"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:25"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1188,35 +1234,35 @@
|
|||||||
"call": "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing",
|
"call": "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing",
|
||||||
"key": "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing",
|
"key": "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:330"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:349"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Select path for sing-box config file. Change this ONLY if you know what you are doing",
|
"call": "Select path for sing-box config file. Change this ONLY if you know what you are doing",
|
||||||
"key": "Select path for sing-box config file. Change this ONLY if you know what you are doing",
|
"key": "Select path for sing-box config file. Change this ONLY if you know what you are doing",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:317"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:336"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Select the DNS protocol type for the domain resolver",
|
"call": "Select the DNS protocol type for the domain resolver",
|
||||||
"key": "Select the DNS protocol type for the domain resolver",
|
"key": "Select the DNS protocol type for the domain resolver",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:177"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:241"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Select the list type for adding custom domains",
|
"call": "Select the list type for adding custom domains",
|
||||||
"key": "Select the list type for adding custom domains",
|
"key": "Select the list type for adding custom domains",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:300"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:364"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Select the list type for adding custom subnets",
|
"call": "Select the list type for adding custom subnets",
|
||||||
"key": "Select the list type for adding custom subnets",
|
"key": "Select the list type for adding custom subnets",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:380"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:444"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1305,8 +1351,8 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Sing-box version >= 1.12.4",
|
"call": "Sing-box version is compatible (newer than 1.12.4)",
|
||||||
"key": "Sing-box version >= 1.12.4",
|
"key": "Sing-box version is compatible (newer than 1.12.4)",
|
||||||
"places": [
|
"places": [
|
||||||
"src/podkop/tabs/diagnostic/checks/runSingBoxCheck.ts:67"
|
"src/podkop/tabs/diagnostic/checks/runSingBoxCheck.ts:67"
|
||||||
]
|
]
|
||||||
@@ -1322,36 +1368,36 @@
|
|||||||
"call": "Specify a local IP address to be excluded from routing",
|
"call": "Specify a local IP address to be excluded from routing",
|
||||||
"key": "Specify a local IP address to be excluded from routing",
|
"key": "Specify a local IP address to be excluded from routing",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:377"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:396"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Specify local IP addresses or subnets whose traffic will always be routed through the configured route",
|
"call": "Specify local IP addresses or subnets whose traffic will always be routed through the configured route",
|
||||||
"key": "Specify local IP addresses or subnets whose traffic will always be routed through the configured route",
|
"key": "Specify local IP addresses or subnets whose traffic will always be routed through the configured route",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:551"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:615"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Specify remote URLs to download and use domain lists",
|
"call": "Specify remote URLs to download and use domain lists",
|
||||||
"key": "Specify remote URLs to download and use domain lists",
|
"key": "Specify remote URLs to download and use domain lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:505"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:569"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Specify remote URLs to download and use subnet lists",
|
"call": "Specify remote URLs to download and use subnet lists",
|
||||||
"key": "Specify remote URLs to download and use subnet lists",
|
"key": "Specify remote URLs to download and use subnet lists",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:528"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:592"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Specify the path to the list file located on the router filesystem",
|
"call": "Specify the path to the list file located on the router filesystem",
|
||||||
"key": "Specify the path to the list file located on the router filesystem",
|
"key": "Specify the path to the list file located on the router filesystem",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:459",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:523",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:482"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:546"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1407,14 +1453,14 @@
|
|||||||
"call": "Text List",
|
"call": "Text List",
|
||||||
"key": "Text List",
|
"key": "Text List",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:304"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:368"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Text List (comma/space/newline separated)",
|
"call": "Text List (comma/space/newline separated)",
|
||||||
"key": "Text List (comma/space/newline separated)",
|
"key": "Text List (comma/space/newline separated)",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:384"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:448"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1424,6 +1470,27 @@
|
|||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:46"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:46"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"call": "The interval between connectivity tests",
|
||||||
|
"key": "The interval between connectivity tests",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:111"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "The maximum difference in response times (ms) allowed when comparing servers",
|
||||||
|
"key": "The maximum difference in response times (ms) allowed when comparing servers",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:124"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "The URL used to test server connectivity",
|
||||||
|
"key": "The URL used to test server connectivity",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:147"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"call": "Time in seconds for DNS record caching (default: 60)",
|
"call": "Time in seconds for DNS record caching (default: 60)",
|
||||||
"key": "Time in seconds for DNS record caching (default: 60)",
|
"key": "Time in seconds for DNS record caching (default: 60)",
|
||||||
@@ -1470,7 +1537,7 @@
|
|||||||
"call": "UDP (Unprotected DNS)",
|
"call": "UDP (Unprotected DNS)",
|
||||||
"key": "UDP (Unprotected DNS)",
|
"key": "UDP (Unprotected DNS)",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:181",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:245",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:17"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:17"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1478,7 +1545,7 @@
|
|||||||
"call": "UDP over TCP",
|
"call": "UDP over TCP",
|
||||||
"key": "UDP over TCP",
|
"key": "UDP over TCP",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:110"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:174"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1520,7 +1587,7 @@
|
|||||||
"call": "URL must use one of the following protocols:",
|
"call": "URL must use one of the following protocols:",
|
||||||
"key": "URL must use one of the following protocols:",
|
"key": "URL must use one of the following protocols:",
|
||||||
"places": [
|
"places": [
|
||||||
"src/validators/validateUrl.ts:13"
|
"src/validators/validateUrl.ts:17"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1530,6 +1597,13 @@
|
|||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:27"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:27"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"call": "URLTest Check Interval",
|
||||||
|
"key": "URLTest Check Interval",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:110"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"call": "URLTest Proxy Links",
|
"call": "URLTest Proxy Links",
|
||||||
"key": "URLTest Proxy Links",
|
"key": "URLTest Proxy Links",
|
||||||
@@ -1537,46 +1611,60 @@
|
|||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:87"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:87"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"call": "URLTest Testing URL",
|
||||||
|
"key": "URLTest Testing URL",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:146"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "URLTest Tolerance",
|
||||||
|
"key": "URLTest Tolerance",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:123"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"call": "User Domain List Type",
|
"call": "User Domain List Type",
|
||||||
"key": "User Domain List Type",
|
"key": "User Domain List Type",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:299"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:363"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "User Domains",
|
"call": "User Domains",
|
||||||
"key": "User Domains",
|
"key": "User Domains",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:311"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:375"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "User Domains List",
|
"call": "User Domains List",
|
||||||
"key": "User Domains List",
|
"key": "User Domains List",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:337"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:401"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "User Subnet List Type",
|
"call": "User Subnet List Type",
|
||||||
"key": "User Subnet List Type",
|
"key": "User Subnet List Type",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:379"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:443"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "User Subnets",
|
"call": "User Subnets",
|
||||||
"key": "User Subnets",
|
"key": "User Subnets",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:391"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:455"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "User Subnets List",
|
"call": "User Subnets List",
|
||||||
"key": "User Subnets List",
|
"key": "User Subnets List",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:417"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:481"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1588,13 +1676,13 @@
|
|||||||
"src/validators/validateDomain.ts:13",
|
"src/validators/validateDomain.ts:13",
|
||||||
"src/validators/validateDomain.ts:30",
|
"src/validators/validateDomain.ts:30",
|
||||||
"src/validators/validateIp.ts:8",
|
"src/validators/validateIp.ts:8",
|
||||||
"src/validators/validateOutboundJson.ts:17",
|
"src/validators/validateOutboundJson.ts:7",
|
||||||
"src/validators/validatePath.ts:16",
|
"src/validators/validatePath.ts:16",
|
||||||
"src/validators/validateShadowsocksUrl.ts:95",
|
"src/validators/validateShadowsocksUrl.ts:95",
|
||||||
"src/validators/validateSocksUrl.ts:80",
|
"src/validators/validateSocksUrl.ts:80",
|
||||||
"src/validators/validateSubnet.ts:38",
|
"src/validators/validateSubnet.ts:38",
|
||||||
"src/validators/validateTrojanUrl.ts:59",
|
"src/validators/validateTrojanUrl.ts:59",
|
||||||
"src/validators/validateUrl.ts:16",
|
"src/validators/validateUrl.ts:28",
|
||||||
"src/validators/validateVlessUrl.ts:108"
|
"src/validators/validateVlessUrl.ts:108"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1602,8 +1690,8 @@
|
|||||||
"call": "Validation errors:",
|
"call": "Validation errors:",
|
||||||
"key": "Validation errors:",
|
"key": "Validation errors:",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:370",
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:434",
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:449"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:513"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -1625,14 +1713,21 @@
|
|||||||
"call": "Warning: %s cannot be used together with %s. Previous selections have been removed.",
|
"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.",
|
"key": "Warning: %s cannot be used together with %s. Previous selections have been removed.",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:247"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:311"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"call": "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection.",
|
"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.",
|
"key": "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection.",
|
||||||
"places": [
|
"places": [
|
||||||
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:266"
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:330"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"call": "YACD Secret Key",
|
||||||
|
"key": "YACD Secret Key",
|
||||||
|
"places": [
|
||||||
|
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:256"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PODKOP\n"
|
"Project-Id-Version: PODKOP\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-25 22:08+0300\n"
|
"POT-Creation-Date: 2025-11-06 14:19+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-25 22:08+0300\n"
|
"PO-Revision-Date: 2025-11-06 14:19+0200\n"
|
||||||
"Last-Translator: divocat <divocatt@gmail.com>\n"
|
"Last-Translator: divocat <divocatt@gmail.com>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@@ -40,15 +40,19 @@ msgstr ""
|
|||||||
msgid "Additional marking rules found"
|
msgid "Additional marking rules found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:111
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:247
|
||||||
|
msgid "Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:175
|
||||||
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:356
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:420
|
||||||
msgid "At least one valid domain must be specified. Comments-only content is not allowed."
|
msgid "At least one valid domain must be specified. Comments-only content is not allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:437
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:501
|
||||||
msgid "At least one valid subnet or IP must be specified. Comments-only content is not allowed."
|
msgid "At least one valid subnet or IP must be specified. Comments-only content is not allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -72,11 +76,11 @@ msgstr ""
|
|||||||
msgid "Browser is using FakeIP correctly"
|
msgid "Browser is using FakeIP correctly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:329
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:348
|
||||||
msgid "Cache File Path"
|
msgid "Cache File Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:343
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:362
|
||||||
msgid "Cache file path cannot be empty"
|
msgid "Cache file path cannot be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -115,11 +119,11 @@ msgstr ""
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:211
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:275
|
||||||
msgid "Community Lists"
|
msgid "Community Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:316
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:335
|
||||||
msgid "Config File Path"
|
msgid "Config File Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -175,16 +179,16 @@ msgstr ""
|
|||||||
msgid "Disable autostart"
|
msgid "Disable autostart"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:246
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:265
|
||||||
msgid "Disable QUIC"
|
msgid "Disable QUIC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:247
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:266
|
||||||
msgid "Disable the QUIC protocol to improve compatibility or fix issues with video streaming"
|
msgid "Disable the QUIC protocol to improve compatibility or fix issues with video streaming"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:302
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:366
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:382
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:446
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -192,17 +196,17 @@ msgstr ""
|
|||||||
msgid "DNS on router"
|
msgid "DNS on router"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:179
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:243
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:15
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:15
|
||||||
msgid "DNS over HTTPS (DoH)"
|
msgid "DNS over HTTPS (DoH)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:180
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:244
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:16
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:16
|
||||||
msgid "DNS over TLS (DoT)"
|
msgid "DNS over TLS (DoT)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:176
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:240
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:12
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:12
|
||||||
msgid "DNS Protocol Type"
|
msgid "DNS Protocol Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -211,7 +215,7 @@ msgstr ""
|
|||||||
msgid "DNS Rewrite TTL"
|
msgid "DNS Rewrite TTL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:189
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:253
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:24
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:24
|
||||||
msgid "DNS Server"
|
msgid "DNS Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -224,11 +228,11 @@ msgstr ""
|
|||||||
msgid "Do not panic, everything can be fixed, just..."
|
msgid "Do not panic, everything can be fixed, just..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:166
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:230
|
||||||
msgid "Domain Resolver"
|
msgid "Domain Resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:307
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:326
|
||||||
msgid "Dont Touch My DHCP!"
|
msgid "Dont Touch My DHCP!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -241,24 +245,21 @@ msgstr ""
|
|||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:269
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:288
|
||||||
msgid "Download Lists via Proxy/VPN"
|
msgid "Download Lists via Proxy/VPN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:278
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:297
|
||||||
msgid "Download Lists via specific proxy section"
|
msgid "Download Lists via specific proxy section"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:289
|
||||||
msgid "Downloading all lists via main Proxy/VPN"
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:298
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279
|
|
||||||
msgid "Downloading all lists via specific Proxy/VPN"
|
msgid "Downloading all lists via specific Proxy/VPN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:303
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:367
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:383
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:447
|
||||||
msgid "Dynamic List"
|
msgid "Dynamic List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -266,11 +267,11 @@ msgstr ""
|
|||||||
msgid "Enable autostart"
|
msgid "Enable autostart"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:167
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:231
|
||||||
msgid "Enable built-in DNS resolver for domains handled by this section"
|
msgid "Enable built-in DNS resolver for domains handled by this section"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:575
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:639
|
||||||
msgid "Enable Mixed Proxy"
|
msgid "Enable Mixed Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -278,7 +279,7 @@ msgstr ""
|
|||||||
msgid "Enable Output Network Interface"
|
msgid "Enable Output Network Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:576
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:640
|
||||||
msgid "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies"
|
msgid "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -286,27 +287,47 @@ msgstr ""
|
|||||||
msgid "Enable YACD"
|
msgid "Enable YACD"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:246
|
||||||
|
msgid "Enable YACD WAN Access"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:65
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:65
|
||||||
msgid "Enter complete outbound configuration in JSON format"
|
msgid "Enter complete outbound configuration in JSON format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:338
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:402
|
||||||
msgid "Enter domain names separated by commas, spaces, or newlines. You can add comments using //"
|
msgid "Enter domain names separated by commas, spaces, or newlines. You can add comments using //"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:312
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:376
|
||||||
msgid "Enter domain names without protocols, e.g. example.com or sub.example.com"
|
msgid "Enter domain names without protocols, e.g. example.com or sub.example.com"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:392
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:456
|
||||||
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:365
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:114
|
||||||
|
msgid "Every 1 minute"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:115
|
||||||
|
msgid "Every 3 minutes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:113
|
||||||
|
msgid "Every 30 seconds"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:116
|
||||||
|
msgid "Every 5 minutes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:384
|
||||||
msgid "Exclude NTP"
|
msgid "Exclude NTP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:366
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:385
|
||||||
msgid "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN"
|
msgid "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -324,10 +345,11 @@ msgid "Failed to execute!"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/podkop/methods/custom/getDashboardSections.ts:117
|
#: src/podkop/methods/custom/getDashboardSections.ts:117
|
||||||
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59
|
||||||
msgid "Fastest"
|
msgid "Fastest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:550
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:614
|
||||||
msgid "Fully Routed IPs"
|
msgid "Fully Routed IPs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -372,7 +394,7 @@ msgstr ""
|
|||||||
msgid "Invalid IP address"
|
msgid "Invalid IP address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateOutboundJson.ts:19
|
#: src/validators/validateOutboundJson.ts:9
|
||||||
msgid "Invalid JSON format"
|
msgid "Invalid JSON format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -468,7 +490,8 @@ msgstr ""
|
|||||||
msgid "Invalid Trojan URL: parsing failed"
|
msgid "Invalid Trojan URL: parsing failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateUrl.ts:18
|
#: src/validators/validateUrl.ts:8
|
||||||
|
#: src/validators/validateUrl.ts:31
|
||||||
msgid "Invalid URL format"
|
msgid "Invalid URL format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -488,15 +511,15 @@ msgstr ""
|
|||||||
msgid "Latest"
|
msgid "Latest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:257
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:276
|
||||||
msgid "List Update Frequency"
|
msgid "List Update Frequency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:458
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:522
|
||||||
msgid "Local Domain Lists"
|
msgid "Local Domain Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:481
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:545
|
||||||
msgid "Local Subnet Lists"
|
msgid "Local Subnet Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -508,7 +531,7 @@ msgstr ""
|
|||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:586
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:650
|
||||||
msgid "Mixed Proxy Port"
|
msgid "Mixed Proxy Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -516,7 +539,11 @@ msgstr ""
|
|||||||
msgid "Monitored Interfaces"
|
msgid "Monitored Interfaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:120
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:140
|
||||||
|
msgid "Must be a number in the range of 50 - 1000"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:184
|
||||||
msgid "Network Interface"
|
msgid "Network Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -528,8 +555,9 @@ msgstr ""
|
|||||||
msgid "Not implement yet"
|
msgid "Not implement yet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:75
|
||||||
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:81
|
||||||
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:100
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -553,10 +581,6 @@ msgstr ""
|
|||||||
msgid "Outbound Configuration"
|
msgid "Outbound Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateOutboundJson.ts:11
|
|
||||||
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/podkop/tabs/diagnostic/initController.ts:443
|
#: src/podkop/tabs/diagnostic/initController.ts:443
|
||||||
msgid "Outdated"
|
msgid "Outdated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -569,15 +593,15 @@ msgstr ""
|
|||||||
msgid "Path cannot be empty"
|
msgid "Path cannot be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:347
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:366
|
||||||
msgid "Path must be absolute (start with /)"
|
msgid "Path must be absolute (start with /)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:356
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:375
|
||||||
msgid "Path must contain at least one directory (like /tmp/cache.db)"
|
msgid "Path must contain at least one directory (like /tmp/cache.db)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:351
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:370
|
||||||
msgid "Path must end with cache.db"
|
msgid "Path must end with cache.db"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -597,7 +621,7 @@ msgstr ""
|
|||||||
msgid "Podkop Settings"
|
msgid "Podkop Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:308
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:327
|
||||||
msgid "Podkop will not modify your DHCP configuration"
|
msgid "Podkop will not modify your DHCP configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -613,15 +637,15 @@ msgstr ""
|
|||||||
msgid "Proxy traffic is routed via FakeIP"
|
msgid "Proxy traffic is routed via FakeIP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:245
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:309
|
||||||
msgid "Regional options cannot be used together"
|
msgid "Regional options cannot be used together"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:504
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:568
|
||||||
msgid "Remote Domain Lists"
|
msgid "Remote Domain Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:527
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:591
|
||||||
msgid "Remote Subnet Lists"
|
msgid "Remote Subnet Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -637,7 +661,7 @@ msgstr ""
|
|||||||
msgid "Router DNS is routed through sing-box"
|
msgid "Router DNS is routed through sing-box"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:376
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:395
|
||||||
msgid "Routing Excluded IPs"
|
msgid "Routing Excluded IPs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -669,15 +693,19 @@ msgstr ""
|
|||||||
msgid "Run Diagnostic"
|
msgid "Run Diagnostic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:264
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:328
|
||||||
msgid "Russia inside restrictions"
|
msgid "Russia inside restrictions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:257
|
||||||
|
msgid "Secret key for authenticating remote access to YACD when WAN access is enabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js:36
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js:36
|
||||||
msgid "Sections"
|
msgid "Sections"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:212
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:276
|
||||||
msgid "Select a predefined list for routing"
|
msgid "Select a predefined list for routing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -689,7 +717,7 @@ msgstr ""
|
|||||||
msgid "Select DNS protocol to use"
|
msgid "Select DNS protocol to use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:258
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:277
|
||||||
msgid "Select how often the domain or subnet lists are updated automatically"
|
msgid "Select how often the domain or subnet lists are updated automatically"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -697,32 +725,32 @@ msgstr ""
|
|||||||
msgid "Select how to configure the proxy"
|
msgid "Select how to configure the proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:121
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:185
|
||||||
msgid "Select network interface for VPN connection"
|
msgid "Select network interface for VPN connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:190
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:254
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:25
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:25
|
||||||
msgid "Select or enter DNS server address"
|
msgid "Select or enter DNS server address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:330
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:349
|
||||||
msgid "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing"
|
msgid "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:317
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:336
|
||||||
msgid "Select path for sing-box config file. Change this ONLY if you know what you are doing"
|
msgid "Select path for sing-box config file. Change this ONLY if you know what you are doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:177
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:241
|
||||||
msgid "Select the DNS protocol type for the domain resolver"
|
msgid "Select the DNS protocol type for the domain resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:300
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:364
|
||||||
msgid "Select the list type for adding custom domains"
|
msgid "Select the list type for adding custom domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:380
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:444
|
||||||
msgid "Select the list type for adding custom subnets"
|
msgid "Select the list type for adding custom subnets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -776,31 +804,31 @@ msgid "Sing-box service exist"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/podkop/tabs/diagnostic/checks/runSingBoxCheck.ts:67
|
#: src/podkop/tabs/diagnostic/checks/runSingBoxCheck.ts:67
|
||||||
msgid "Sing-box version >= 1.12.4"
|
msgid "Sing-box version is compatible (newer than 1.12.4)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:89
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:89
|
||||||
msgid "Source Network Interface"
|
msgid "Source Network Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:377
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:396
|
||||||
msgid "Specify a local IP address to be excluded from routing"
|
msgid "Specify a local IP address to be excluded from routing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:551
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:615
|
||||||
msgid "Specify local IP addresses or subnets whose traffic will always be routed through the configured route"
|
msgid "Specify local IP addresses or subnets whose traffic will always be routed through the configured route"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:505
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:569
|
||||||
msgid "Specify remote URLs to download and use domain lists"
|
msgid "Specify remote URLs to download and use domain lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:528
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:592
|
||||||
msgid "Specify remote URLs to download and use subnet lists"
|
msgid "Specify remote URLs to download and use subnet lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:459
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:523
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:482
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:546
|
||||||
msgid "Specify the path to the list file located on the router filesystem"
|
msgid "Specify the path to the list file located on the router filesystem"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -832,11 +860,11 @@ msgstr ""
|
|||||||
msgid "Test latency"
|
msgid "Test latency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:304
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:368
|
||||||
msgid "Text List"
|
msgid "Text List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:384
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:448
|
||||||
msgid "Text List (comma/space/newline separated)"
|
msgid "Text List (comma/space/newline separated)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -844,6 +872,18 @@ msgstr ""
|
|||||||
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:111
|
||||||
|
msgid "The interval between connectivity tests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:124
|
||||||
|
msgid "The maximum difference in response times (ms) allowed when comparing servers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:147
|
||||||
|
msgid "The URL used to test server connectivity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:69
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:69
|
||||||
msgid "Time in seconds for DNS record caching (default: 60)"
|
msgid "Time in seconds for DNS record caching (default: 60)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -868,12 +908,12 @@ msgstr ""
|
|||||||
msgid "TTL value cannot be empty"
|
msgid "TTL value cannot be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:181
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:245
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:17
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:17
|
||||||
msgid "UDP (Unprotected DNS)"
|
msgid "UDP (Unprotected DNS)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:110
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:174
|
||||||
msgid "UDP over TCP"
|
msgid "UDP over TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -900,7 +940,7 @@ msgstr ""
|
|||||||
msgid "URL must start with vless://, ss://, trojan://, or socks4/5://"
|
msgid "URL must start with vless://, ss://, trojan://, or socks4/5://"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateUrl.ts:13
|
#: src/validators/validateUrl.ts:17
|
||||||
msgid "URL must use one of the following protocols:"
|
msgid "URL must use one of the following protocols:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -908,31 +948,43 @@ msgstr ""
|
|||||||
msgid "URLTest"
|
msgid "URLTest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:110
|
||||||
|
msgid "URLTest Check Interval"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:87
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:87
|
||||||
msgid "URLTest Proxy Links"
|
msgid "URLTest Proxy Links"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:299
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:146
|
||||||
|
msgid "URLTest Testing URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:123
|
||||||
|
msgid "URLTest Tolerance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:363
|
||||||
msgid "User Domain List Type"
|
msgid "User Domain List Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:311
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:375
|
||||||
msgid "User Domains"
|
msgid "User Domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:337
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:401
|
||||||
msgid "User Domains List"
|
msgid "User Domains List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:379
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:443
|
||||||
msgid "User Subnet List Type"
|
msgid "User Subnet List Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:391
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:455
|
||||||
msgid "User Subnets"
|
msgid "User Subnets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:417
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:481
|
||||||
msgid "User Subnets List"
|
msgid "User Subnets List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -941,19 +993,19 @@ msgstr ""
|
|||||||
#: src/validators/validateDomain.ts:13
|
#: src/validators/validateDomain.ts:13
|
||||||
#: src/validators/validateDomain.ts:30
|
#: src/validators/validateDomain.ts:30
|
||||||
#: src/validators/validateIp.ts:8
|
#: src/validators/validateIp.ts:8
|
||||||
#: src/validators/validateOutboundJson.ts:17
|
#: src/validators/validateOutboundJson.ts:7
|
||||||
#: src/validators/validatePath.ts:16
|
#: src/validators/validatePath.ts:16
|
||||||
#: src/validators/validateShadowsocksUrl.ts:95
|
#: src/validators/validateShadowsocksUrl.ts:95
|
||||||
#: src/validators/validateSocksUrl.ts:80
|
#: src/validators/validateSocksUrl.ts:80
|
||||||
#: src/validators/validateSubnet.ts:38
|
#: src/validators/validateSubnet.ts:38
|
||||||
#: src/validators/validateTrojanUrl.ts:59
|
#: src/validators/validateTrojanUrl.ts:59
|
||||||
#: src/validators/validateUrl.ts:16
|
#: src/validators/validateUrl.ts:28
|
||||||
#: src/validators/validateVlessUrl.ts:108
|
#: src/validators/validateVlessUrl.ts:108
|
||||||
msgid "Valid"
|
msgid "Valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:370
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:434
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:449
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:513
|
||||||
msgid "Validation errors:"
|
msgid "Validation errors:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -966,14 +1018,18 @@ msgstr ""
|
|||||||
msgid "Visit Wiki"
|
msgid "Visit Wiki"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:247
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:311
|
||||||
msgid "Warning: %s cannot be used together with %s. Previous selections have been removed."
|
msgid "Warning: %s cannot be used together with %s. Previous selections have been removed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:266
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:330
|
||||||
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:256
|
||||||
|
msgid "YACD Secret Key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:127
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:127
|
||||||
msgid "You can select Output Network Interface, by default autodetect"
|
msgid "You can select Output Network Interface, by default autodetect"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PODKOP\n"
|
"Project-Id-Version: PODKOP\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-25 01:08+0300\n"
|
"POT-Creation-Date: 2025-11-06 16:19+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-25 01:08+0300\n"
|
"PO-Revision-Date: 2025-11-06 16:19+0200\n"
|
||||||
"Last-Translator: divocat\n"
|
"Last-Translator: divocat\n"
|
||||||
"Language-Team: none\n"
|
"Language-Team: none\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
@@ -35,6 +35,9 @@ msgstr "Активные соединения"
|
|||||||
msgid "Additional marking rules found"
|
msgid "Additional marking rules found"
|
||||||
msgstr "Найдены дополнительные правила маркировки"
|
msgstr "Найдены дополнительные правила маркировки"
|
||||||
|
|
||||||
|
msgid "Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall."
|
||||||
|
msgstr "Обеспечивает доступ к YACD из WAN. Убедитесь, что в брандмауэре открыт соответствующий порт."
|
||||||
|
|
||||||
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
||||||
msgstr "Применимо для SOCKS и Shadowsocks прокси"
|
msgstr "Применимо для SOCKS и Shadowsocks прокси"
|
||||||
|
|
||||||
@@ -182,9 +185,6 @@ msgstr "Скачивать списки через Proxy/VPN"
|
|||||||
msgid "Download Lists via specific proxy section"
|
msgid "Download Lists via specific proxy section"
|
||||||
msgstr "Скачивать списки через выбранную секцию"
|
msgstr "Скачивать списки через выбранную секцию"
|
||||||
|
|
||||||
msgid "Downloading all lists via main Proxy/VPN"
|
|
||||||
msgstr "Загрузка всех списков через основной прокси/VPN"
|
|
||||||
|
|
||||||
msgid "Downloading all lists via specific Proxy/VPN"
|
msgid "Downloading all lists via specific Proxy/VPN"
|
||||||
msgstr "Загрузка всех списков через указанный прокси/VPN"
|
msgstr "Загрузка всех списков через указанный прокси/VPN"
|
||||||
|
|
||||||
@@ -209,6 +209,9 @@ msgstr "Включить смешанный прокси-сервер, разр
|
|||||||
msgid "Enable YACD"
|
msgid "Enable YACD"
|
||||||
msgstr "Включить YACD"
|
msgstr "Включить YACD"
|
||||||
|
|
||||||
|
msgid "Enable YACD WAN Access"
|
||||||
|
msgstr "Включить доступ YACD WAN"
|
||||||
|
|
||||||
msgid "Enter complete outbound configuration in JSON format"
|
msgid "Enter complete outbound configuration in JSON format"
|
||||||
msgstr "Введите полную конфигурацию исходящего соединения в формате JSON"
|
msgstr "Введите полную конфигурацию исходящего соединения в формате JSON"
|
||||||
|
|
||||||
@@ -221,6 +224,18 @@ msgstr "Введите доменные имена без протоколов,
|
|||||||
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
||||||
msgstr "Введите подсети в нотации CIDR (например, 103.21.244.0/22) или отдельные IP-адреса"
|
msgstr "Введите подсети в нотации CIDR (например, 103.21.244.0/22) или отдельные IP-адреса"
|
||||||
|
|
||||||
|
msgid "Every 1 minute"
|
||||||
|
msgstr "Каждую минуту"
|
||||||
|
|
||||||
|
msgid "Every 3 minutes"
|
||||||
|
msgstr "Каждые 3 минуты"
|
||||||
|
|
||||||
|
msgid "Every 30 seconds"
|
||||||
|
msgstr "Каждые 30 секунд"
|
||||||
|
|
||||||
|
msgid "Every 5 minutes"
|
||||||
|
msgstr "Каждые 5 минут"
|
||||||
|
|
||||||
msgid "Exclude NTP"
|
msgid "Exclude NTP"
|
||||||
msgstr "Исключить NTP"
|
msgstr "Исключить NTP"
|
||||||
|
|
||||||
@@ -377,6 +392,9 @@ msgstr "Порт смешанного прокси"
|
|||||||
msgid "Monitored Interfaces"
|
msgid "Monitored Interfaces"
|
||||||
msgstr "Наблюдаемые интерфейсы"
|
msgstr "Наблюдаемые интерфейсы"
|
||||||
|
|
||||||
|
msgid "Must be a number in the range of 50 - 1000"
|
||||||
|
msgstr "Должно быть числом от 50 до 1000"
|
||||||
|
|
||||||
msgid "Network Interface"
|
msgid "Network Interface"
|
||||||
msgstr "Сетевой интерфейс"
|
msgstr "Сетевой интерфейс"
|
||||||
|
|
||||||
@@ -401,9 +419,6 @@ msgstr "Конфигурация Outbound"
|
|||||||
msgid "Outbound Configuration"
|
msgid "Outbound Configuration"
|
||||||
msgstr "Конфигурация исходящего соединения"
|
msgstr "Конфигурация исходящего соединения"
|
||||||
|
|
||||||
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
|
|
||||||
msgstr "JSON должен содержать поля \"type\", \"server\" и \"server_port\""
|
|
||||||
|
|
||||||
msgid "Outdated"
|
msgid "Outdated"
|
||||||
msgstr "Устаревшая"
|
msgstr "Устаревшая"
|
||||||
|
|
||||||
@@ -488,6 +503,9 @@ msgstr "Запустить диагностику"
|
|||||||
msgid "Russia inside restrictions"
|
msgid "Russia inside restrictions"
|
||||||
msgstr "Ограничения Russia inside"
|
msgstr "Ограничения Russia inside"
|
||||||
|
|
||||||
|
msgid "Secret key for authenticating remote access to YACD when WAN access is enabled."
|
||||||
|
msgstr "Секретный ключ для аутентификации удаленного доступа к YACD при включенном доступе через WAN."
|
||||||
|
|
||||||
msgid "Sections"
|
msgid "Sections"
|
||||||
msgstr "Секции"
|
msgstr "Секции"
|
||||||
|
|
||||||
@@ -563,8 +581,8 @@ msgstr "Процесс sing-box запущен"
|
|||||||
msgid "Sing-box service exist"
|
msgid "Sing-box service exist"
|
||||||
msgstr "Сервис sing-box существует"
|
msgstr "Сервис sing-box существует"
|
||||||
|
|
||||||
msgid "Sing-box version >= 1.12.4"
|
msgid "Sing-box version is compatible (newer than 1.12.4)"
|
||||||
msgstr "Версия sing-box >= 1.12.4"
|
msgstr "Версия Sing-box совместима (новее 1.12.4)"
|
||||||
|
|
||||||
msgid "Source Network Interface"
|
msgid "Source Network Interface"
|
||||||
msgstr "Сетевой интерфейс источника"
|
msgstr "Сетевой интерфейс источника"
|
||||||
@@ -614,6 +632,15 @@ msgstr "Текстовый список (через запятую, пробел
|
|||||||
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
||||||
msgstr "DNS-сервер, используемый для поиска IP-адреса вышестоящего DNS-сервера"
|
msgstr "DNS-сервер, используемый для поиска IP-адреса вышестоящего DNS-сервера"
|
||||||
|
|
||||||
|
msgid "The interval between connectivity tests"
|
||||||
|
msgstr "Интервал между тестами подключения"
|
||||||
|
|
||||||
|
msgid "The maximum difference in response times (ms) allowed when comparing servers"
|
||||||
|
msgstr "Максимально допустимая разница во времени отклика (мс) при сравнении серверов"
|
||||||
|
|
||||||
|
msgid "The URL used to test server connectivity"
|
||||||
|
msgstr "URL-адрес, используемый для проверки подключения к серверу"
|
||||||
|
|
||||||
msgid "Time in seconds for DNS record caching (default: 60)"
|
msgid "Time in seconds for DNS record caching (default: 60)"
|
||||||
msgstr "Время в секундах для кэширования DNS записей (по умолчанию: 60)"
|
msgstr "Время в секундах для кэширования DNS записей (по умолчанию: 60)"
|
||||||
|
|
||||||
@@ -656,9 +683,18 @@ msgstr "URL должен использовать один из следующи
|
|||||||
msgid "URLTest"
|
msgid "URLTest"
|
||||||
msgstr "URLTest"
|
msgstr "URLTest"
|
||||||
|
|
||||||
|
msgid "URLTest Check Interval"
|
||||||
|
msgstr "Интервал проверки URLTest"
|
||||||
|
|
||||||
msgid "URLTest Proxy Links"
|
msgid "URLTest Proxy Links"
|
||||||
msgstr "Ссылки прокси для URLTest"
|
msgstr "Ссылки прокси для URLTest"
|
||||||
|
|
||||||
|
msgid "URLTest Testing URL"
|
||||||
|
msgstr "URLTest ссылка для проверки"
|
||||||
|
|
||||||
|
msgid "URLTest Tolerance"
|
||||||
|
msgstr "URLTest допустимое отклонение"
|
||||||
|
|
||||||
msgid "User Domain List Type"
|
msgid "User Domain List Type"
|
||||||
msgstr "Тип пользовательского списка доменов"
|
msgstr "Тип пользовательского списка доменов"
|
||||||
|
|
||||||
@@ -695,5 +731,8 @@ msgstr "Предупреждение: %s нельзя использовать
|
|||||||
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
||||||
msgstr "Предупреждение: Russia inside может быть использован только с %s. %s уже есть в Russia inside и будет удален из выбранных."
|
msgstr "Предупреждение: Russia inside может быть использован только с %s. %s уже есть в Russia inside и будет удален из выбранных."
|
||||||
|
|
||||||
|
msgid "YACD Secret Key"
|
||||||
|
msgstr "Секретный ключ YACD"
|
||||||
|
|
||||||
msgid "You can select Output Network Interface, by default autodetect"
|
msgid "You can select Output Network Interface, by default autodetect"
|
||||||
msgstr "Вы можете выбрать выходной сетевой интерфейс, по умолчанию он определяется автоматически."
|
msgstr "Вы можете выбрать выходной сетевой интерфейс, по умолчанию он определяется автоматически."
|
||||||
|
|||||||
@@ -4,6 +4,9 @@
|
|||||||
'require uci';
|
'require uci';
|
||||||
'require ui';
|
'require ui';
|
||||||
|
|
||||||
|
if (typeof structuredClone !== 'function')
|
||||||
|
globalThis.structuredClone = (obj) => JSON.parse(JSON.stringify(obj));
|
||||||
|
|
||||||
export * from './validators';
|
export * from './validators';
|
||||||
export * from './helpers';
|
export * from './helpers';
|
||||||
export * from './podkop';
|
export * from './podkop';
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import { getConfigSections } from './getConfigSections';
|
||||||
|
|
||||||
|
export async function getClashApiSecret() {
|
||||||
|
const sections = await getConfigSections();
|
||||||
|
|
||||||
|
const settings = sections.find((section) => section['.type'] === 'settings');
|
||||||
|
|
||||||
|
return settings?.yacd_secret_key || '';
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
import { getConfigSections } from './getConfigSections';
|
import { getConfigSections } from './getConfigSections';
|
||||||
import { getDashboardSections } from './getDashboardSections';
|
import { getDashboardSections } from './getDashboardSections';
|
||||||
|
import { getClashApiSecret } from './getClashApiSecret';
|
||||||
|
|
||||||
export const CustomPodkopMethods = {
|
export const CustomPodkopMethods = {
|
||||||
getConfigSections,
|
getConfigSections,
|
||||||
getDashboardSections,
|
getDashboardSections,
|
||||||
|
getClashApiSecret,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -31,12 +31,12 @@ export const PodkopShellMethods = {
|
|||||||
getClashApiProxyLatency: async (tag: string) =>
|
getClashApiProxyLatency: async (tag: string) =>
|
||||||
callBaseMethod<Podkop.GetClashApiProxyLatency>(
|
callBaseMethod<Podkop.GetClashApiProxyLatency>(
|
||||||
Podkop.AvailableMethods.CLASH_API,
|
Podkop.AvailableMethods.CLASH_API,
|
||||||
[Podkop.AvailableClashAPIMethods.GET_PROXY_LATENCY, tag],
|
[Podkop.AvailableClashAPIMethods.GET_PROXY_LATENCY, tag, '5000'],
|
||||||
),
|
),
|
||||||
getClashApiGroupLatency: async (tag: string) =>
|
getClashApiGroupLatency: async (tag: string) =>
|
||||||
callBaseMethod<Podkop.GetClashApiGroupLatency>(
|
callBaseMethod<Podkop.GetClashApiGroupLatency>(
|
||||||
Podkop.AvailableMethods.CLASH_API,
|
Podkop.AvailableMethods.CLASH_API,
|
||||||
[Podkop.AvailableClashAPIMethods.GET_GROUP_LATENCY, tag],
|
[Podkop.AvailableClashAPIMethods.GET_GROUP_LATENCY, tag, '10000'],
|
||||||
),
|
),
|
||||||
setClashApiGroupProxy: async (group: string, proxy: string) =>
|
setClashApiGroupProxy: async (group: string, proxy: string) =>
|
||||||
callBaseMethod<unknown>(Podkop.AvailableMethods.CLASH_API, [
|
callBaseMethod<unknown>(Podkop.AvailableMethods.CLASH_API, [
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import { CustomPodkopMethods, PodkopShellMethods } from '../../methods';
|
|||||||
import { logger, socket, store, StoreType } from '../../services';
|
import { logger, socket, store, StoreType } from '../../services';
|
||||||
import { renderSections, renderWidget } from './partials';
|
import { renderSections, renderWidget } from './partials';
|
||||||
import { fetchServicesInfo } from '../../fetchers';
|
import { fetchServicesInfo } from '../../fetchers';
|
||||||
|
import { getClashApiSecret } from '../../methods/custom/getClashApiSecret';
|
||||||
|
|
||||||
// Fetchers
|
// Fetchers
|
||||||
|
|
||||||
@@ -38,8 +39,10 @@ async function fetchDashboardSections() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function connectToClashSockets() {
|
async function connectToClashSockets() {
|
||||||
|
const clashApiSecret = await getClashApiSecret();
|
||||||
|
|
||||||
socket.subscribe(
|
socket.subscribe(
|
||||||
`${getClashWsUrl()}/traffic?token=`,
|
`${getClashWsUrl()}/traffic?token=${clashApiSecret}`,
|
||||||
(msg) => {
|
(msg) => {
|
||||||
const parsedMsg = JSON.parse(msg);
|
const parsedMsg = JSON.parse(msg);
|
||||||
|
|
||||||
@@ -68,7 +71,7 @@ async function connectToClashSockets() {
|
|||||||
);
|
);
|
||||||
|
|
||||||
socket.subscribe(
|
socket.subscribe(
|
||||||
`${getClashWsUrl()}/connections?token=`,
|
`${getClashWsUrl()}/connections?token=${clashApiSecret}`,
|
||||||
(msg) => {
|
(msg) => {
|
||||||
const parsedMsg = JSON.parse(msg);
|
const parsedMsg = JSON.parse(msg);
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ export async function runSectionsCheck() {
|
|||||||
const selectedOutbound = section.outbounds.find(
|
const selectedOutbound = section.outbounds.find(
|
||||||
(item) => item.selected,
|
(item) => item.selected,
|
||||||
);
|
);
|
||||||
|
|
||||||
const isUrlTest = selectedOutbound?.type === 'URLTest';
|
const isUrlTest = selectedOutbound?.type === 'URLTest';
|
||||||
|
|
||||||
const success = latencyGroup.success && !latencyGroup.data.message;
|
const success = latencyGroup.success && !latencyGroup.data.message;
|
||||||
@@ -65,13 +66,13 @@ export async function runSectionsCheck() {
|
|||||||
if (selectedProxyDelay) {
|
if (selectedProxyDelay) {
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
latency: `[${selectedOutbound?.code ?? ''}] ${selectedProxyDelay}ms`,
|
latency: `[${selectedOutbound?.displayName ?? ''}] ${selectedProxyDelay}ms`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
success: false,
|
success: false,
|
||||||
latency: `[${selectedOutbound?.code ?? ''}] ${_('Not responding')}`,
|
latency: `[${selectedOutbound?.displayName ?? ''}] ${_('Not responding')}`,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ export async function runSingBoxCheck() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
state: data.sing_box_version_ok ? 'success' : 'error',
|
state: data.sing_box_version_ok ? 'success' : 'error',
|
||||||
key: _('Sing-box version >= 1.12.4'),
|
key: _('Sing-box version is compatible (newer than 1.12.4)'),
|
||||||
value: '',
|
value: '',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -415,9 +415,9 @@ function renderDiagnosticSystemInfoWidget() {
|
|||||||
function getPodkopVersionRow(): IRenderSystemInfoRow {
|
function getPodkopVersionRow(): IRenderSystemInfoRow {
|
||||||
const loading = diagnosticsSystemInfo.loading;
|
const loading = diagnosticsSystemInfo.loading;
|
||||||
const unknown = diagnosticsSystemInfo.podkop_version === _('unknown');
|
const unknown = diagnosticsSystemInfo.podkop_version === _('unknown');
|
||||||
const hasActualVersion = Boolean(
|
const hasActualVersion =
|
||||||
diagnosticsSystemInfo.podkop_latest_version,
|
Boolean(diagnosticsSystemInfo.podkop_latest_version) &&
|
||||||
);
|
diagnosticsSystemInfo.podkop_latest_version !== 'unknown';
|
||||||
const version = normalizeCompiledVersion(
|
const version = normalizeCompiledVersion(
|
||||||
diagnosticsSystemInfo.podkop_version,
|
diagnosticsSystemInfo.podkop_version,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ export namespace Podkop {
|
|||||||
export type ConfigSection = ConfigBaseSection & {
|
export type ConfigSection = ConfigBaseSection & {
|
||||||
'.name': string;
|
'.name': string;
|
||||||
'.type': 'settings' | 'section';
|
'.type': 'settings' | 'section';
|
||||||
|
yacd_secret_key?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface MethodSuccessResponse<T> {
|
export interface MethodSuccessResponse<T> {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ const invalidUrls = [
|
|||||||
['Unsupported protocol (ftp)', 'ftp://example.com'],
|
['Unsupported protocol (ftp)', 'ftp://example.com'],
|
||||||
['Unsupported protocol (ws)', 'ws://example.com'],
|
['Unsupported protocol (ws)', 'ws://example.com'],
|
||||||
['Empty string', ''],
|
['Empty string', ''],
|
||||||
|
['Without tld', 'https://google'],
|
||||||
];
|
];
|
||||||
|
|
||||||
describe('validateUrl', () => {
|
describe('validateUrl', () => {
|
||||||
|
|||||||
@@ -1,18 +1,8 @@
|
|||||||
import { ValidationResult } from './types';
|
import { ValidationResult } from './types';
|
||||||
|
|
||||||
// TODO refactor current validation and add tests
|
|
||||||
export function validateOutboundJson(value: string): ValidationResult {
|
export function validateOutboundJson(value: string): ValidationResult {
|
||||||
try {
|
try {
|
||||||
const parsed = JSON.parse(value);
|
JSON.parse(value);
|
||||||
|
|
||||||
if (!parsed.type || !parsed.server || !parsed.server_port) {
|
|
||||||
return {
|
|
||||||
valid: false,
|
|
||||||
message: _(
|
|
||||||
'Outbound JSON must contain at least "type", "server" and "server_port" fields',
|
|
||||||
),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return { valid: true, message: _('Valid') };
|
return { valid: true, message: _('Valid') };
|
||||||
} catch {
|
} catch {
|
||||||
|
|||||||
@@ -2,19 +2,31 @@ import { ValidationResult } from './types';
|
|||||||
|
|
||||||
export function validateUrl(
|
export function validateUrl(
|
||||||
url: string,
|
url: string,
|
||||||
protocols: string[] = ['http:', 'https:'],
|
protocols = ['http:', 'https:'],
|
||||||
): ValidationResult {
|
): ValidationResult {
|
||||||
try {
|
if (!url.length) {
|
||||||
const parsedUrl = new URL(url);
|
|
||||||
|
|
||||||
if (!protocols.includes(parsedUrl.protocol)) {
|
|
||||||
return {
|
|
||||||
valid: false,
|
|
||||||
message: `${_('URL must use one of the following protocols:')} ${protocols.join(', ')}`,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return { valid: true, message: _('Valid') };
|
|
||||||
} catch (_e) {
|
|
||||||
return { valid: false, message: _('Invalid URL format') };
|
return { valid: false, message: _('Invalid URL format') };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const hasValidProtocol = protocols.some((p) => url.indexOf(p + '//') === 0);
|
||||||
|
|
||||||
|
if (!hasValidProtocol)
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
message:
|
||||||
|
_('URL must use one of the following protocols:') +
|
||||||
|
' ' +
|
||||||
|
protocols.join(', '),
|
||||||
|
};
|
||||||
|
|
||||||
|
const regex = new RegExp(
|
||||||
|
`^(?:${protocols.map((p) => p.replace(':', '')).join('|')})://` +
|
||||||
|
`(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}(?::\\d+)?(?:/[^\\s]*)?$`,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (regex.test(url)) {
|
||||||
|
return { valid: true, message: _('Valid') };
|
||||||
|
}
|
||||||
|
|
||||||
|
return { valid: false, message: _('Invalid URL format') };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,18 +58,22 @@ function validateDNS(value) {
|
|||||||
|
|
||||||
// src/validators/validateUrl.ts
|
// src/validators/validateUrl.ts
|
||||||
function validateUrl(url, protocols = ["http:", "https:"]) {
|
function validateUrl(url, protocols = ["http:", "https:"]) {
|
||||||
try {
|
if (!url.length) {
|
||||||
const parsedUrl = new URL(url);
|
|
||||||
if (!protocols.includes(parsedUrl.protocol)) {
|
|
||||||
return {
|
|
||||||
valid: false,
|
|
||||||
message: `${_("URL must use one of the following protocols:")} ${protocols.join(", ")}`
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return { valid: true, message: _("Valid") };
|
|
||||||
} catch (_e) {
|
|
||||||
return { valid: false, message: _("Invalid URL format") };
|
return { valid: false, message: _("Invalid URL format") };
|
||||||
}
|
}
|
||||||
|
const hasValidProtocol = protocols.some((p) => url.indexOf(p + "//") === 0);
|
||||||
|
if (!hasValidProtocol)
|
||||||
|
return {
|
||||||
|
valid: false,
|
||||||
|
message: _("URL must use one of the following protocols:") + " " + protocols.join(", ")
|
||||||
|
};
|
||||||
|
const regex = new RegExp(
|
||||||
|
`^(?:${protocols.map((p) => p.replace(":", "")).join("|")})://(?:[A-Za-z0-9-]+\\.)+[A-Za-z]{2,}(?::\\d+)?(?:/[^\\s]*)?$`
|
||||||
|
);
|
||||||
|
if (regex.test(url)) {
|
||||||
|
return { valid: true, message: _("Valid") };
|
||||||
|
}
|
||||||
|
return { valid: false, message: _("Invalid URL format") };
|
||||||
}
|
}
|
||||||
|
|
||||||
// src/validators/validatePath.ts
|
// src/validators/validatePath.ts
|
||||||
@@ -323,15 +327,7 @@ function validateVlessUrl(url) {
|
|||||||
// src/validators/validateOutboundJson.ts
|
// src/validators/validateOutboundJson.ts
|
||||||
function validateOutboundJson(value) {
|
function validateOutboundJson(value) {
|
||||||
try {
|
try {
|
||||||
const parsed = JSON.parse(value);
|
JSON.parse(value);
|
||||||
if (!parsed.type || !parsed.server || !parsed.server_port) {
|
|
||||||
return {
|
|
||||||
valid: false,
|
|
||||||
message: _(
|
|
||||||
'Outbound JSON must contain at least "type", "server" and "server_port" fields'
|
|
||||||
)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return { valid: true, message: _("Valid") };
|
return { valid: true, message: _("Valid") };
|
||||||
} catch {
|
} catch {
|
||||||
return { valid: false, message: _("Invalid JSON format") };
|
return { valid: false, message: _("Invalid JSON format") };
|
||||||
@@ -565,11 +561,11 @@ var PodkopShellMethods = {
|
|||||||
]),
|
]),
|
||||||
getClashApiProxyLatency: async (tag) => callBaseMethod(
|
getClashApiProxyLatency: async (tag) => callBaseMethod(
|
||||||
Podkop.AvailableMethods.CLASH_API,
|
Podkop.AvailableMethods.CLASH_API,
|
||||||
[Podkop.AvailableClashAPIMethods.GET_PROXY_LATENCY, tag]
|
[Podkop.AvailableClashAPIMethods.GET_PROXY_LATENCY, tag, "5000"]
|
||||||
),
|
),
|
||||||
getClashApiGroupLatency: async (tag) => callBaseMethod(
|
getClashApiGroupLatency: async (tag) => callBaseMethod(
|
||||||
Podkop.AvailableMethods.CLASH_API,
|
Podkop.AvailableMethods.CLASH_API,
|
||||||
[Podkop.AvailableClashAPIMethods.GET_GROUP_LATENCY, tag]
|
[Podkop.AvailableClashAPIMethods.GET_GROUP_LATENCY, tag, "10000"]
|
||||||
),
|
),
|
||||||
setClashApiGroupProxy: async (group, proxy) => callBaseMethod(Podkop.AvailableMethods.CLASH_API, [
|
setClashApiGroupProxy: async (group, proxy) => callBaseMethod(Podkop.AvailableMethods.CLASH_API, [
|
||||||
Podkop.AvailableClashAPIMethods.SET_GROUP_PROXY,
|
Podkop.AvailableClashAPIMethods.SET_GROUP_PROXY,
|
||||||
@@ -735,10 +731,18 @@ async function getDashboardSections() {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// src/podkop/methods/custom/getClashApiSecret.ts
|
||||||
|
async function getClashApiSecret() {
|
||||||
|
const sections = await getConfigSections();
|
||||||
|
const settings = sections.find((section) => section[".type"] === "settings");
|
||||||
|
return settings?.yacd_secret_key || "";
|
||||||
|
}
|
||||||
|
|
||||||
// src/podkop/methods/custom/index.ts
|
// src/podkop/methods/custom/index.ts
|
||||||
var CustomPodkopMethods = {
|
var CustomPodkopMethods = {
|
||||||
getConfigSections,
|
getConfigSections,
|
||||||
getDashboardSections
|
getDashboardSections,
|
||||||
|
getClashApiSecret
|
||||||
};
|
};
|
||||||
|
|
||||||
// src/constants.ts
|
// src/constants.ts
|
||||||
@@ -1880,8 +1884,9 @@ async function fetchDashboardSections() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
async function connectToClashSockets() {
|
async function connectToClashSockets() {
|
||||||
|
const clashApiSecret = await getClashApiSecret();
|
||||||
socket.subscribe(
|
socket.subscribe(
|
||||||
`${getClashWsUrl()}/traffic?token=`,
|
`${getClashWsUrl()}/traffic?token=${clashApiSecret}`,
|
||||||
(msg) => {
|
(msg) => {
|
||||||
const parsedMsg = JSON.parse(msg);
|
const parsedMsg = JSON.parse(msg);
|
||||||
store.set({
|
store.set({
|
||||||
@@ -1908,7 +1913,7 @@ async function connectToClashSockets() {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
socket.subscribe(
|
socket.subscribe(
|
||||||
`${getClashWsUrl()}/connections?token=`,
|
`${getClashWsUrl()}/connections?token=${clashApiSecret}`,
|
||||||
(msg) => {
|
(msg) => {
|
||||||
const parsedMsg = JSON.parse(msg);
|
const parsedMsg = JSON.parse(msg);
|
||||||
store.set({
|
store.set({
|
||||||
@@ -2513,7 +2518,7 @@ async function runSingBoxCheck() {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
state: data.sing_box_version_ok ? "success" : "error",
|
state: data.sing_box_version_ok ? "success" : "error",
|
||||||
key: _("Sing-box version >= 1.12.4"),
|
key: _("Sing-box version is compatible (newer than 1.12.4)"),
|
||||||
value: ""
|
value: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3753,12 +3758,12 @@ async function runSectionsCheck() {
|
|||||||
if (selectedProxyDelay) {
|
if (selectedProxyDelay) {
|
||||||
return {
|
return {
|
||||||
success: true,
|
success: true,
|
||||||
latency: `[${selectedOutbound?.code ?? ""}] ${selectedProxyDelay}ms`
|
latency: `[${selectedOutbound?.displayName ?? ""}] ${selectedProxyDelay}ms`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
success: false,
|
success: false,
|
||||||
latency: `[${selectedOutbound?.code ?? ""}] ${_("Not responding")}`
|
latency: `[${selectedOutbound?.displayName ?? ""}] ${_("Not responding")}`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
@@ -4152,9 +4157,7 @@ function renderDiagnosticSystemInfoWidget() {
|
|||||||
function getPodkopVersionRow() {
|
function getPodkopVersionRow() {
|
||||||
const loading = diagnosticsSystemInfo.loading;
|
const loading = diagnosticsSystemInfo.loading;
|
||||||
const unknown = diagnosticsSystemInfo.podkop_version === _("unknown");
|
const unknown = diagnosticsSystemInfo.podkop_version === _("unknown");
|
||||||
const hasActualVersion = Boolean(
|
const hasActualVersion = Boolean(diagnosticsSystemInfo.podkop_latest_version) && diagnosticsSystemInfo.podkop_latest_version !== "unknown";
|
||||||
diagnosticsSystemInfo.podkop_latest_version
|
|
||||||
);
|
|
||||||
const version = normalizeCompiledVersion(
|
const version = normalizeCompiledVersion(
|
||||||
diagnosticsSystemInfo.podkop_version
|
diagnosticsSystemInfo.podkop_version
|
||||||
);
|
);
|
||||||
@@ -4745,6 +4748,10 @@ function insertIf(condition, elements) {
|
|||||||
function insertIfObj(condition, object) {
|
function insertIfObj(condition, object) {
|
||||||
return condition ? object : {};
|
return condition ? object : {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// src/main.ts
|
||||||
|
if (typeof structuredClone !== "function")
|
||||||
|
globalThis.structuredClone = (obj) => JSON.parse(JSON.stringify(obj));
|
||||||
return baseclass.extend({
|
return baseclass.extend({
|
||||||
ALLOWED_WITH_RUSSIA_INSIDE,
|
ALLOWED_WITH_RUSSIA_INSIDE,
|
||||||
BOOTSTRAP_DNS_SERVER_OPTIONS,
|
BOOTSTRAP_DNS_SERVER_OPTIONS,
|
||||||
|
|||||||
@@ -104,6 +104,70 @@ function createSectionContent(section) {
|
|||||||
return validation.message;
|
return validation.message;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
o = section.option(
|
||||||
|
form.ListValue,
|
||||||
|
"urltest_check_interval",
|
||||||
|
_("URLTest Check Interval"),
|
||||||
|
_("The interval between connectivity tests")
|
||||||
|
);
|
||||||
|
o.value("30s", _("Every 30 seconds"));
|
||||||
|
o.value("1m", _("Every 1 minute"));
|
||||||
|
o.value("3m", _("Every 3 minutes"));
|
||||||
|
o.value("5m", _("Every 5 minutes"));
|
||||||
|
o.default = "3m";
|
||||||
|
o.depends("proxy_config_type", "urltest");
|
||||||
|
|
||||||
|
o = section.option(
|
||||||
|
form.Value,
|
||||||
|
"urltest_tolerance",
|
||||||
|
_("URLTest Tolerance"),
|
||||||
|
_("The maximum difference in response times (ms) allowed when comparing servers")
|
||||||
|
);
|
||||||
|
o.default = "50";
|
||||||
|
o.rmempty = false;
|
||||||
|
o.depends("proxy_config_type", "urltest");
|
||||||
|
o.validate = function (section_id, value) {
|
||||||
|
if (!value || value.length === 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const parsed = parseFloat(value);
|
||||||
|
|
||||||
|
if (/^[0-9]+$/.test(value) && !isNaN(parsed) && isFinite(parsed) && parsed >= 50 && parsed <= 1000) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _('Must be a number in the range of 50 - 1000');
|
||||||
|
};
|
||||||
|
|
||||||
|
o = section.option(
|
||||||
|
form.Value,
|
||||||
|
"urltest_testing_url",
|
||||||
|
_("URLTest Testing URL"),
|
||||||
|
_("The URL used to test server connectivity")
|
||||||
|
);
|
||||||
|
o.value("https://www.gstatic.com/generate_204", "https://www.gstatic.com/generate_204 (Google)");
|
||||||
|
o.value("https://cp.cloudflare.com/generate_204", "https://cp.cloudflare.com/generate_204 (Cloudflare)");
|
||||||
|
o.value("https://captive.apple.com", "https://captive.apple.com (Apple)");
|
||||||
|
o.value("https://connectivity-check.ubuntu.com", "https://connectivity-check.ubuntu.com (Ubuntu)")
|
||||||
|
o.default = "https://www.gstatic.com/generate_204";
|
||||||
|
o.rmempty = false;
|
||||||
|
o.depends("proxy_config_type", "urltest");
|
||||||
|
|
||||||
|
o.validate = function (section_id, value) {
|
||||||
|
if (!value || value.length === 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const validation = main.validateUrl(value);
|
||||||
|
|
||||||
|
if (validation.valid) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return validation.message;
|
||||||
|
};
|
||||||
|
|
||||||
o = section.option(
|
o = section.option(
|
||||||
form.Flag,
|
form.Flag,
|
||||||
"enable_udp_over_tcp",
|
"enable_udp_over_tcp",
|
||||||
|
|||||||
@@ -240,6 +240,25 @@ function createSettingsContent(section) {
|
|||||||
o.default = "0";
|
o.default = "0";
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
|
o = section.option(
|
||||||
|
form.Flag,
|
||||||
|
"enable_yacd_wan_access",
|
||||||
|
_("Enable YACD WAN Access"),
|
||||||
|
_("Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall."),
|
||||||
|
);
|
||||||
|
o.depends("enable_yacd", "1");
|
||||||
|
o.default = "0";
|
||||||
|
o.rmempty = false;
|
||||||
|
|
||||||
|
o = section.option(
|
||||||
|
form.Value,
|
||||||
|
"yacd_secret_key",
|
||||||
|
_("YACD Secret Key"),
|
||||||
|
_("Secret key for authenticating remote access to YACD when WAN access is enabled."),
|
||||||
|
);
|
||||||
|
o.depends("enable_yacd_wan_access", "1");
|
||||||
|
o.rmempty = false;
|
||||||
|
|
||||||
o = section.option(
|
o = section.option(
|
||||||
form.Flag,
|
form.Flag,
|
||||||
"disable_quic",
|
"disable_quic",
|
||||||
@@ -267,7 +286,7 @@ function createSettingsContent(section) {
|
|||||||
form.Flag,
|
form.Flag,
|
||||||
"download_lists_via_proxy",
|
"download_lists_via_proxy",
|
||||||
_("Download Lists via Proxy/VPN"),
|
_("Download Lists via Proxy/VPN"),
|
||||||
_("Downloading all lists via main Proxy/VPN"),
|
_("Downloading all lists via specific Proxy/VPN"),
|
||||||
);
|
);
|
||||||
o.default = "0";
|
o.default = "0";
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PODKOP\n"
|
"Project-Id-Version: PODKOP\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-25 01:08+0300\n"
|
"POT-Creation-Date: 2025-11-06 16:19+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-25 01:08+0300\n"
|
"PO-Revision-Date: 2025-11-06 16:19+0200\n"
|
||||||
"Last-Translator: divocat\n"
|
"Last-Translator: divocat\n"
|
||||||
"Language-Team: none\n"
|
"Language-Team: none\n"
|
||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
@@ -35,6 +35,9 @@ msgstr "Активные соединения"
|
|||||||
msgid "Additional marking rules found"
|
msgid "Additional marking rules found"
|
||||||
msgstr "Найдены дополнительные правила маркировки"
|
msgstr "Найдены дополнительные правила маркировки"
|
||||||
|
|
||||||
|
msgid "Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall."
|
||||||
|
msgstr "Обеспечивает доступ к YACD из WAN. Убедитесь, что в брандмауэре открыт соответствующий порт."
|
||||||
|
|
||||||
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
||||||
msgstr "Применимо для SOCKS и Shadowsocks прокси"
|
msgstr "Применимо для SOCKS и Shadowsocks прокси"
|
||||||
|
|
||||||
@@ -182,9 +185,6 @@ msgstr "Скачивать списки через Proxy/VPN"
|
|||||||
msgid "Download Lists via specific proxy section"
|
msgid "Download Lists via specific proxy section"
|
||||||
msgstr "Скачивать списки через выбранную секцию"
|
msgstr "Скачивать списки через выбранную секцию"
|
||||||
|
|
||||||
msgid "Downloading all lists via main Proxy/VPN"
|
|
||||||
msgstr "Загрузка всех списков через основной прокси/VPN"
|
|
||||||
|
|
||||||
msgid "Downloading all lists via specific Proxy/VPN"
|
msgid "Downloading all lists via specific Proxy/VPN"
|
||||||
msgstr "Загрузка всех списков через указанный прокси/VPN"
|
msgstr "Загрузка всех списков через указанный прокси/VPN"
|
||||||
|
|
||||||
@@ -209,6 +209,9 @@ msgstr "Включить смешанный прокси-сервер, разр
|
|||||||
msgid "Enable YACD"
|
msgid "Enable YACD"
|
||||||
msgstr "Включить YACD"
|
msgstr "Включить YACD"
|
||||||
|
|
||||||
|
msgid "Enable YACD WAN Access"
|
||||||
|
msgstr "Включить доступ YACD WAN"
|
||||||
|
|
||||||
msgid "Enter complete outbound configuration in JSON format"
|
msgid "Enter complete outbound configuration in JSON format"
|
||||||
msgstr "Введите полную конфигурацию исходящего соединения в формате JSON"
|
msgstr "Введите полную конфигурацию исходящего соединения в формате JSON"
|
||||||
|
|
||||||
@@ -221,6 +224,18 @@ msgstr "Введите доменные имена без протоколов,
|
|||||||
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
||||||
msgstr "Введите подсети в нотации CIDR (например, 103.21.244.0/22) или отдельные IP-адреса"
|
msgstr "Введите подсети в нотации CIDR (например, 103.21.244.0/22) или отдельные IP-адреса"
|
||||||
|
|
||||||
|
msgid "Every 1 minute"
|
||||||
|
msgstr "Каждую минуту"
|
||||||
|
|
||||||
|
msgid "Every 3 minutes"
|
||||||
|
msgstr "Каждые 3 минуты"
|
||||||
|
|
||||||
|
msgid "Every 30 seconds"
|
||||||
|
msgstr "Каждые 30 секунд"
|
||||||
|
|
||||||
|
msgid "Every 5 minutes"
|
||||||
|
msgstr "Каждые 5 минут"
|
||||||
|
|
||||||
msgid "Exclude NTP"
|
msgid "Exclude NTP"
|
||||||
msgstr "Исключить NTP"
|
msgstr "Исключить NTP"
|
||||||
|
|
||||||
@@ -377,6 +392,9 @@ msgstr "Порт смешанного прокси"
|
|||||||
msgid "Monitored Interfaces"
|
msgid "Monitored Interfaces"
|
||||||
msgstr "Наблюдаемые интерфейсы"
|
msgstr "Наблюдаемые интерфейсы"
|
||||||
|
|
||||||
|
msgid "Must be a number in the range of 50 - 1000"
|
||||||
|
msgstr "Должно быть числом от 50 до 1000"
|
||||||
|
|
||||||
msgid "Network Interface"
|
msgid "Network Interface"
|
||||||
msgstr "Сетевой интерфейс"
|
msgstr "Сетевой интерфейс"
|
||||||
|
|
||||||
@@ -401,9 +419,6 @@ msgstr "Конфигурация Outbound"
|
|||||||
msgid "Outbound Configuration"
|
msgid "Outbound Configuration"
|
||||||
msgstr "Конфигурация исходящего соединения"
|
msgstr "Конфигурация исходящего соединения"
|
||||||
|
|
||||||
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
|
|
||||||
msgstr "JSON должен содержать поля \"type\", \"server\" и \"server_port\""
|
|
||||||
|
|
||||||
msgid "Outdated"
|
msgid "Outdated"
|
||||||
msgstr "Устаревшая"
|
msgstr "Устаревшая"
|
||||||
|
|
||||||
@@ -488,6 +503,9 @@ msgstr "Запустить диагностику"
|
|||||||
msgid "Russia inside restrictions"
|
msgid "Russia inside restrictions"
|
||||||
msgstr "Ограничения Russia inside"
|
msgstr "Ограничения Russia inside"
|
||||||
|
|
||||||
|
msgid "Secret key for authenticating remote access to YACD when WAN access is enabled."
|
||||||
|
msgstr "Секретный ключ для аутентификации удаленного доступа к YACD при включенном доступе через WAN."
|
||||||
|
|
||||||
msgid "Sections"
|
msgid "Sections"
|
||||||
msgstr "Секции"
|
msgstr "Секции"
|
||||||
|
|
||||||
@@ -563,8 +581,8 @@ msgstr "Процесс sing-box запущен"
|
|||||||
msgid "Sing-box service exist"
|
msgid "Sing-box service exist"
|
||||||
msgstr "Сервис sing-box существует"
|
msgstr "Сервис sing-box существует"
|
||||||
|
|
||||||
msgid "Sing-box version >= 1.12.4"
|
msgid "Sing-box version is compatible (newer than 1.12.4)"
|
||||||
msgstr "Версия sing-box >= 1.12.4"
|
msgstr "Версия Sing-box совместима (новее 1.12.4)"
|
||||||
|
|
||||||
msgid "Source Network Interface"
|
msgid "Source Network Interface"
|
||||||
msgstr "Сетевой интерфейс источника"
|
msgstr "Сетевой интерфейс источника"
|
||||||
@@ -614,6 +632,15 @@ msgstr "Текстовый список (через запятую, пробел
|
|||||||
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
||||||
msgstr "DNS-сервер, используемый для поиска IP-адреса вышестоящего DNS-сервера"
|
msgstr "DNS-сервер, используемый для поиска IP-адреса вышестоящего DNS-сервера"
|
||||||
|
|
||||||
|
msgid "The interval between connectivity tests"
|
||||||
|
msgstr "Интервал между тестами подключения"
|
||||||
|
|
||||||
|
msgid "The maximum difference in response times (ms) allowed when comparing servers"
|
||||||
|
msgstr "Максимально допустимая разница во времени отклика (мс) при сравнении серверов"
|
||||||
|
|
||||||
|
msgid "The URL used to test server connectivity"
|
||||||
|
msgstr "URL-адрес, используемый для проверки подключения к серверу"
|
||||||
|
|
||||||
msgid "Time in seconds for DNS record caching (default: 60)"
|
msgid "Time in seconds for DNS record caching (default: 60)"
|
||||||
msgstr "Время в секундах для кэширования DNS записей (по умолчанию: 60)"
|
msgstr "Время в секундах для кэширования DNS записей (по умолчанию: 60)"
|
||||||
|
|
||||||
@@ -656,9 +683,18 @@ msgstr "URL должен использовать один из следующи
|
|||||||
msgid "URLTest"
|
msgid "URLTest"
|
||||||
msgstr "URLTest"
|
msgstr "URLTest"
|
||||||
|
|
||||||
|
msgid "URLTest Check Interval"
|
||||||
|
msgstr "Интервал проверки URLTest"
|
||||||
|
|
||||||
msgid "URLTest Proxy Links"
|
msgid "URLTest Proxy Links"
|
||||||
msgstr "Ссылки прокси для URLTest"
|
msgstr "Ссылки прокси для URLTest"
|
||||||
|
|
||||||
|
msgid "URLTest Testing URL"
|
||||||
|
msgstr "URLTest ссылка для проверки"
|
||||||
|
|
||||||
|
msgid "URLTest Tolerance"
|
||||||
|
msgstr "URLTest допустимое отклонение"
|
||||||
|
|
||||||
msgid "User Domain List Type"
|
msgid "User Domain List Type"
|
||||||
msgstr "Тип пользовательского списка доменов"
|
msgstr "Тип пользовательского списка доменов"
|
||||||
|
|
||||||
@@ -695,5 +731,8 @@ msgstr "Предупреждение: %s нельзя использовать
|
|||||||
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
||||||
msgstr "Предупреждение: Russia inside может быть использован только с %s. %s уже есть в Russia inside и будет удален из выбранных."
|
msgstr "Предупреждение: Russia inside может быть использован только с %s. %s уже есть в Russia inside и будет удален из выбранных."
|
||||||
|
|
||||||
|
msgid "YACD Secret Key"
|
||||||
|
msgstr "Секретный ключ YACD"
|
||||||
|
|
||||||
msgid "You can select Output Network Interface, by default autodetect"
|
msgid "You can select Output Network Interface, by default autodetect"
|
||||||
msgstr "Вы можете выбрать выходной сетевой интерфейс, по умолчанию он определяется автоматически."
|
msgstr "Вы можете выбрать выходной сетевой интерфейс, по умолчанию он определяется автоматически."
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PODKOP\n"
|
"Project-Id-Version: PODKOP\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-10-25 22:08+0300\n"
|
"POT-Creation-Date: 2025-11-06 14:19+0200\n"
|
||||||
"PO-Revision-Date: 2025-10-25 22:08+0300\n"
|
"PO-Revision-Date: 2025-11-06 14:19+0200\n"
|
||||||
"Last-Translator: divocat <divocatt@gmail.com>\n"
|
"Last-Translator: divocat <divocatt@gmail.com>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@@ -40,15 +40,19 @@ msgstr ""
|
|||||||
msgid "Additional marking rules found"
|
msgid "Additional marking rules found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:111
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:247
|
||||||
|
msgid "Allows access to YACD from the WAN. Make sure to open the appropriate port in your firewall."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:175
|
||||||
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
msgid "Applicable for SOCKS and Shadowsocks proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:356
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:420
|
||||||
msgid "At least one valid domain must be specified. Comments-only content is not allowed."
|
msgid "At least one valid domain must be specified. Comments-only content is not allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:437
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:501
|
||||||
msgid "At least one valid subnet or IP must be specified. Comments-only content is not allowed."
|
msgid "At least one valid subnet or IP must be specified. Comments-only content is not allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -72,11 +76,11 @@ msgstr ""
|
|||||||
msgid "Browser is using FakeIP correctly"
|
msgid "Browser is using FakeIP correctly"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:329
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:348
|
||||||
msgid "Cache File Path"
|
msgid "Cache File Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:343
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:362
|
||||||
msgid "Cache file path cannot be empty"
|
msgid "Cache file path cannot be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -115,11 +119,11 @@ msgstr ""
|
|||||||
msgid "Close"
|
msgid "Close"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:211
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:275
|
||||||
msgid "Community Lists"
|
msgid "Community Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:316
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:335
|
||||||
msgid "Config File Path"
|
msgid "Config File Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -175,16 +179,16 @@ msgstr ""
|
|||||||
msgid "Disable autostart"
|
msgid "Disable autostart"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:246
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:265
|
||||||
msgid "Disable QUIC"
|
msgid "Disable QUIC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:247
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:266
|
||||||
msgid "Disable the QUIC protocol to improve compatibility or fix issues with video streaming"
|
msgid "Disable the QUIC protocol to improve compatibility or fix issues with video streaming"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:302
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:366
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:382
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:446
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -192,17 +196,17 @@ msgstr ""
|
|||||||
msgid "DNS on router"
|
msgid "DNS on router"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:179
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:243
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:15
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:15
|
||||||
msgid "DNS over HTTPS (DoH)"
|
msgid "DNS over HTTPS (DoH)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:180
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:244
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:16
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:16
|
||||||
msgid "DNS over TLS (DoT)"
|
msgid "DNS over TLS (DoT)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:176
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:240
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:12
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:12
|
||||||
msgid "DNS Protocol Type"
|
msgid "DNS Protocol Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -211,7 +215,7 @@ msgstr ""
|
|||||||
msgid "DNS Rewrite TTL"
|
msgid "DNS Rewrite TTL"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:189
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:253
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:24
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:24
|
||||||
msgid "DNS Server"
|
msgid "DNS Server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -224,11 +228,11 @@ msgstr ""
|
|||||||
msgid "Do not panic, everything can be fixed, just..."
|
msgid "Do not panic, everything can be fixed, just..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:166
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:230
|
||||||
msgid "Domain Resolver"
|
msgid "Domain Resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:307
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:326
|
||||||
msgid "Dont Touch My DHCP!"
|
msgid "Dont Touch My DHCP!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -241,24 +245,21 @@ msgstr ""
|
|||||||
msgid "Download"
|
msgid "Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:269
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:288
|
||||||
msgid "Download Lists via Proxy/VPN"
|
msgid "Download Lists via Proxy/VPN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:278
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:297
|
||||||
msgid "Download Lists via specific proxy section"
|
msgid "Download Lists via specific proxy section"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:289
|
||||||
msgid "Downloading all lists via main Proxy/VPN"
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:298
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279
|
|
||||||
msgid "Downloading all lists via specific Proxy/VPN"
|
msgid "Downloading all lists via specific Proxy/VPN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:303
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:367
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:383
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:447
|
||||||
msgid "Dynamic List"
|
msgid "Dynamic List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -266,11 +267,11 @@ msgstr ""
|
|||||||
msgid "Enable autostart"
|
msgid "Enable autostart"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:167
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:231
|
||||||
msgid "Enable built-in DNS resolver for domains handled by this section"
|
msgid "Enable built-in DNS resolver for domains handled by this section"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:575
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:639
|
||||||
msgid "Enable Mixed Proxy"
|
msgid "Enable Mixed Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -278,7 +279,7 @@ msgstr ""
|
|||||||
msgid "Enable Output Network Interface"
|
msgid "Enable Output Network Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:576
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:640
|
||||||
msgid "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies"
|
msgid "Enable the mixed proxy, allowing this section to route traffic through both HTTP and SOCKS proxies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -286,27 +287,47 @@ msgstr ""
|
|||||||
msgid "Enable YACD"
|
msgid "Enable YACD"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:246
|
||||||
|
msgid "Enable YACD WAN Access"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:65
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:65
|
||||||
msgid "Enter complete outbound configuration in JSON format"
|
msgid "Enter complete outbound configuration in JSON format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:338
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:402
|
||||||
msgid "Enter domain names separated by commas, spaces, or newlines. You can add comments using //"
|
msgid "Enter domain names separated by commas, spaces, or newlines. You can add comments using //"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:312
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:376
|
||||||
msgid "Enter domain names without protocols, e.g. example.com or sub.example.com"
|
msgid "Enter domain names without protocols, e.g. example.com or sub.example.com"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:392
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:456
|
||||||
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
msgid "Enter subnets in CIDR notation (e.g. 103.21.244.0/22) or single IP addresses"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:365
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:114
|
||||||
|
msgid "Every 1 minute"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:115
|
||||||
|
msgid "Every 3 minutes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:113
|
||||||
|
msgid "Every 30 seconds"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:116
|
||||||
|
msgid "Every 5 minutes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:384
|
||||||
msgid "Exclude NTP"
|
msgid "Exclude NTP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:366
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:385
|
||||||
msgid "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN"
|
msgid "Exclude NTP protocol traffic from the tunnel to prevent it from being routed through the proxy or VPN"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -324,10 +345,11 @@ msgid "Failed to execute!"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/podkop/methods/custom/getDashboardSections.ts:117
|
#: src/podkop/methods/custom/getDashboardSections.ts:117
|
||||||
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59
|
||||||
msgid "Fastest"
|
msgid "Fastest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:550
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:614
|
||||||
msgid "Fully Routed IPs"
|
msgid "Fully Routed IPs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -372,7 +394,7 @@ msgstr ""
|
|||||||
msgid "Invalid IP address"
|
msgid "Invalid IP address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateOutboundJson.ts:19
|
#: src/validators/validateOutboundJson.ts:9
|
||||||
msgid "Invalid JSON format"
|
msgid "Invalid JSON format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -468,7 +490,8 @@ msgstr ""
|
|||||||
msgid "Invalid Trojan URL: parsing failed"
|
msgid "Invalid Trojan URL: parsing failed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateUrl.ts:18
|
#: src/validators/validateUrl.ts:8
|
||||||
|
#: src/validators/validateUrl.ts:31
|
||||||
msgid "Invalid URL format"
|
msgid "Invalid URL format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -488,15 +511,15 @@ msgstr ""
|
|||||||
msgid "Latest"
|
msgid "Latest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:257
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:276
|
||||||
msgid "List Update Frequency"
|
msgid "List Update Frequency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:458
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:522
|
||||||
msgid "Local Domain Lists"
|
msgid "Local Domain Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:481
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:545
|
||||||
msgid "Local Subnet Lists"
|
msgid "Local Subnet Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -508,7 +531,7 @@ msgstr ""
|
|||||||
msgid "Memory Usage"
|
msgid "Memory Usage"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:586
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:650
|
||||||
msgid "Mixed Proxy Port"
|
msgid "Mixed Proxy Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -516,7 +539,11 @@ msgstr ""
|
|||||||
msgid "Monitored Interfaces"
|
msgid "Monitored Interfaces"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:120
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:140
|
||||||
|
msgid "Must be a number in the range of 50 - 1000"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:184
|
||||||
msgid "Network Interface"
|
msgid "Network Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -528,8 +555,9 @@ msgstr ""
|
|||||||
msgid "Not implement yet"
|
msgid "Not implement yet"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:75
|
||||||
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:81
|
||||||
|
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:100
|
||||||
msgid "Not responding"
|
msgid "Not responding"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -553,10 +581,6 @@ msgstr ""
|
|||||||
msgid "Outbound Configuration"
|
msgid "Outbound Configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateOutboundJson.ts:11
|
|
||||||
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: src/podkop/tabs/diagnostic/initController.ts:443
|
#: src/podkop/tabs/diagnostic/initController.ts:443
|
||||||
msgid "Outdated"
|
msgid "Outdated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -569,15 +593,15 @@ msgstr ""
|
|||||||
msgid "Path cannot be empty"
|
msgid "Path cannot be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:347
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:366
|
||||||
msgid "Path must be absolute (start with /)"
|
msgid "Path must be absolute (start with /)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:356
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:375
|
||||||
msgid "Path must contain at least one directory (like /tmp/cache.db)"
|
msgid "Path must contain at least one directory (like /tmp/cache.db)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:351
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:370
|
||||||
msgid "Path must end with cache.db"
|
msgid "Path must end with cache.db"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -597,7 +621,7 @@ msgstr ""
|
|||||||
msgid "Podkop Settings"
|
msgid "Podkop Settings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:308
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:327
|
||||||
msgid "Podkop will not modify your DHCP configuration"
|
msgid "Podkop will not modify your DHCP configuration"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -613,15 +637,15 @@ msgstr ""
|
|||||||
msgid "Proxy traffic is routed via FakeIP"
|
msgid "Proxy traffic is routed via FakeIP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:245
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:309
|
||||||
msgid "Regional options cannot be used together"
|
msgid "Regional options cannot be used together"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:504
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:568
|
||||||
msgid "Remote Domain Lists"
|
msgid "Remote Domain Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:527
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:591
|
||||||
msgid "Remote Subnet Lists"
|
msgid "Remote Subnet Lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -637,7 +661,7 @@ msgstr ""
|
|||||||
msgid "Router DNS is routed through sing-box"
|
msgid "Router DNS is routed through sing-box"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:376
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:395
|
||||||
msgid "Routing Excluded IPs"
|
msgid "Routing Excluded IPs"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -669,15 +693,19 @@ msgstr ""
|
|||||||
msgid "Run Diagnostic"
|
msgid "Run Diagnostic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:264
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:328
|
||||||
msgid "Russia inside restrictions"
|
msgid "Russia inside restrictions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:257
|
||||||
|
msgid "Secret key for authenticating remote access to YACD when WAN access is enabled."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js:36
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js:36
|
||||||
msgid "Sections"
|
msgid "Sections"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:212
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:276
|
||||||
msgid "Select a predefined list for routing"
|
msgid "Select a predefined list for routing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -689,7 +717,7 @@ msgstr ""
|
|||||||
msgid "Select DNS protocol to use"
|
msgid "Select DNS protocol to use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:258
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:277
|
||||||
msgid "Select how often the domain or subnet lists are updated automatically"
|
msgid "Select how often the domain or subnet lists are updated automatically"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -697,32 +725,32 @@ msgstr ""
|
|||||||
msgid "Select how to configure the proxy"
|
msgid "Select how to configure the proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:121
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:185
|
||||||
msgid "Select network interface for VPN connection"
|
msgid "Select network interface for VPN connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:190
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:254
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:25
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:25
|
||||||
msgid "Select or enter DNS server address"
|
msgid "Select or enter DNS server address"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:330
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:349
|
||||||
msgid "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing"
|
msgid "Select or enter path for sing-box cache file. Change this ONLY if you know what you are doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:317
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:336
|
||||||
msgid "Select path for sing-box config file. Change this ONLY if you know what you are doing"
|
msgid "Select path for sing-box config file. Change this ONLY if you know what you are doing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:177
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:241
|
||||||
msgid "Select the DNS protocol type for the domain resolver"
|
msgid "Select the DNS protocol type for the domain resolver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:300
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:364
|
||||||
msgid "Select the list type for adding custom domains"
|
msgid "Select the list type for adding custom domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:380
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:444
|
||||||
msgid "Select the list type for adding custom subnets"
|
msgid "Select the list type for adding custom subnets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -776,31 +804,31 @@ msgid "Sing-box service exist"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/podkop/tabs/diagnostic/checks/runSingBoxCheck.ts:67
|
#: src/podkop/tabs/diagnostic/checks/runSingBoxCheck.ts:67
|
||||||
msgid "Sing-box version >= 1.12.4"
|
msgid "Sing-box version is compatible (newer than 1.12.4)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:89
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:89
|
||||||
msgid "Source Network Interface"
|
msgid "Source Network Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:377
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:396
|
||||||
msgid "Specify a local IP address to be excluded from routing"
|
msgid "Specify a local IP address to be excluded from routing"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:551
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:615
|
||||||
msgid "Specify local IP addresses or subnets whose traffic will always be routed through the configured route"
|
msgid "Specify local IP addresses or subnets whose traffic will always be routed through the configured route"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:505
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:569
|
||||||
msgid "Specify remote URLs to download and use domain lists"
|
msgid "Specify remote URLs to download and use domain lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:528
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:592
|
||||||
msgid "Specify remote URLs to download and use subnet lists"
|
msgid "Specify remote URLs to download and use subnet lists"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:459
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:523
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:482
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:546
|
||||||
msgid "Specify the path to the list file located on the router filesystem"
|
msgid "Specify the path to the list file located on the router filesystem"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -832,11 +860,11 @@ msgstr ""
|
|||||||
msgid "Test latency"
|
msgid "Test latency"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:304
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:368
|
||||||
msgid "Text List"
|
msgid "Text List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:384
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:448
|
||||||
msgid "Text List (comma/space/newline separated)"
|
msgid "Text List (comma/space/newline separated)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -844,6 +872,18 @@ msgstr ""
|
|||||||
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
msgid "The DNS server used to look up the IP address of an upstream DNS server"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:111
|
||||||
|
msgid "The interval between connectivity tests"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:124
|
||||||
|
msgid "The maximum difference in response times (ms) allowed when comparing servers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:147
|
||||||
|
msgid "The URL used to test server connectivity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:69
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:69
|
||||||
msgid "Time in seconds for DNS record caching (default: 60)"
|
msgid "Time in seconds for DNS record caching (default: 60)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -868,12 +908,12 @@ msgstr ""
|
|||||||
msgid "TTL value cannot be empty"
|
msgid "TTL value cannot be empty"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:181
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:245
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:17
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:17
|
||||||
msgid "UDP (Unprotected DNS)"
|
msgid "UDP (Unprotected DNS)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:110
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:174
|
||||||
msgid "UDP over TCP"
|
msgid "UDP over TCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -900,7 +940,7 @@ msgstr ""
|
|||||||
msgid "URL must start with vless://, ss://, trojan://, or socks4/5://"
|
msgid "URL must start with vless://, ss://, trojan://, or socks4/5://"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: src/validators/validateUrl.ts:13
|
#: src/validators/validateUrl.ts:17
|
||||||
msgid "URL must use one of the following protocols:"
|
msgid "URL must use one of the following protocols:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -908,31 +948,43 @@ msgstr ""
|
|||||||
msgid "URLTest"
|
msgid "URLTest"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:110
|
||||||
|
msgid "URLTest Check Interval"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:87
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:87
|
||||||
msgid "URLTest Proxy Links"
|
msgid "URLTest Proxy Links"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:299
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:146
|
||||||
|
msgid "URLTest Testing URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:123
|
||||||
|
msgid "URLTest Tolerance"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:363
|
||||||
msgid "User Domain List Type"
|
msgid "User Domain List Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:311
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:375
|
||||||
msgid "User Domains"
|
msgid "User Domains"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:337
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:401
|
||||||
msgid "User Domains List"
|
msgid "User Domains List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:379
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:443
|
||||||
msgid "User Subnet List Type"
|
msgid "User Subnet List Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:391
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:455
|
||||||
msgid "User Subnets"
|
msgid "User Subnets"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:417
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:481
|
||||||
msgid "User Subnets List"
|
msgid "User Subnets List"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -941,19 +993,19 @@ msgstr ""
|
|||||||
#: src/validators/validateDomain.ts:13
|
#: src/validators/validateDomain.ts:13
|
||||||
#: src/validators/validateDomain.ts:30
|
#: src/validators/validateDomain.ts:30
|
||||||
#: src/validators/validateIp.ts:8
|
#: src/validators/validateIp.ts:8
|
||||||
#: src/validators/validateOutboundJson.ts:17
|
#: src/validators/validateOutboundJson.ts:7
|
||||||
#: src/validators/validatePath.ts:16
|
#: src/validators/validatePath.ts:16
|
||||||
#: src/validators/validateShadowsocksUrl.ts:95
|
#: src/validators/validateShadowsocksUrl.ts:95
|
||||||
#: src/validators/validateSocksUrl.ts:80
|
#: src/validators/validateSocksUrl.ts:80
|
||||||
#: src/validators/validateSubnet.ts:38
|
#: src/validators/validateSubnet.ts:38
|
||||||
#: src/validators/validateTrojanUrl.ts:59
|
#: src/validators/validateTrojanUrl.ts:59
|
||||||
#: src/validators/validateUrl.ts:16
|
#: src/validators/validateUrl.ts:28
|
||||||
#: src/validators/validateVlessUrl.ts:108
|
#: src/validators/validateVlessUrl.ts:108
|
||||||
msgid "Valid"
|
msgid "Valid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:370
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:434
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:449
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:513
|
||||||
msgid "Validation errors:"
|
msgid "Validation errors:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -966,14 +1018,18 @@ msgstr ""
|
|||||||
msgid "Visit Wiki"
|
msgid "Visit Wiki"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:247
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:311
|
||||||
msgid "Warning: %s cannot be used together with %s. Previous selections have been removed."
|
msgid "Warning: %s cannot be used together with %s. Previous selections have been removed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:266
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:330
|
||||||
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
msgid "Warning: Russia inside can only be used with %s. %s already in Russia inside and have been removed from selection."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:256
|
||||||
|
msgid "YACD Secret Key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:127
|
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:127
|
||||||
msgid "You can select Output Network Interface, by default autodetect"
|
msgid "You can select Output Network Interface, by default autodetect"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|||||||
@@ -627,9 +627,12 @@ configure_outbound_handler() {
|
|||||||
urltest)
|
urltest)
|
||||||
log "Detected proxy configuration type: urltest" "debug"
|
log "Detected proxy configuration type: urltest" "debug"
|
||||||
local urltest_proxy_links udp_over_tcp i urltest_tag selector_tag outbound_tag outbound_tags \
|
local urltest_proxy_links udp_over_tcp i urltest_tag selector_tag outbound_tag outbound_tags \
|
||||||
urltest_outbounds selector_outbounds
|
urltest_outbounds selector_outbounds urltest_check_interval urltest_tolerance urltest_testing_url
|
||||||
config_get urltest_proxy_links "$section" "urltest_proxy_links"
|
config_get urltest_proxy_links "$section" "urltest_proxy_links"
|
||||||
config_get udp_over_tcp "$section" "enable_udp_over_tcp"
|
config_get udp_over_tcp "$section" "enable_udp_over_tcp"
|
||||||
|
config_get urltest_check_interval "$section" "urltest_check_interval" "3m"
|
||||||
|
config_get urltest_tolerance "$section" "urltest_tolerance" 50
|
||||||
|
config_get urltest_testing_url "$section" "urltest_testing_url" "https://www.gstatic.com/generate_204"
|
||||||
|
|
||||||
if [ -z "$urltest_proxy_links" ]; then
|
if [ -z "$urltest_proxy_links" ]; then
|
||||||
log "URLTest proxy links is not set. Aborted." "fatal"
|
log "URLTest proxy links is not set. Aborted." "fatal"
|
||||||
@@ -652,7 +655,8 @@ configure_outbound_handler() {
|
|||||||
selector_tag="$(get_outbound_tag_by_section "$section")"
|
selector_tag="$(get_outbound_tag_by_section "$section")"
|
||||||
urltest_outbounds="$(comma_string_to_json_array "$outbound_tags")"
|
urltest_outbounds="$(comma_string_to_json_array "$outbound_tags")"
|
||||||
selector_outbounds="$(comma_string_to_json_array "$outbound_tags,$urltest_tag")"
|
selector_outbounds="$(comma_string_to_json_array "$outbound_tags,$urltest_tag")"
|
||||||
config="$(sing_box_cm_add_urltest_outbound "$config" "$urltest_tag" "$urltest_outbounds")"
|
config="$(sing_box_cm_add_urltest_outbound "$config" "$urltest_tag" "$urltest_outbounds" \
|
||||||
|
"$urltest_testing_url" "$urltest_check_interval" "$urltest_tolerance")"
|
||||||
config="$(sing_box_cm_add_selector_outbound "$config" "$selector_tag" "$selector_outbounds" "$urltest_tag")"
|
config="$(sing_box_cm_add_selector_outbound "$config" "$selector_tag" "$selector_outbounds" "$urltest_tag")"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -1028,7 +1032,7 @@ import_local_domain_or_subnet_list() {
|
|||||||
domains) sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "domain_suffix" "$json_array" ;;
|
domains) sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "domain_suffix" "$json_array" ;;
|
||||||
subnets)
|
subnets)
|
||||||
sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "ip_cidr" "$json_array"
|
sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "ip_cidr" "$json_array"
|
||||||
nft_add_set_elements "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME" "$items"
|
nft_add_set_elements_from_file_chunked "$filepath" "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -1075,16 +1079,39 @@ sing_box_configure_experimental() {
|
|||||||
config_get cache_file "settings" "cache_path" "/tmp/sing-box/cache.db"
|
config_get cache_file "settings" "cache_path" "/tmp/sing-box/cache.db"
|
||||||
config=$(sing_box_cm_configure_cache_file "$config" true "$cache_file" true)
|
config=$(sing_box_cm_configure_cache_file "$config" true "$cache_file" true)
|
||||||
|
|
||||||
local enable_yacd external_controller_ui
|
|
||||||
config_get_bool enable_yacd "settings" "enable_yacd" 0
|
|
||||||
log "Configuring Clash API"
|
log "Configuring Clash API"
|
||||||
|
local enable_yacd enable_yacd_wan_access clash_api_controller_address
|
||||||
|
config_get_bool enable_yacd "settings" "enable_yacd" 0
|
||||||
|
config_get_bool enable_yacd_wan_access "settings" "enable_yacd_wan_access" 0
|
||||||
|
|
||||||
|
if [ "$enable_yacd" -eq 1 ] && [ "$enable_yacd_wan_access" -eq 1 ]; then
|
||||||
|
clash_api_controller_address="0.0.0.0"
|
||||||
|
else
|
||||||
|
clash_api_controller_address="$(get_service_listen_address)"
|
||||||
|
if [ -z "$clash_api_controller_address" ]; then
|
||||||
|
log "Could not determine the listening IP address for the Clash API controller. It will run only on localhost." "warn"
|
||||||
|
clash_api_controller_address="127.0.0.1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$enable_yacd" -eq 1 ]; then
|
if [ "$enable_yacd" -eq 1 ]; then
|
||||||
log "YACD is enabled, enabling Clash API with downloadable YACD" "debug"
|
log "YACD is enabled, enabling Clash API with downloadable YACD" "debug"
|
||||||
local external_controller_ui="ui"
|
local yacd_secret_key external_controller_ui
|
||||||
config=$(sing_box_cm_configure_clash_api "$config" "$SB_CLASH_API_CONTROLLER" "$external_controller_ui")
|
config_get yacd_secret_key "settings" "yacd_secret_key"
|
||||||
|
external_controller_ui="ui"
|
||||||
|
|
||||||
|
config=$(
|
||||||
|
sing_box_cm_configure_clash_api \
|
||||||
|
"$config" \
|
||||||
|
"$clash_api_controller_address:$SB_CLASH_API_CONTROLLER_PORT" \
|
||||||
|
"$external_controller_ui" \
|
||||||
|
"$yacd_secret_key"
|
||||||
|
)
|
||||||
else
|
else
|
||||||
log "YACD is disabled, enabling Clash API in online mode" "debug"
|
log "YACD is disabled, enabling Clash API in online mode" "debug"
|
||||||
config=$(sing_box_cm_configure_clash_api "$config" "$SB_CLASH_API_CONTROLLER")
|
config=$(
|
||||||
|
sing_box_cm_configure_clash_api "$config" "$clash_api_controller_address:$SB_CLASH_API_CONTROLLER_PORT"
|
||||||
|
)
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1113,8 +1140,13 @@ sing_box_additional_inbounds() {
|
|||||||
configure_section_mixed_proxy() {
|
configure_section_mixed_proxy() {
|
||||||
local section="$1"
|
local section="$1"
|
||||||
|
|
||||||
local mixed_inbound_enabled mixed_proxy_port mixed_inbound_tag mixed_outbound_tag
|
local mixed_inbound_enabled mixed_proxy_port mixed_inbound_tag mixed_outbound_tag mixed_proxy_address
|
||||||
config_get_bool mixed_inbound_enabled "$section" "mixed_proxy_enabled" 0
|
config_get_bool mixed_inbound_enabled "$section" "mixed_proxy_enabled" 0
|
||||||
|
mixed_proxy_address="$(get_service_listen_address)"
|
||||||
|
if [ -z "$mixed_proxy_address" ]; then
|
||||||
|
log "Could not determine the listening IP address for the Mixed Proxy. The proxy will not be created." "warn"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
config_get mixed_proxy_port "$section" "mixed_proxy_port"
|
config_get mixed_proxy_port "$section" "mixed_proxy_port"
|
||||||
if [ "$mixed_inbound_enabled" -eq 1 ]; then
|
if [ "$mixed_inbound_enabled" -eq 1 ]; then
|
||||||
mixed_inbound_tag="$(get_inbound_tag_by_section "$section-mixed")"
|
mixed_inbound_tag="$(get_inbound_tag_by_section "$section-mixed")"
|
||||||
@@ -1123,7 +1155,7 @@ configure_section_mixed_proxy() {
|
|||||||
sing_box_cf_add_mixed_inbound_and_route_rule \
|
sing_box_cf_add_mixed_inbound_and_route_rule \
|
||||||
"$config" \
|
"$config" \
|
||||||
"$mixed_inbound_tag" \
|
"$mixed_inbound_tag" \
|
||||||
"$SB_MIXED_INBOUND_ADDRESS" \
|
"$mixed_proxy_address" \
|
||||||
"$mixed_proxy_port" \
|
"$mixed_proxy_port" \
|
||||||
"$mixed_outbound_tag"
|
"$mixed_outbound_tag"
|
||||||
)
|
)
|
||||||
@@ -1209,7 +1241,7 @@ import_community_service_subnet_list_handler() {
|
|||||||
*) return 0 ;;
|
*) return 0 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
local tmpfile http_proxy_address subnets
|
local tmpfile http_proxy_address
|
||||||
tmpfile=$(mktemp)
|
tmpfile=$(mktemp)
|
||||||
http_proxy_address="$(get_service_proxy_address)"
|
http_proxy_address="$(get_service_proxy_address)"
|
||||||
|
|
||||||
@@ -1220,14 +1252,13 @@ import_community_service_subnet_list_handler() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
subnets="$(parse_domain_or_subnet_file_to_comma_string "$tmpfile" "subnets")"
|
|
||||||
rm -f "$tmpfile"
|
|
||||||
|
|
||||||
if [ "$service" = "discord" ]; then
|
if [ "$service" = "discord" ]; then
|
||||||
nft_add_set_elements "$NFT_TABLE_NAME" "$NFT_DISCORD_SET_NAME" "$subnets"
|
nft_add_set_elements_from_file_chunked "$tmpfile" "$NFT_TABLE_NAME" "$NFT_DISCORD_SET_NAME"
|
||||||
else
|
else
|
||||||
nft_add_set_elements "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME" "$subnets"
|
nft_add_set_elements_from_file_chunked "$tmpfile" "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -f "$tmpfile"
|
||||||
}
|
}
|
||||||
|
|
||||||
import_domains_from_remote_domain_lists() {
|
import_domains_from_remote_domain_lists() {
|
||||||
@@ -1309,8 +1340,8 @@ import_domains_or_subnets_from_remote_file() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
convert_crlf_to_lf "$tmpfile"
|
||||||
items="$(parse_domain_or_subnet_file_to_comma_string "$tmpfile" "$type")"
|
items="$(parse_domain_or_subnet_file_to_comma_string "$tmpfile" "$type")"
|
||||||
rm -f "$tmpfile"
|
|
||||||
|
|
||||||
if [ -z "$items" ]; then
|
if [ -z "$items" ]; then
|
||||||
log "No valid $type found in $url" "warn"
|
log "No valid $type found in $url" "warn"
|
||||||
@@ -1325,33 +1356,36 @@ import_domains_or_subnets_from_remote_file() {
|
|||||||
domains) sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "domain_suffix" "$json_array" ;;
|
domains) sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "domain_suffix" "$json_array" ;;
|
||||||
subnets)
|
subnets)
|
||||||
sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "ip_cidr" "$json_array"
|
sing_box_cm_patch_local_source_ruleset_rules "$ruleset_filepath" "ip_cidr" "$json_array"
|
||||||
nft_add_set_elements "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME" "$items"
|
nft_add_set_elements_from_file_chunked "$tmpfile" "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
rm -f "$tmpfile"
|
||||||
}
|
}
|
||||||
|
|
||||||
import_subnets_from_remote_json_file() {
|
import_subnets_from_remote_json_file() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local tmpfile subnets http_proxy_address
|
local json_tmpfile subnets_tmpfile http_proxy_address
|
||||||
tmpfile="$(mktemp)"
|
json_tmpfile="$(mktemp)"
|
||||||
|
subnets_tmpfile="$(mktemp)"
|
||||||
http_proxy_address="$(get_service_proxy_address)"
|
http_proxy_address="$(get_service_proxy_address)"
|
||||||
|
|
||||||
download_to_stream "$url" "$http_proxy_address" | jq -r '.rules[].ip_cidr[]?' > "$tmpfile"
|
download_to_file "$url" "$json_tmpfile" "$http_proxy_address"
|
||||||
|
|
||||||
if [ $? -ne 0 ] || [ ! -s "$tmpfile" ]; then
|
if [ $? -ne 0 ] || [ ! -s "$json_tmpfile" ]; then
|
||||||
log "Download $url list failed" "error"
|
log "Download $url list failed" "error"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
subnets="$(parse_domain_or_subnet_file_to_comma_string "$tmpfile" "subnets")"
|
extract_ip_cidr_from_json_ruleset_to_file "$json_tmpfile" "$subnets_tmpfile"
|
||||||
rm -f "$tmpfile"
|
nft_add_set_elements_from_file_chunked "$subnets_tmpfile" "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME"
|
||||||
nft_add_set_elements "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME" "$subnets"
|
rm -f "$json_tmpfile" "$subnets_tmpfile"
|
||||||
}
|
}
|
||||||
|
|
||||||
import_subnets_from_remote_srs_file() {
|
import_subnets_from_remote_srs_file() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
|
|
||||||
local binary_tmpfile json_tmpfile subnets_tmpfile subnets http_proxy_address
|
local binary_tmpfile json_tmpfile subnets_tmpfile http_proxy_address
|
||||||
binary_tmpfile="$(mktemp)"
|
binary_tmpfile="$(mktemp)"
|
||||||
json_tmpfile="$(mktemp)"
|
json_tmpfile="$(mktemp)"
|
||||||
subnets_tmpfile="$(mktemp)"
|
subnets_tmpfile="$(mktemp)"
|
||||||
@@ -1369,10 +1403,9 @@ import_subnets_from_remote_srs_file() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
jq -r '.rules[].ip_cidr[]' "$json_tmpfile" > "$subnets_tmpfile"
|
extract_ip_cidr_from_json_ruleset_to_file "$json_tmpfile" "$subnets_tmpfile"
|
||||||
subnets="$(parse_domain_or_subnet_file_to_comma_string "$subnets_tmpfile" "subnets")"
|
nft_add_set_elements_from_file_chunked "$subnets_tmpfile" "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME"
|
||||||
rm -f "$binary_tmpfile" "$json_tmpfile" "$subnets_tmpfile"
|
rm -f "$binary_tmpfile" "$json_tmpfile" "$subnets_tmpfile"
|
||||||
nft_add_set_elements "$NFT_TABLE_NAME" "$NFT_COMMON_SET_NAME" "$subnets"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
## Support functions
|
## Support functions
|
||||||
@@ -1455,6 +1488,23 @@ section_has_enabled_lists() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_service_listen_address() {
|
||||||
|
local service_listen_address
|
||||||
|
|
||||||
|
service_listen_address="$(uci_get "network" "lan" "ipaddr")"
|
||||||
|
|
||||||
|
if [ -z "$service_listen_address" ]; then
|
||||||
|
config_get service_listen_address "settings" "service_listen_address" # TODO(ampetelin): Remove after testing
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$service_listen_address" ]; then
|
||||||
|
log "Failed to determine the listening IP address. Please open an issue to report this problem: https://github.com/itdoginfo/podkop/issues" "error"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$service_listen_address"
|
||||||
|
}
|
||||||
|
|
||||||
## nftables
|
## nftables
|
||||||
nft_list_all_traffic_from_ip() {
|
nft_list_all_traffic_from_ip() {
|
||||||
local ip="$1"
|
local ip="$1"
|
||||||
@@ -1466,6 +1516,46 @@ nft_list_all_traffic_from_ip() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nft_add_set_elements_from_file_chunked() {
|
||||||
|
local filepath="$1"
|
||||||
|
local nft_table_name="$2"
|
||||||
|
local nft_set_name="$3"
|
||||||
|
local chunk_size="${4:-5000}"
|
||||||
|
|
||||||
|
local array count
|
||||||
|
count=0
|
||||||
|
while IFS= read -r line; do
|
||||||
|
line=$(echo "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
||||||
|
|
||||||
|
[ -z "$line" ] && continue
|
||||||
|
|
||||||
|
if ! is_ipv4 "$line" && ! is_ipv4_cidr "$line"; then
|
||||||
|
log "'$line' is not IPv4 or IPv4 CIDR" "debug"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$array" ]; then
|
||||||
|
array="$line"
|
||||||
|
else
|
||||||
|
array="$array,$line"
|
||||||
|
fi
|
||||||
|
|
||||||
|
count=$((count + 1))
|
||||||
|
|
||||||
|
if [ "$count" = "$chunk_size" ]; then
|
||||||
|
log "Adding $count elements to nft set $nft_set_name" "debug"
|
||||||
|
nft_add_set_elements "$nft_table_name" "$nft_set_name" "$array"
|
||||||
|
array=""
|
||||||
|
count=0
|
||||||
|
fi
|
||||||
|
done < "$filepath"
|
||||||
|
|
||||||
|
if [ -n "$array" ]; then
|
||||||
|
log "Adding $count elements to nft set $nft_set_name" "debug"
|
||||||
|
nft_add_set_elements "$nft_table_name" "$nft_set_name" "$array"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Diagnotics
|
# Diagnotics
|
||||||
check_proxy() {
|
check_proxy() {
|
||||||
local sing_box_config_path
|
local sing_box_config_path
|
||||||
@@ -1626,7 +1716,7 @@ check_logs() {
|
|||||||
nolog "Logs not found"
|
nolog "Logs not found"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
ы
|
|
||||||
# Find the last occurrence of "Starting podkop"
|
# Find the last occurrence of "Starting podkop"
|
||||||
local start_line
|
local start_line
|
||||||
start_line=$(echo "$logs" | grep -n "podkop.*Starting podkop" | tail -n 1 | cut -d: -f1)
|
start_line=$(echo "$logs" | grep -n "podkop.*Starting podkop" | tail -n 1 | cut -d: -f1)
|
||||||
@@ -1688,6 +1778,7 @@ show_config() {
|
|||||||
-e 's/\(list urltest_proxy_links\).*/\1 '\''MASKED'\''/g' \
|
-e 's/\(list urltest_proxy_links\).*/\1 '\''MASKED'\''/g' \
|
||||||
-e "s@\\(option dns_server '[^/]*\\)/[^']*'@\\1/MASKED'@g" \
|
-e "s@\\(option dns_server '[^/]*\\)/[^']*'@\\1/MASKED'@g" \
|
||||||
-e "s@\\(option domain_resolver_dns_server '[^/]*\\)/[^']*'@\\1/MASKED'@g" \
|
-e "s@\\(option domain_resolver_dns_server '[^/]*\\)/[^']*'@\\1/MASKED'@g" \
|
||||||
|
-e 's/\(option yacd_secret_key\).*/\1 '\''MASKED'\''/g' \
|
||||||
"$PODKOP_CONFIG" > "$tmp_config"
|
"$PODKOP_CONFIG" > "$tmp_config"
|
||||||
|
|
||||||
cat "$tmp_config"
|
cat "$tmp_config"
|
||||||
@@ -2067,13 +2158,28 @@ check_fakeip() {
|
|||||||
#######################################
|
#######################################
|
||||||
|
|
||||||
clash_api() {
|
clash_api() {
|
||||||
local CLASH_URL="127.0.0.1:9090"
|
|
||||||
local TEST_URL="https://www.gstatic.com/generate_204"
|
|
||||||
local action="$1"
|
local action="$1"
|
||||||
|
local clash_api_controller_address CLASH_URL TEST_URL
|
||||||
|
clash_api_controller_address="$(get_service_listen_address)"
|
||||||
|
if [ -z "$clash_api_controller_address" ]; then
|
||||||
|
clash_api_controller_address="127.0.0.1"
|
||||||
|
fi
|
||||||
|
CLASH_URL="$clash_api_controller_address:$SB_CLASH_API_CONTROLLER_PORT"
|
||||||
|
TEST_URL="https://www.gstatic.com/generate_204"
|
||||||
|
|
||||||
|
local enable_yacd_wan_access yacd_secret_key auth_header
|
||||||
|
config_get_bool enable_yacd_wan_access "settings" "enable_yacd_wan_access" 0
|
||||||
|
config_get yacd_secret_key "settings" "yacd_secret_key"
|
||||||
|
|
||||||
|
if [ "$enable_yacd_wan_access" -eq 1 ]; then
|
||||||
|
auth_header="Authorization: Bearer $yacd_secret_key"
|
||||||
|
else
|
||||||
|
auth_header=""
|
||||||
|
fi
|
||||||
|
|
||||||
case "$action" in
|
case "$action" in
|
||||||
get_proxies)
|
get_proxies)
|
||||||
curl -s "$CLASH_URL/proxies" | jq .
|
curl -s --header "$auth_header" "$CLASH_URL/proxies" | jq .
|
||||||
;;
|
;;
|
||||||
|
|
||||||
get_proxy_latency)
|
get_proxy_latency)
|
||||||
@@ -2086,6 +2192,7 @@ clash_api() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
curl -G -s "$CLASH_URL/proxies/$proxy_tag/delay" \
|
curl -G -s "$CLASH_URL/proxies/$proxy_tag/delay" \
|
||||||
|
--header "$auth_header" \
|
||||||
--data-urlencode "url=$TEST_URL" \
|
--data-urlencode "url=$TEST_URL" \
|
||||||
--data-urlencode "timeout=$timeout" | jq .
|
--data-urlencode "timeout=$timeout" | jq .
|
||||||
;;
|
;;
|
||||||
@@ -2100,6 +2207,7 @@ clash_api() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
curl -G -s "$CLASH_URL/group/$group_tag/delay" \
|
curl -G -s "$CLASH_URL/group/$group_tag/delay" \
|
||||||
|
--header "$auth_header" \
|
||||||
--data-urlencode "url=$TEST_URL" \
|
--data-urlencode "url=$TEST_URL" \
|
||||||
--data-urlencode "timeout=$timeout" | jq .
|
--data-urlencode "timeout=$timeout" | jq .
|
||||||
;;
|
;;
|
||||||
@@ -2114,8 +2222,11 @@ clash_api() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local response
|
local response
|
||||||
response=$(curl -X PUT -s -w "\n%{http_code}" "$CLASH_URL/proxies/$group_tag" \
|
response=$(
|
||||||
--data-raw "{\"name\":\"$proxy_tag\"}")
|
curl -X PUT -s -w "\n%{http_code}" "$CLASH_URL/proxies/$group_tag" \
|
||||||
|
--header "$auth_header" \
|
||||||
|
--data-raw "{\"name\":\"$proxy_tag\"}"
|
||||||
|
)
|
||||||
|
|
||||||
local http_code
|
local http_code
|
||||||
local body
|
local body
|
||||||
@@ -2273,9 +2384,9 @@ global_check() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$sing_box_version_ok" -eq 1 ]; then
|
if [ "$sing_box_version_ok" -eq 1 ]; then
|
||||||
print_global "✅ Sing-box version >= 1.12.4"
|
print_global "✅ Sing-box version is compatible (newer than 1.12.4)"
|
||||||
else
|
else
|
||||||
print_global "❌ Sing-box version >= 1.12.4"
|
print_global "❌ Sing-box version is not compatible (older than 1.12.4)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$sing_box_service_exist" -eq 1 ]; then
|
if [ "$sing_box_service_exist" -eq 1 ]; then
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ SB_TPROXY_INBOUND_PORT=1602
|
|||||||
SB_DNS_INBOUND_TAG="dns-in"
|
SB_DNS_INBOUND_TAG="dns-in"
|
||||||
SB_DNS_INBOUND_ADDRESS="127.0.0.42"
|
SB_DNS_INBOUND_ADDRESS="127.0.0.42"
|
||||||
SB_DNS_INBOUND_PORT=53
|
SB_DNS_INBOUND_PORT=53
|
||||||
SB_MIXED_INBOUND_ADDRESS="0.0.0.0" # TODO(ampetelin): maybe to determine address?
|
|
||||||
SB_SERVICE_MIXED_INBOUND_TAG="service-mixed-in"
|
SB_SERVICE_MIXED_INBOUND_TAG="service-mixed-in"
|
||||||
SB_SERVICE_MIXED_INBOUND_ADDRESS="127.0.0.1"
|
SB_SERVICE_MIXED_INBOUND_ADDRESS="127.0.0.1"
|
||||||
SB_SERVICE_MIXED_INBOUND_PORT=4534
|
SB_SERVICE_MIXED_INBOUND_PORT=4534
|
||||||
@@ -47,7 +46,7 @@ SB_DIRECT_OUTBOUND_TAG="direct-out"
|
|||||||
# Route
|
# Route
|
||||||
SB_REJECT_RULE_TAG="reject-rule-tag"
|
SB_REJECT_RULE_TAG="reject-rule-tag"
|
||||||
# Experimental
|
# Experimental
|
||||||
SB_CLASH_API_CONTROLLER="0.0.0.0:9090"
|
SB_CLASH_API_CONTROLLER_PORT=9090
|
||||||
|
|
||||||
## Lists
|
## Lists
|
||||||
GITHUB_RAW_URL="https://raw.githubusercontent.com/itdoginfo/allow-domains/main"
|
GITHUB_RAW_URL="https://raw.githubusercontent.com/itdoginfo/allow-domains/main"
|
||||||
|
|||||||
@@ -268,25 +268,6 @@ migration_rename_config_key() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Download URL content directly
|
|
||||||
download_to_stream() {
|
|
||||||
local url="$1"
|
|
||||||
local http_proxy_address="$2"
|
|
||||||
local retries="${3:-3}"
|
|
||||||
local wait="${4:-2}"
|
|
||||||
|
|
||||||
for attempt in $(seq 1 "$retries"); do
|
|
||||||
if [ -n "$http_proxy_address" ]; then
|
|
||||||
http_proxy="http://$http_proxy_address" https_proxy="http://$http_proxy_address" wget -qO- "$url" | sed 's/\r$//' && break
|
|
||||||
else
|
|
||||||
wget -qO- "$url" | sed 's/\r$//' && break
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "Attempt $attempt/$retries to download $url failed" "warn"
|
|
||||||
sleep "$wait"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Download URL to file
|
# Download URL to file
|
||||||
download_to_file() {
|
download_to_file() {
|
||||||
local url="$1"
|
local url="$1"
|
||||||
@@ -305,10 +286,17 @@ download_to_file() {
|
|||||||
log "Attempt $attempt/$retries to download $url failed" "warn"
|
log "Attempt $attempt/$retries to download $url failed" "warn"
|
||||||
sleep "$wait"
|
sleep "$wait"
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Converts Windows-style line endings (CRLF) to Unix-style (LF)
|
||||||
|
convert_crlf_to_lf() {
|
||||||
|
local filepath="$1"
|
||||||
|
|
||||||
if grep -q $'\r' "$filepath"; then
|
if grep -q $'\r' "$filepath"; then
|
||||||
log "Downloaded file has Windows line endings (CRLF). Converting to Unix (LF)"
|
log "File '$filepath' contains CRLF line endings. Converting to LF..." "debug"
|
||||||
sed -i 's/\r$//' "$filepath"
|
local tmpfile
|
||||||
|
tmpfile=$(mktemp)
|
||||||
|
tr -d '\r' < "$filepath" > "$tmpfile" && mv "$tmpfile" "$filepath" || rm -f "$tmpfile"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -400,3 +388,17 @@ parse_domain_or_subnet_file_to_comma_string() {
|
|||||||
|
|
||||||
echo "$result"
|
echo "$result"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Extracts all ip_cidr entries from a JSON ruleset file and writes them to an output file.
|
||||||
|
extract_ip_cidr_from_json_ruleset_to_file() {
|
||||||
|
local json_file="$1"
|
||||||
|
local output_file="$2"
|
||||||
|
|
||||||
|
if [ ! -f "$json_file" ]; then
|
||||||
|
log "JSON file not found: $json_file" "error"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Extracting ip_cidr entries from $json_file to $output_file" "debug"
|
||||||
|
jq -r '.rules[].ip_cidr[]' "$json_file" > "$output_file"
|
||||||
|
}
|
||||||
@@ -1339,9 +1339,10 @@ sing_box_cm_configure_cache_file() {
|
|||||||
#######################################
|
#######################################
|
||||||
# Configure the experimental clash_api section of a sing-box JSON configuration.
|
# Configure the experimental clash_api section of a sing-box JSON configuration.
|
||||||
# Arguments:
|
# Arguments:
|
||||||
# config: JSON configuration (string)
|
# config: string, JSON configuration
|
||||||
# external_controller: API listening address; Clash API will be disabled if empty
|
# external_controller: string, API listening address; Clash API will be disabled if empty
|
||||||
# external_ui: Optional path to static web resources to serve at http://{{external-controller}}/ui
|
# external_ui: string, Optional path to static web resources to serve at http://{{external-controller}}/ui
|
||||||
|
# secret: string, Optional secret for the RESTful API Authenticate by specifying HTTP header
|
||||||
# Outputs:
|
# Outputs:
|
||||||
# Writes updated JSON configuration to stdout
|
# Writes updated JSON configuration to stdout
|
||||||
# Example:
|
# Example:
|
||||||
@@ -1351,14 +1352,17 @@ sing_box_cm_configure_clash_api() {
|
|||||||
local config="$1"
|
local config="$1"
|
||||||
local external_controller="$2"
|
local external_controller="$2"
|
||||||
local external_ui="$3"
|
local external_ui="$3"
|
||||||
|
local secret="$4"
|
||||||
|
|
||||||
echo "$config" | jq \
|
echo "$config" | jq \
|
||||||
--arg external_controller "$external_controller" \
|
--arg external_controller "$external_controller" \
|
||||||
--arg external_ui "$external_ui" \
|
--arg external_ui "$external_ui" \
|
||||||
|
--arg secret "$secret" \
|
||||||
'.experimental.clash_api = {
|
'.experimental.clash_api = {
|
||||||
external_controller: $external_controller,
|
external_controller: $external_controller,
|
||||||
}
|
}
|
||||||
+ (if $external_ui != "" then { external_ui: $external_ui } else {} end)'
|
+ (if $external_ui != "" then { external_ui: $external_ui } else {} end)
|
||||||
|
+ (if $secret != "" then { secret: $secret } else {} end)'
|
||||||
}
|
}
|
||||||
|
|
||||||
#######################################
|
#######################################
|
||||||
|
|||||||
Reference in New Issue
Block a user