ui: improve update and server dialogs

This commit is contained in:
ushan0v
2026-05-29 21:59:08 +03:00
parent 3a40615cc5
commit 3652a522d1
17 changed files with 1275 additions and 739 deletions
+1
View File
@@ -1,5 +1,6 @@
.idea
fe-app-podkop/node_modules
fe-app-podkop/.yarn/
fe-app-podkop/.env
.DS_Store
File diff suppressed because it is too large Load Diff
+164 -166
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-29 02:03+0300\n"
"PO-Revision-Date: 2026-05-29 02:03+0300\n"
"POT-Creation-Date: 2026-05-29 18:05+0300\n"
"PO-Revision-Date: 2026-05-29 18:05+0300\n"
"Last-Translator: ushan0v <ushanov2204@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
@@ -31,21 +31,20 @@ msgstr ""
msgid "✘ Stopped"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2372
msgid "Accept routes"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:130
msgid "Accept external proxy connections and route them with sing-box."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2376
msgid "Accept routes"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2492
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2524
msgid "Action"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1248
#: src/podkop/tabs/monitoring/initController.ts:501
#: src/podkop/tabs/monitoring/initController.ts:555
#: src/podkop/tabs/monitoring/render.ts:20
msgid "Active"
msgstr ""
@@ -58,7 +57,7 @@ msgstr ""
msgid "Add a section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:135
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:136
msgid "Add a server inbound"
msgstr ""
@@ -78,15 +77,19 @@ msgstr ""
msgid "Additional marking rules found"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2355
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1273
msgid "Address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2359
msgid "Advertise exit node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2365
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2369
msgid "Advertise routes"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:464
#: src/podkop/tabs/monitoring/initController.ts:518
#: src/podkop/tabs/monitoring/render.ts:39
msgid "All"
msgstr ""
@@ -107,11 +110,11 @@ msgstr ""
msgid "Allows limiting the list of servers for URLTest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2051
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2055
msgid "ALPN"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2260
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2264
msgid "Alter ID"
msgstr ""
@@ -240,15 +243,15 @@ msgstr ""
msgid "Cannot receive checks result"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1737
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1741
msgid "Cannot save server"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2061
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2065
msgid "Certificate path"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:306
#: src/podkop/tabs/updates/initController.ts:324
msgid "Check update"
msgstr ""
@@ -290,27 +293,26 @@ msgstr ""
msgid "CIDR must be between 0 and 32"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2159
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2163
msgid "Client fingerprint"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1293
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1290
msgid "Client link"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1277
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1210
msgid "Client link is not available yet"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1283
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1289
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1231
msgid "Client link QR code"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1339
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1335
#: src/partials/modal/renderModal.ts:195
#: src/podkop/tabs/monitoring/initController.ts:645
#: src/podkop/tabs/monitoring/initController.ts:695
#: src/podkop/tabs/monitoring/initController.ts:699
#: src/podkop/tabs/monitoring/initController.ts:749
msgid "Close"
msgstr ""
@@ -319,12 +321,12 @@ msgstr ""
msgid "Close all connections"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:612
#: src/podkop/tabs/monitoring/initController.ts:613
#: src/podkop/tabs/monitoring/initController.ts:666
#: src/podkop/tabs/monitoring/initController.ts:667
msgid "Close connection"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:507
#: src/podkop/tabs/monitoring/initController.ts:561
#: src/podkop/tabs/monitoring/render.ts:29
msgid "Closed"
msgstr ""
@@ -341,19 +343,15 @@ msgstr ""
msgid "Configuration for Podkop Plus service"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1262
msgid "Connection statistics are unavailable"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2619
msgid "Connection URL"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:748
#: src/podkop/tabs/monitoring/initController.ts:802
msgid "Connections are unavailable"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1314
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1313
#: src/partials/modal/renderModal.ts:190
msgid "Copy"
msgstr ""
@@ -367,7 +365,7 @@ msgstr ""
msgid "Currently unavailable"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:167
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:168
msgid "Dashboard"
msgstr ""
@@ -383,7 +381,7 @@ msgstr ""
msgid "Delay value cannot be empty"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1355
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1351
msgid "Delete"
msgstr ""
@@ -391,7 +389,7 @@ msgstr ""
msgid "Detect server country"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:61
#: src/podkop/tabs/updates/initController.ts:62
msgid "Dev"
msgstr ""
@@ -404,12 +402,11 @@ msgstr ""
msgid "DHCP has DNS server"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:155
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:156
msgid "Diagnostics"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1984
#: src/podkop/tabs/monitoring/initController.ts:119
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1988
msgid "Direct"
msgstr ""
@@ -496,7 +493,6 @@ msgstr ""
msgid "Downlink"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1250
#: src/partials/modal/renderModal.ts:185
msgid "Download"
msgstr ""
@@ -513,8 +509,8 @@ msgstr ""
msgid "Download lists/updates/subscriptions via Proxy/VPN"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:638
#: src/podkop/tabs/monitoring/initController.ts:692
#: src/podkop/tabs/monitoring/initController.ts:746
msgid "Downloaded"
msgstr ""
@@ -529,12 +525,12 @@ msgid "Duplicate value"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:68
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1348
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1344
msgid "Edit rule action"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2482
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1900
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1904
msgid "Enable"
msgstr ""
@@ -622,24 +618,25 @@ msgstr ""
msgid "External nfqws config files bypass Podkop Plus queue management and explicit validation."
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:1010
#: src/podkop/tabs/monitoring/initController.ts:1025
#: src/podkop/tabs/monitoring/initController.ts:1064
#: src/podkop/tabs/monitoring/initController.ts:1079
msgid "Failed to close connection"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:1044
#: src/podkop/tabs/monitoring/initController.ts:1057
#: src/podkop/tabs/monitoring/initController.ts:1098
#: src/podkop/tabs/monitoring/initController.ts:1111
msgid "Failed to close connections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1199
#: src/helpers/copyToClipboard.ts:12
msgid "Failed to copy!"
msgstr ""
#: src/podkop/methods/shell/index.ts:97
#: src/podkop/methods/shell/index.ts:273
#: src/podkop/tabs/updates/initController.ts:241
#: src/podkop/tabs/updates/initController.ts:285
#: src/podkop/tabs/updates/initController.ts:254
#: src/podkop/tabs/updates/initController.ts:303
msgid "Failed to execute"
msgstr ""
@@ -648,12 +645,12 @@ msgstr ""
msgid "Failed to update subscriptions"
msgstr ""
#: src/podkop/methods/custom/getDashboardSections.ts:259
#: src/podkop/methods/custom/getDashboardSections.ts:307
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:93
msgid "Fastest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1738
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1742
msgid "Fix the highlighted fields and save again."
msgstr ""
@@ -665,11 +662,15 @@ msgstr ""
msgid "Get global check"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:490
msgid "GitHub release"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:415
msgid "Global check"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2211
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2215
msgid "gRPC service"
msgstr ""
@@ -677,8 +678,8 @@ msgstr ""
msgid "Hide filtered servers"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:628
#: src/podkop/tabs/monitoring/initController.ts:688
#: src/podkop/tabs/monitoring/initController.ts:682
#: src/podkop/tabs/monitoring/initController.ts:742
msgid "Host"
msgstr ""
@@ -686,7 +687,7 @@ msgstr ""
msgid "HTTP error"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2204
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2208
msgid "HTTP hosts"
msgstr ""
@@ -702,29 +703,29 @@ msgstr ""
msgid "Include server in URLTest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1356
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1352
msgid "Information"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:77
#: src/podkop/tabs/updates/initController.ts:381
#: src/podkop/tabs/updates/initController.ts:410
#: src/podkop/tabs/updates/initController.ts:78
#: src/podkop/tabs/updates/initController.ts:402
#: src/podkop/tabs/updates/initController.ts:432
msgid "Install"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:74
#: src/podkop/tabs/updates/initController.ts:75
msgid "Install %s"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:329
#: src/podkop/tabs/updates/initController.ts:347
msgid "Install extended"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:322
#: src/podkop/tabs/updates/initController.ts:340
msgid "Install stable"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:137
#: src/podkop/tabs/updates/initController.ts:150
msgid "Installed version is newer than release"
msgstr ""
@@ -757,11 +758,11 @@ msgstr ""
msgid "Invalid format. Use X.X.X.X or X.X.X.X/Y"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:76
#: src/validators/validateHysteriaUrl.ts:107
msgid "Invalid HY2 URL: insecure must be 0 or 1"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:62
#: src/validators/validateHysteriaUrl.ts:93
msgid "Invalid HY2 URL: invalid port number"
msgstr ""
@@ -793,19 +794,19 @@ msgstr ""
msgid "Invalid HY2 URL: must start with hysteria2:// or hy2://"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:99
#: src/validators/validateHysteriaUrl.ts:130
msgid "Invalid HY2 URL: obfs-password required when obfs is set"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:115
#: src/validators/validateHysteriaUrl.ts:146
msgid "Invalid HY2 URL: parsing failed"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:108
#: src/validators/validateHysteriaUrl.ts:139
msgid "Invalid HY2 URL: sni cannot be empty"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:88
#: src/validators/validateHysteriaUrl.ts:119
msgid "Invalid HY2 URL: unsupported obfs type"
msgstr ""
@@ -948,7 +949,7 @@ msgstr ""
msgid "JSON outbound"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2076
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2080
msgid "Key path"
msgstr ""
@@ -956,11 +957,11 @@ msgstr ""
msgid "Keyword must not contain spaces"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:54
#: src/podkop/tabs/updates/initController.ts:55
msgid "Latest"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:140
#: src/podkop/tabs/updates/initController.ts:153
msgid "Latest version is installed"
msgstr ""
@@ -972,16 +973,15 @@ msgstr ""
msgid "List Update Frequency"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1956
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1960
msgid "Listen address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1963
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1967
msgid "Listen port"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1255
#: src/podkop/tabs/monitoring/initController.ts:738
#: src/podkop/tabs/monitoring/initController.ts:792
#: src/podkop/tabs/monitoring/render.ts:88
msgid "Loading connections"
msgstr ""
@@ -1030,7 +1030,7 @@ msgstr ""
msgid "Memory Usage"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2218
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2222
msgid "Method"
msgstr ""
@@ -1050,7 +1050,7 @@ msgstr ""
msgid "Monitored Interfaces"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:179
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:180
msgid "Monitoring"
msgstr ""
@@ -1078,11 +1078,11 @@ msgstr ""
msgid "NFQWS strategy cannot be empty"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:762
#: src/podkop/tabs/monitoring/initController.ts:816
msgid "No active connections"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:763
#: src/podkop/tabs/monitoring/initController.ts:817
msgid "No closed connections"
msgstr ""
@@ -1099,9 +1099,9 @@ msgid "No rules use Zapret"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:427
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2006
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2273
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2282
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2010
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2277
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2286
msgid "None"
msgstr ""
@@ -1109,9 +1109,9 @@ msgstr ""
msgid "Not implement yet"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:347
#: src/podkop/tabs/updates/initController.ts:365
#: src/podkop/tabs/updates/initController.ts:394
#: src/podkop/tabs/updates/initController.ts:366
#: src/podkop/tabs/updates/initController.ts:385
#: src/podkop/tabs/updates/initController.ts:415
msgid "Not installed"
msgstr ""
@@ -1128,11 +1128,11 @@ msgstr ""
msgid "Not running"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2281
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2285
msgid "Obfuscation"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2304
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2308
msgid "Obfuscation password"
msgstr ""
@@ -1177,7 +1177,7 @@ msgstr ""
msgid "Outbound JSON cannot be empty"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:58
#: src/podkop/tabs/updates/initController.ts:59
msgid "Outdated"
msgstr ""
@@ -1185,7 +1185,7 @@ msgstr ""
msgid "Output Network Interface"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2244
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2248
msgid "Password"
msgstr ""
@@ -1209,7 +1209,7 @@ msgstr ""
msgid "Path must end with cache.db"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:520
#: src/podkop/tabs/monitoring/initController.ts:574
#: src/podkop/tabs/monitoring/render.ts:70
#: src/podkop/tabs/monitoring/render.ts:71
msgid "Pause updates"
@@ -1239,7 +1239,7 @@ msgstr ""
msgid "Podkop Plus manages the nfqws process lifecycle itself, so daemon mode is not allowed here."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1983
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1987
msgid "Podkop Plus rules"
msgstr ""
@@ -1288,7 +1288,7 @@ msgid "Port for the local mixed proxy of this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1336
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1416
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1420
msgid "Port must be between 1 and 65535"
msgstr ""
@@ -1300,8 +1300,8 @@ msgstr ""
msgid "Ports"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1906
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1940
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1910
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1944
msgid "Protocol"
msgstr ""
@@ -1317,39 +1317,39 @@ msgstr ""
msgid "Proxy traffic is routed via FakeIP"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1970
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1974
msgid "Public host"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1291
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1233
msgid "QR code is too large"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2094
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2098
msgid "Reality fake site"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2105
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2109
msgid "Reality fake site port"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2148
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2152
msgid "Reality max time difference"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2116
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2120
msgid "Reality private key"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2123
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2127
msgid "Reality public key"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2129
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2133
msgid "Reality short ID"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1604
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1608
msgid "Reality short ID must contain 1-8 hex digits"
msgstr ""
@@ -1361,8 +1361,8 @@ msgstr ""
msgid "Regional options cannot be used together"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:372
#: src/podkop/tabs/updates/initController.ts:401
#: src/podkop/tabs/updates/initController.ts:393
#: src/podkop/tabs/updates/initController.ts:423
msgid "Remove"
msgstr ""
@@ -1394,12 +1394,12 @@ msgstr ""
msgid "Restart Podkop Plus"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:520
#: src/podkop/tabs/monitoring/initController.ts:574
msgid "Resume updates"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:632
#: src/podkop/tabs/monitoring/initController.ts:690
#: src/podkop/tabs/monitoring/initController.ts:686
#: src/podkop/tabs/monitoring/initController.ts:744
msgid "Route"
msgstr ""
@@ -1407,11 +1407,11 @@ msgstr ""
msgid "Routing Excluded IPs"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1982
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1986
msgid "Routing mode"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1991
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1995
msgid "Routing section"
msgstr ""
@@ -1479,7 +1479,7 @@ msgstr ""
msgid "Sections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2003
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2007
msgid "Security"
msgstr ""
@@ -1539,11 +1539,11 @@ msgstr ""
msgid "Select the WAN interfaces to be monitored"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1985
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1989
msgid "Selected section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:134
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:135
msgid "Server"
msgstr ""
@@ -1551,15 +1551,16 @@ msgstr ""
msgid "Server filtering for URLTest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1328
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1322
msgid "Server information"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1917
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1243
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1921
msgid "Server name"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2032
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2036
msgid "Server name / SNI"
msgstr ""
@@ -1583,7 +1584,7 @@ msgstr ""
msgid "Services info"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:143
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:144
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2479
msgid "Settings"
msgstr ""
@@ -1629,8 +1630,8 @@ msgstr ""
msgid "Sing-box version is compatible (newer than 1.12.4)"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:644
#: src/podkop/tabs/monitoring/initController.ts:694
#: src/podkop/tabs/monitoring/initController.ts:698
#: src/podkop/tabs/monitoring/initController.ts:748
msgid "Source"
msgstr ""
@@ -1642,12 +1643,12 @@ msgstr ""
msgid "Source Network Interface"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1497
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1501
msgid "Specify a file path"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1508
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1520
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1512
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1524
msgid "Specify different files"
msgstr ""
@@ -1719,6 +1720,7 @@ msgstr ""
msgid "Subscription URL cannot be empty"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1197
#: src/helpers/copyToClipboard.ts:10
msgid "Successfully copied!"
msgstr ""
@@ -1735,15 +1737,15 @@ msgstr ""
msgid "Table exist"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2320
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2324
msgid "Tailscale auth key"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2329
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2333
msgid "Tailscale control URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2337
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2341
msgid "Tailscale hostname"
msgstr ""
@@ -1772,11 +1774,11 @@ msgstr ""
msgid "There are rules using Zapret"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1431
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1436
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1491
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1595
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2267
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1435
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1440
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1495
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1599
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2271
msgid "This field is required"
msgstr ""
@@ -1800,8 +1802,8 @@ msgstr ""
msgid "This option requires a value."
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:635
#: src/podkop/tabs/monitoring/initController.ts:691
#: src/podkop/tabs/monitoring/initController.ts:689
#: src/podkop/tabs/monitoring/initController.ts:745
msgid "Time"
msgstr ""
@@ -1809,7 +1811,6 @@ msgstr ""
msgid "Time in seconds for DNS record caching (default: 60)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1268
#: src/podkop/tabs/dashboard/initController.ts:474
#: src/podkop/tabs/dashboard/partials/renderSections.ts:216
msgid "Traffic"
@@ -1823,19 +1824,19 @@ msgstr ""
msgid "Transparent proxy mode is incompatible with action=byedpi because Podkop Plus connects to ciadpi through SOCKS."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2170
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2174
msgid "Transport"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2194
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2198
msgid "Transport host"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2181
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2185
msgid "Transport path"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1549
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1553
msgid "Transport path must start with /"
msgstr ""
@@ -1851,8 +1852,9 @@ msgstr ""
msgid "TTL value cannot be empty"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:629
#: src/podkop/tabs/monitoring/initController.ts:689
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1258
#: src/podkop/tabs/monitoring/initController.ts:683
#: src/podkop/tabs/monitoring/initController.ts:743
msgid "Type"
msgstr ""
@@ -1901,7 +1903,7 @@ msgstr ""
#: src/podkop/services/systemInfo.service.ts:16
#: src/podkop/services/systemInfo.service.ts:18
#: src/podkop/services/systemInfo.service.ts:19
#: src/podkop/tabs/updates/initController.ts:174
#: src/podkop/tabs/updates/initController.ts:187
msgid "unknown"
msgstr ""
@@ -1923,11 +1925,11 @@ msgstr ""
msgid "Unknown NFQWS flag."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1616
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1620
msgid "Unsupported security mode for this protocol"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:133
#: src/podkop/tabs/updates/initController.ts:146
msgid "Update is available"
msgstr ""
@@ -1936,7 +1938,7 @@ msgstr ""
msgid "Update subscriptions"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:191
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:192
msgid "Updates"
msgstr ""
@@ -1945,12 +1947,8 @@ msgstr ""
msgid "Uplink"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1249
msgid "Upload"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:641
#: src/podkop/tabs/monitoring/initController.ts:693
#: src/podkop/tabs/monitoring/initController.ts:695
#: src/podkop/tabs/monitoring/initController.ts:747
msgid "Uploaded"
msgstr ""
@@ -1974,30 +1972,30 @@ msgstr ""
msgid "URLTest URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1471
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1477
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1558
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1475
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1481
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1562
msgid "Use a domain name or IPv4 address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1543
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1547
msgid "Use a duration like 30s, 5m, or 1h30m"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2269
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2273
msgid "Use a non-negative integer"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1530
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1532
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1534
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1536
msgid "Use an HTTP or HTTPS URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1484
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1488
msgid "Use an IPv4 listen address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1590
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1594
msgid "Use CIDR prefixes like 192.168.1.0/24"
msgstr ""
@@ -2006,7 +2004,7 @@ msgstr ""
msgid "Use format: URL | User-Agent"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1564
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1568
msgid "Use letters, digits, dots, underscores, or hyphens"
msgstr ""
@@ -2021,7 +2019,7 @@ msgstr ""
msgid "Use sing-box duration format like 1d, 12h or 30m"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2228
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2232
msgid "Username"
msgstr ""
@@ -2033,7 +2031,7 @@ msgstr ""
#: src/validators/validateDns.ts:18
#: src/validators/validateDomain.ts:13
#: src/validators/validateDomain.ts:30
#: src/validators/validateHysteriaUrl.ts:113
#: src/validators/validateHysteriaUrl.ts:144
#: src/validators/validateIp.ts:8
#: src/validators/validateOutboundJson.ts:7
#: src/validators/validatePath.ts:16
@@ -2052,11 +2050,11 @@ msgstr ""
msgid "Validation errors:"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1440
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1444
msgid "Value must not contain control characters"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:467
#: src/podkop/tabs/updates/initController.ts:515
msgid "Version"
msgstr ""
@@ -2069,7 +2067,7 @@ msgstr ""
msgid "Visible name of this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2272
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2276
msgid "VLESS flow"
msgstr ""
+14 -14
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-29 05:03+0300\n"
"PO-Revision-Date: 2026-05-29 05:03+0300\n"
"POT-Creation-Date: 2026-05-29 21:05+0300\n"
"PO-Revision-Date: 2026-05-29 21:05+0300\n"
"Last-Translator: ushan0v\n"
"Language-Team: none\n"
"Language: ru\n"
@@ -26,12 +26,12 @@ msgstr "✔ Работает"
msgid "✘ Stopped"
msgstr "✘ Остановлен"
msgid "Accept routes"
msgstr "Принимать маршруты"
msgid "Accept external proxy connections and route them with sing-box."
msgstr "Принимает внешние прокси-подключения и маршрутизирует их через sing-box."
msgid "Accept routes"
msgstr "Принимать маршруты"
msgid "Action"
msgstr "Действие"
@@ -59,6 +59,9 @@ msgstr "Добавляйте URL или локальные пути к спис
msgid "Additional marking rules found"
msgstr "Найдены дополнительные правила маркировки"
msgid "Address"
msgstr "Адрес"
msgid "Advertise exit node"
msgstr "Анонсировать exit node"
@@ -201,7 +204,7 @@ msgid "CIDR must be between 0 and 32"
msgstr "CIDR должен быть между 0 и 32"
msgid "Client fingerprint"
msgstr "Client fingerprint"
msgstr "Отпечаток клиента"
msgid "Client link"
msgstr "Ссылка клиента"
@@ -233,9 +236,6 @@ msgstr "Путь к файлу конфигурации"
msgid "Configuration for Podkop Plus service"
msgstr "Настройки сервиса Podkop Plus"
msgid "Connection statistics are unavailable"
msgstr "Статистика подключений недоступна"
msgid "Connection URL"
msgstr "URL подключения"
@@ -264,7 +264,7 @@ msgid "Delay value cannot be empty"
msgstr "Значение задержки не может быть пустым"
msgid "Delete"
msgstr ""
msgstr "Удалить"
msgid "Detect server country"
msgstr "Определять страну сервера"
@@ -461,6 +461,9 @@ msgstr "Полностью маршрутизированные IP-адреса"
msgid "Get global check"
msgstr "Получить глобальную проверку"
msgid "GitHub release"
msgstr "Релиз на GitHub"
msgid "Global check"
msgstr "Глобальная проверка"
@@ -1110,7 +1113,7 @@ msgid "Server name"
msgstr "Имя сервера"
msgid "Server name / SNI"
msgstr "Server name / SNI"
msgstr "Имя сервера / SNI"
msgid "Servers"
msgstr "Серверы"
@@ -1379,9 +1382,6 @@ msgstr "Обновления"
msgid "Uplink"
msgstr "Исходящий"
msgid "Upload"
msgstr "Загрузка"
msgid "Uploaded"
msgstr "Отдано"
+1
View File
@@ -18,6 +18,7 @@ export { validateOutboundJson } from './validators/validateOutboundJson';
export { validateProxyUrl } from './validators/validateProxyUrl';
export { parseValueList } from './helpers/parseValueList';
export { injectGlobalStyles } from './helpers/injectGlobalStyles';
export { showToast } from './helpers/showToast';
export { getClashUIUrl } from './helpers/getClashApiUrl';
export { PodkopShellMethods } from './podkop/methods/shell';
export { coreService } from './podkop/services/core.service';
@@ -220,6 +220,7 @@ export interface StoreType {
{
status: 'latest' | 'outdated' | 'dev' | null;
latest_version: string;
release_url: string;
}
>;
}
@@ -124,9 +124,9 @@ export const initialDiagnosticStore: Pick<
byedpiRemove: { loading: false },
},
updatesChecks: {
podkop: { status: null, latest_version: '' },
sing_box: { status: null, latest_version: '' },
zapret: { status: null, latest_version: '' },
byedpi: { status: null, latest_version: '' },
podkop: { status: null, latest_version: '', release_url: '' },
sing_box: { status: null, latest_version: '', release_url: '' },
zapret: { status: null, latest_version: '', release_url: '' },
byedpi: { status: null, latest_version: '', release_url: '' },
},
};
@@ -28,6 +28,7 @@ interface ComponentActionButton {
interface ComponentCard {
title: string;
version: string;
releaseUrl?: string;
tag?: {
label: string;
kind: 'neutral' | 'success' | 'warning';
@@ -77,6 +78,16 @@ function getInstallActionText(component: Podkop.ComponentName) {
return _('Install');
}
function getGitHubReleaseUrl(component: Podkop.ComponentName) {
const checkResult = store.get().updatesChecks[component];
if (!shouldShowInstallAfterCheck(component) || !checkResult.release_url) {
return undefined;
}
return checkResult.release_url;
}
function isAnyActionLoading() {
return Object.values(store.get().updatesActions).some((item) => item.loading);
}
@@ -102,6 +113,7 @@ function setCheckResult(
component: Podkop.ComponentName,
status: UpdateStatus,
latestVersion: string,
releaseUrl: string = '',
) {
const updatesChecks = store.get().updatesChecks;
@@ -111,6 +123,7 @@ function setCheckResult(
[component]: {
status,
latest_version: latestVersion,
release_url: releaseUrl,
},
},
});
@@ -248,7 +261,12 @@ async function handleComponentAction(button: ComponentActionButton) {
const status = result.status || null;
if (status === 'latest' || status === 'outdated' || status === 'dev') {
setCheckResult(button.component, status, result.latest_version || '');
setCheckResult(
button.component,
status,
result.latest_version || '',
result.release_url || '',
);
}
setActionLoading(button.key, false);
@@ -336,6 +354,7 @@ function getComponentCards(): ComponentCard[] {
{
title: 'Podkop Plus',
version: normalizeCompiledVersion(systemInfo.podkop_version),
releaseUrl: getGitHubReleaseUrl('podkop'),
tag: getCheckTag('podkop'),
actions: [
getPrimaryUpdateAction('podkop', 'podkopCheck', 'podkopInstall'),
@@ -346,6 +365,7 @@ function getComponentCards(): ComponentCard[] {
version: isNotInstalled(systemInfo.sing_box_version)
? _('Not installed')
: systemInfo.sing_box_version,
releaseUrl: getGitHubReleaseUrl('sing_box'),
tag: getCheckTag('sing_box'),
actions: [
getPrimaryUpdateAction(
@@ -363,6 +383,7 @@ function getComponentCards(): ComponentCard[] {
: zapretInstalled
? systemInfo.zapret_version
: _('Not installed'),
releaseUrl: getGitHubReleaseUrl('zapret'),
tag: zapretInstalled ? getCheckTag('zapret') : undefined,
actions: zapretInstalled
? [
@@ -392,6 +413,7 @@ function getComponentCards(): ComponentCard[] {
: byedpiInstalled
? systemInfo.byedpi_version
: _('Not installed'),
releaseUrl: getGitHubReleaseUrl('byedpi'),
tag: byedpiInstalled ? getCheckTag('byedpi') : undefined,
actions: byedpiInstalled
? [
@@ -449,9 +471,35 @@ function renderComponentCard(card: ComponentCard) {
const headerChildren: Node[] = [
E('b', { class: 'pdk_updates-page__component__title' }, card.title),
];
const statusChildren: Node[] = [];
if (card.releaseUrl) {
statusChildren.push(
E(
'a',
{
class: 'pdk_updates-page__component__release-link',
href: card.releaseUrl,
target: '_blank',
rel: 'noopener noreferrer',
},
_('GitHub release'),
),
);
}
if (tag) {
headerChildren.push(tag);
statusChildren.push(tag);
}
if (statusChildren.length > 0) {
headerChildren.push(
E(
'div',
{ class: 'pdk_updates-page__component__status' },
statusChildren,
),
);
}
return E('div', { class: 'pdk_updates-page__component' }, [
@@ -50,6 +50,14 @@ export const styles = `
overflow-wrap: anywhere;
}
.pdk_updates-page__component__status {
display: inline-flex;
align-items: center;
justify-content: flex-end;
gap: 6px;
flex: 0 0 auto;
}
.pdk_updates-page__component__version {
display: grid;
grid-template-columns: auto 1fr;
@@ -95,4 +103,11 @@ export const styles = `
.pdk_updates-page__component__actions > .pdk-partial-button {
margin-left: 0;
}
.pdk_updates-page__component__release-link {
font-size: 11px;
line-height: 1.2;
text-align: right;
white-space: nowrap;
}
`;
+1
View File
@@ -301,6 +301,7 @@ export namespace Podkop {
message: string;
current_version: string;
latest_version: string;
release_url?: string;
changed: boolean;
status?: 'latest' | 'outdated' | 'dev' | '';
exit_code?: number | null;
@@ -3062,10 +3062,10 @@ var initialDiagnosticStore = {
byedpiRemove: { loading: false }
},
updatesChecks: {
podkop: { status: null, latest_version: "" },
sing_box: { status: null, latest_version: "" },
zapret: { status: null, latest_version: "" },
byedpi: { status: null, latest_version: "" }
podkop: { status: null, latest_version: "", release_url: "" },
sing_box: { status: null, latest_version: "", release_url: "" },
zapret: { status: null, latest_version: "", release_url: "" },
byedpi: { status: null, latest_version: "", release_url: "" }
}
};
@@ -8553,6 +8553,13 @@ function getInstallActionText(component) {
}
return _("Install");
}
function getGitHubReleaseUrl(component) {
const checkResult = store.get().updatesChecks[component];
if (!shouldShowInstallAfterCheck(component) || !checkResult.release_url) {
return void 0;
}
return checkResult.release_url;
}
function isAnyActionLoading() {
return Object.values(store.get().updatesActions).some((item) => item.loading);
}
@@ -8569,14 +8576,15 @@ function setActionLoading(action, loading2) {
}
});
}
function setCheckResult(component, status, latestVersion) {
function setCheckResult(component, status, latestVersion, releaseUrl = "") {
const updatesChecks = store.get().updatesChecks;
store.set({
updatesChecks: {
...updatesChecks,
[component]: {
status,
latest_version: latestVersion
latest_version: latestVersion,
release_url: releaseUrl
}
}
});
@@ -8683,7 +8691,12 @@ async function handleComponentAction(button) {
if (button.action === "check_update") {
const status = result.status || null;
if (status === "latest" || status === "outdated" || status === "dev") {
setCheckResult(button.component, status, result.latest_version || "");
setCheckResult(
button.component,
status,
result.latest_version || "",
result.release_url || ""
);
}
setActionLoading(button.key, false);
showToast(getCheckToastMessage(status), "success");
@@ -8753,6 +8766,7 @@ function getComponentCards() {
{
title: "Podkop Plus",
version: normalizeCompiledVersion(systemInfo.podkop_version),
releaseUrl: getGitHubReleaseUrl("podkop"),
tag: getCheckTag("podkop"),
actions: [
getPrimaryUpdateAction("podkop", "podkopCheck", "podkopInstall")
@@ -8761,6 +8775,7 @@ function getComponentCards() {
{
title: "Sing-box",
version: isNotInstalled(systemInfo.sing_box_version) ? _("Not installed") : systemInfo.sing_box_version,
releaseUrl: getGitHubReleaseUrl("sing_box"),
tag: getCheckTag("sing_box"),
actions: [
getPrimaryUpdateAction(
@@ -8774,6 +8789,7 @@ function getComponentCards() {
{
title: "Zapret",
version: systemInfoLoading ? "loading" : zapretInstalled ? systemInfo.zapret_version : _("Not installed"),
releaseUrl: getGitHubReleaseUrl("zapret"),
tag: zapretInstalled ? getCheckTag("zapret") : void 0,
actions: zapretInstalled ? [
getPrimaryUpdateAction("zapret", "zapretCheck", "zapretInstall"),
@@ -8797,6 +8813,7 @@ function getComponentCards() {
{
title: "ByeDPI",
version: systemInfoLoading ? "loading" : byedpiInstalled ? systemInfo.byedpi_version : _("Not installed"),
releaseUrl: getGitHubReleaseUrl("byedpi"),
tag: byedpiInstalled ? getCheckTag("byedpi") : void 0,
actions: byedpiInstalled ? [
getPrimaryUpdateAction("byedpi", "byedpiCheck", "byedpiInstall"),
@@ -8843,8 +8860,32 @@ function renderComponentCard(card) {
const headerChildren = [
E("b", { class: "pdk_updates-page__component__title" }, card.title)
];
const statusChildren = [];
if (card.releaseUrl) {
statusChildren.push(
E(
"a",
{
class: "pdk_updates-page__component__release-link",
href: card.releaseUrl,
target: "_blank",
rel: "noopener noreferrer"
},
_("GitHub release")
)
);
}
if (tag) {
headerChildren.push(tag);
statusChildren.push(tag);
}
if (statusChildren.length > 0) {
headerChildren.push(
E(
"div",
{ class: "pdk_updates-page__component__status" },
statusChildren
)
);
}
return E("div", { class: "pdk_updates-page__component" }, [
E(
@@ -8985,6 +9026,14 @@ var styles6 = `
overflow-wrap: anywhere;
}
.pdk_updates-page__component__status {
display: inline-flex;
align-items: center;
justify-content: flex-end;
gap: 6px;
flex: 0 0 auto;
}
.pdk_updates-page__component__version {
display: grid;
grid-template-columns: auto 1fr;
@@ -9030,6 +9079,13 @@ var styles6 = `
.pdk_updates-page__component__actions > .pdk-partial-button {
margin-left: 0;
}
.pdk_updates-page__component__release-link {
font-size: 11px;
line-height: 1.2;
text-align: right;
white-space: nowrap;
}
`;
// src/podkop/tabs/updates/index.ts
@@ -9236,6 +9292,7 @@ return baseclass.extend({
getClashUIUrl,
injectGlobalStyles,
parseValueList,
showToast,
store,
validateDNS,
validateDomain,
@@ -440,18 +440,34 @@ function injectServerStyles() {
.pdk-server-icon-button{box-sizing:border-box;vertical-align:middle}
.pdk-server-icon-button__glyph{display:inline-block;line-height:1;transform:scale(1.55);transform-origin:center}
.pdk-server-icon-button--done{outline:2px solid var(--success-color,#37a969);outline-offset:1px}
.pdk-server-qr-modal{display:flex;justify-content:center;padding:12px}
.pdk-server-qr-modal__image{width:260px;height:260px;max-width:80vw;max-height:80vw;image-rendering:pixelated}
.pdk-server-info-modal{display:flex;flex-direction:column;gap:14px;min-width:min(560px,86vw)}
.pdk-server-info-modal__block{display:flex;flex-direction:column;gap:8px}
.pdk-server-info-modal__link-row{display:flex;gap:8px;align-items:flex-start}
.pdk-server-info-modal__link{min-height:5.2em;resize:vertical}
.pdk-server-validation-summary{margin:0 0 12px}
#cbi-${UCI_PACKAGE}-server > h3:nth-child(1){display:none}
#cbi-${UCI_PACKAGE}-server > .cbi-section-remove{margin-bottom:-32px}
#cbi-${UCI_PACKAGE}-server .cbi-section-actions > div{display:inline-flex;align-items:center;gap:4px}
#cbi-${UCI_PACKAGE}-server .cbi-section-actions{text-align:right}
@media (max-width:720px){.pdk-server-info-modal__link-row{flex-direction:column}.pdk-server-info-modal__link-row .btn{align-self:flex-start}}
.pdk-server-info-modal{display:flex;flex-direction:column;gap:14px;width:560px;max-width:100%;box-sizing:border-box}
.pdk-server-info-modal__container{display:flex;gap:24px;align-items:flex-start;width:100%;box-sizing:border-box}
.pdk-server-info-modal__qr-col{display:flex;flex-direction:column;align-items:center;gap:12px;flex-shrink:0;width:180px}
.pdk-server-info-modal__qr-image{width:180px;height:180px;display:block;image-rendering:pixelated}
.pdk-server-info-modal__details-col{display:flex;flex-direction:column;gap:16px;flex-grow:1;min-width:0;box-sizing:border-box}
.pdk-server-info-modal__details-grid{display:flex;flex-direction:column;gap:10px;background:rgba(128,128,128,0.08);padding:14px;border:1px solid rgba(128,128,128,0.15);box-sizing:border-box}
.pdk-server-info-modal__detail-item{display:flex;justify-content:space-between;align-items:center;gap:16px}
.pdk-server-info-modal__detail-label{font-size:11px;opacity:0.65;text-transform:uppercase;letter-spacing:0.05em;font-weight:700}
.pdk-server-info-modal__detail-value{font-size:13px;font-weight:500}
.pdk-server-info-modal__detail-value--title{font-weight:600}
.pdk-server-info-modal__detail-value--mono{font-family:monospace;font-size:12px;background:rgba(128,128,128,0.12);padding:2px 6px;border-radius:4px;word-break:break-all}
.pdk-server-info-modal__badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;border-radius:4px;border:1px solid var(--border-color,rgba(128,128,128,0.25));background:rgba(128,128,128,0.08);line-height:1.2}
.pdk-server-info-modal__link-section{display:flex;flex-direction:column;gap:8px;box-sizing:border-box}
.pdk-server-info-modal__link{width:100% !important;max-width:100% !important;font-family:monospace;font-size:11px;padding:8px 10px;resize:none;min-height:54px;box-sizing:border-box;margin:0 !important;line-height:1.4;word-break:break-all;float:none !important;position:static !important;border-radius:0 !important;background-color:transparent !important}
.pdk-server-info-modal__copy-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;align-self:flex-start;padding:3px 10px !important;font-size:11px !important;height:auto !important;min-height:24px !important;float:none !important;position:static !important;margin:0 !important}
@media (max-width:640px){
.pdk-server-info-modal{width:100%}
.pdk-server-info-modal__container{flex-direction:column;align-items:center;gap:20px}
.pdk-server-info-modal__qr-col{width:100%;max-width:180px}
.pdk-server-info-modal__details-col{width:100%}
}
`,
),
);
@@ -1142,6 +1158,12 @@ function iconSvg(name) {
]);
}
if (name === "check") {
return svgEl("svg", attrs, [
svgEl("polyline", { points: "20 6 9 17 4 12" }),
]);
}
if (name === "info") {
return svgEl("svg", attrs, [
svgEl("circle", { cx: "12", cy: "12", r: "10" }),
@@ -1160,27 +1182,21 @@ function iconSvg(name) {
]);
}
function markButtonDone(button) {
if (!button) {
return;
}
button.classList.add("pdk-server-icon-button--done");
window.setTimeout(() => {
button.classList.remove("pdk-server-icon-button--done");
}, 700);
}
function copyText(text, button) {
function copyText(text) {
const textarea = document.createElement("textarea");
textarea.value = text;
textarea.style.position = "fixed";
textarea.style.top = "0";
textarea.style.left = "0";
textarea.style.opacity = "0";
document.body.appendChild(textarea);
textarea.select();
try {
document.execCommand("copy");
markButtonDone(button);
main.showToast(_("Successfully copied!"), "success");
} catch (error) {
main.showToast(_("Failed to copy!"), "error");
console.warn("Failed to copy server client link", error);
}
@@ -1195,41 +1211,108 @@ function renderInfoClientLink(sectionId) {
}
const qr = qrSvgDataUri(link);
const protocol = getProtocol(sectionId);
const security = getEffectiveSecurity(sectionId);
const host = getPublicHost(sectionId);
const port = uci.get(UCI_PACKAGE, sectionId, "listen_port") || "";
const name = getServerName(sectionId);
return E("div", { class: "pdk-server-info-modal__block" }, [
E("strong", {}, _("Client link QR code")),
E("div", { class: "pdk-server-qr-modal" }, [
const securitySuffix =
security && security !== "none" ? ` + ${getSecurityLabel(security)}` : "";
const protocolText = `${getProtocolLabel(protocol)}${securitySuffix}`;
return E("div", { class: "pdk-server-info-modal__container" }, [
// Left column: QR code
E("div", { class: "pdk-server-info-modal__qr-col" }, [
qr
? E("img", {
class: "pdk-server-qr-modal__image",
class: "pdk-server-info-modal__qr-image",
src: qr,
alt: _("Client link QR code"),
})
: E("em", {}, _("QR code is too large")),
]),
E("strong", {}, _("Client link")),
E("div", { class: "pdk-server-info-modal__link-row" }, [
E(
"textarea",
{
class: "cbi-input-textarea pdk-server-info-modal__link",
readonly: "readonly",
rows: 3,
},
link,
),
E(
"button",
{
class: "btn cbi-button cbi-button-neutral",
type: "button",
click: (ev) => {
ev.preventDefault();
copyText(link, ev.currentTarget);
// Right column: Details and Copy Box
E("div", { class: "pdk-server-info-modal__details-col" }, [
E("div", { class: "pdk-server-info-modal__details-grid" }, [
E("div", { class: "pdk-server-info-modal__detail-item" }, [
E(
"span",
{ class: "pdk-server-info-modal__detail-label" },
_("Server name"),
),
E(
"span",
{
class:
"pdk-server-info-modal__detail-value pdk-server-info-modal__detail-value--title",
},
name,
),
]),
E("div", { class: "pdk-server-info-modal__detail-item" }, [
E(
"span",
{ class: "pdk-server-info-modal__detail-label" },
_("Type"),
),
E(
"span",
{
class:
"pdk-server-info-modal__detail-value pdk-server-info-modal__badge",
},
protocolText,
),
]),
E("div", { class: "pdk-server-info-modal__detail-item" }, [
E(
"span",
{ class: "pdk-server-info-modal__detail-label" },
_("Address"),
),
E(
"span",
{
class:
"pdk-server-info-modal__detail-value pdk-server-info-modal__detail-value--mono",
},
`${host}:${port}`,
),
]),
]),
E("div", { class: "pdk-server-info-modal__link-section" }, [
E(
"span",
{ class: "pdk-server-info-modal__detail-label" },
_("Client link"),
),
E(
"textarea",
{
class: "cbi-input-textarea pdk-server-info-modal__link",
readonly: "readonly",
rows: 3,
click: (ev) => ev.currentTarget.select(),
},
},
[iconSvg("copy"), " ", _("Copy")],
),
link,
),
E(
"button",
{
class:
"btn cbi-button cbi-button-neutral pdk-server-info-modal__copy-btn",
type: "button",
click: (ev) => {
ev.preventDefault();
copyText(link);
},
},
[iconSvg("copy"), " ", E("span", {}, _("Copy"))],
),
]),
]),
]);
}
+14 -14
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-29 05:03+0300\n"
"PO-Revision-Date: 2026-05-29 05:03+0300\n"
"POT-Creation-Date: 2026-05-29 21:05+0300\n"
"PO-Revision-Date: 2026-05-29 21:05+0300\n"
"Last-Translator: ushan0v\n"
"Language-Team: none\n"
"Language: ru\n"
@@ -26,12 +26,12 @@ msgstr "✔ Работает"
msgid "✘ Stopped"
msgstr "✘ Остановлен"
msgid "Accept routes"
msgstr "Принимать маршруты"
msgid "Accept external proxy connections and route them with sing-box."
msgstr "Принимает внешние прокси-подключения и маршрутизирует их через sing-box."
msgid "Accept routes"
msgstr "Принимать маршруты"
msgid "Action"
msgstr "Действие"
@@ -59,6 +59,9 @@ msgstr "Добавляйте URL или локальные пути к спис
msgid "Additional marking rules found"
msgstr "Найдены дополнительные правила маркировки"
msgid "Address"
msgstr "Адрес"
msgid "Advertise exit node"
msgstr "Анонсировать exit node"
@@ -201,7 +204,7 @@ msgid "CIDR must be between 0 and 32"
msgstr "CIDR должен быть между 0 и 32"
msgid "Client fingerprint"
msgstr "Client fingerprint"
msgstr "Отпечаток клиента"
msgid "Client link"
msgstr "Ссылка клиента"
@@ -233,9 +236,6 @@ msgstr "Путь к файлу конфигурации"
msgid "Configuration for Podkop Plus service"
msgstr "Настройки сервиса Podkop Plus"
msgid "Connection statistics are unavailable"
msgstr "Статистика подключений недоступна"
msgid "Connection URL"
msgstr "URL подключения"
@@ -264,7 +264,7 @@ msgid "Delay value cannot be empty"
msgstr "Значение задержки не может быть пустым"
msgid "Delete"
msgstr ""
msgstr "Удалить"
msgid "Detect server country"
msgstr "Определять страну сервера"
@@ -461,6 +461,9 @@ msgstr "Полностью маршрутизированные IP-адреса"
msgid "Get global check"
msgstr "Получить глобальную проверку"
msgid "GitHub release"
msgstr "Релиз на GitHub"
msgid "Global check"
msgstr "Глобальная проверка"
@@ -1110,7 +1113,7 @@ msgid "Server name"
msgstr "Имя сервера"
msgid "Server name / SNI"
msgstr "Server name / SNI"
msgstr "Имя сервера / SNI"
msgid "Servers"
msgstr "Серверы"
@@ -1379,9 +1382,6 @@ msgstr "Обновления"
msgid "Uplink"
msgstr "Исходящий"
msgid "Upload"
msgstr "Загрузка"
msgid "Uploaded"
msgstr "Отдано"
+164 -166
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PODKOP PLUS\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-05-29 02:03+0300\n"
"PO-Revision-Date: 2026-05-29 02:03+0300\n"
"POT-Creation-Date: 2026-05-29 18:05+0300\n"
"PO-Revision-Date: 2026-05-29 18:05+0300\n"
"Last-Translator: ushan0v <ushanov2204@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
@@ -31,21 +31,20 @@ msgstr ""
msgid "✘ Stopped"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2372
msgid "Accept routes"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:130
msgid "Accept external proxy connections and route them with sing-box."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2376
msgid "Accept routes"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2492
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2524
msgid "Action"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1248
#: src/podkop/tabs/monitoring/initController.ts:501
#: src/podkop/tabs/monitoring/initController.ts:555
#: src/podkop/tabs/monitoring/render.ts:20
msgid "Active"
msgstr ""
@@ -58,7 +57,7 @@ msgstr ""
msgid "Add a section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:135
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:136
msgid "Add a server inbound"
msgstr ""
@@ -78,15 +77,19 @@ msgstr ""
msgid "Additional marking rules found"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2355
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1273
msgid "Address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2359
msgid "Advertise exit node"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2365
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2369
msgid "Advertise routes"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:464
#: src/podkop/tabs/monitoring/initController.ts:518
#: src/podkop/tabs/monitoring/render.ts:39
msgid "All"
msgstr ""
@@ -107,11 +110,11 @@ msgstr ""
msgid "Allows limiting the list of servers for URLTest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2051
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2055
msgid "ALPN"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2260
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2264
msgid "Alter ID"
msgstr ""
@@ -240,15 +243,15 @@ msgstr ""
msgid "Cannot receive checks result"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1737
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1741
msgid "Cannot save server"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2061
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2065
msgid "Certificate path"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:306
#: src/podkop/tabs/updates/initController.ts:324
msgid "Check update"
msgstr ""
@@ -290,27 +293,26 @@ msgstr ""
msgid "CIDR must be between 0 and 32"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2159
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2163
msgid "Client fingerprint"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1293
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1290
msgid "Client link"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1277
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1210
msgid "Client link is not available yet"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1283
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1289
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1231
msgid "Client link QR code"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1339
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1335
#: src/partials/modal/renderModal.ts:195
#: src/podkop/tabs/monitoring/initController.ts:645
#: src/podkop/tabs/monitoring/initController.ts:695
#: src/podkop/tabs/monitoring/initController.ts:699
#: src/podkop/tabs/monitoring/initController.ts:749
msgid "Close"
msgstr ""
@@ -319,12 +321,12 @@ msgstr ""
msgid "Close all connections"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:612
#: src/podkop/tabs/monitoring/initController.ts:613
#: src/podkop/tabs/monitoring/initController.ts:666
#: src/podkop/tabs/monitoring/initController.ts:667
msgid "Close connection"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:507
#: src/podkop/tabs/monitoring/initController.ts:561
#: src/podkop/tabs/monitoring/render.ts:29
msgid "Closed"
msgstr ""
@@ -341,19 +343,15 @@ msgstr ""
msgid "Configuration for Podkop Plus service"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1262
msgid "Connection statistics are unavailable"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2619
msgid "Connection URL"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:748
#: src/podkop/tabs/monitoring/initController.ts:802
msgid "Connections are unavailable"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1314
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1313
#: src/partials/modal/renderModal.ts:190
msgid "Copy"
msgstr ""
@@ -367,7 +365,7 @@ msgstr ""
msgid "Currently unavailable"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:167
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:168
msgid "Dashboard"
msgstr ""
@@ -383,7 +381,7 @@ msgstr ""
msgid "Delay value cannot be empty"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1355
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1351
msgid "Delete"
msgstr ""
@@ -391,7 +389,7 @@ msgstr ""
msgid "Detect server country"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:61
#: src/podkop/tabs/updates/initController.ts:62
msgid "Dev"
msgstr ""
@@ -404,12 +402,11 @@ msgstr ""
msgid "DHCP has DNS server"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:155
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:156
msgid "Diagnostics"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1984
#: src/podkop/tabs/monitoring/initController.ts:119
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1988
msgid "Direct"
msgstr ""
@@ -496,7 +493,6 @@ msgstr ""
msgid "Downlink"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1250
#: src/partials/modal/renderModal.ts:185
msgid "Download"
msgstr ""
@@ -513,8 +509,8 @@ msgstr ""
msgid "Download lists/updates/subscriptions via Proxy/VPN"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:638
#: src/podkop/tabs/monitoring/initController.ts:692
#: src/podkop/tabs/monitoring/initController.ts:746
msgid "Downloaded"
msgstr ""
@@ -529,12 +525,12 @@ msgid "Duplicate value"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:68
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1348
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1344
msgid "Edit rule action"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2482
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1900
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1904
msgid "Enable"
msgstr ""
@@ -622,24 +618,25 @@ msgstr ""
msgid "External nfqws config files bypass Podkop Plus queue management and explicit validation."
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:1010
#: src/podkop/tabs/monitoring/initController.ts:1025
#: src/podkop/tabs/monitoring/initController.ts:1064
#: src/podkop/tabs/monitoring/initController.ts:1079
msgid "Failed to close connection"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:1044
#: src/podkop/tabs/monitoring/initController.ts:1057
#: src/podkop/tabs/monitoring/initController.ts:1098
#: src/podkop/tabs/monitoring/initController.ts:1111
msgid "Failed to close connections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1199
#: src/helpers/copyToClipboard.ts:12
msgid "Failed to copy!"
msgstr ""
#: src/podkop/methods/shell/index.ts:97
#: src/podkop/methods/shell/index.ts:273
#: src/podkop/tabs/updates/initController.ts:241
#: src/podkop/tabs/updates/initController.ts:285
#: src/podkop/tabs/updates/initController.ts:254
#: src/podkop/tabs/updates/initController.ts:303
msgid "Failed to execute"
msgstr ""
@@ -648,12 +645,12 @@ msgstr ""
msgid "Failed to update subscriptions"
msgstr ""
#: src/podkop/methods/custom/getDashboardSections.ts:259
#: src/podkop/methods/custom/getDashboardSections.ts:307
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:93
msgid "Fastest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1738
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1742
msgid "Fix the highlighted fields and save again."
msgstr ""
@@ -665,11 +662,15 @@ msgstr ""
msgid "Get global check"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:490
msgid "GitHub release"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:415
msgid "Global check"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2211
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2215
msgid "gRPC service"
msgstr ""
@@ -677,8 +678,8 @@ msgstr ""
msgid "Hide filtered servers"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:628
#: src/podkop/tabs/monitoring/initController.ts:688
#: src/podkop/tabs/monitoring/initController.ts:682
#: src/podkop/tabs/monitoring/initController.ts:742
msgid "Host"
msgstr ""
@@ -686,7 +687,7 @@ msgstr ""
msgid "HTTP error"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2204
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2208
msgid "HTTP hosts"
msgstr ""
@@ -702,29 +703,29 @@ msgstr ""
msgid "Include server in URLTest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1356
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1352
msgid "Information"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:77
#: src/podkop/tabs/updates/initController.ts:381
#: src/podkop/tabs/updates/initController.ts:410
#: src/podkop/tabs/updates/initController.ts:78
#: src/podkop/tabs/updates/initController.ts:402
#: src/podkop/tabs/updates/initController.ts:432
msgid "Install"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:74
#: src/podkop/tabs/updates/initController.ts:75
msgid "Install %s"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:329
#: src/podkop/tabs/updates/initController.ts:347
msgid "Install extended"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:322
#: src/podkop/tabs/updates/initController.ts:340
msgid "Install stable"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:137
#: src/podkop/tabs/updates/initController.ts:150
msgid "Installed version is newer than release"
msgstr ""
@@ -757,11 +758,11 @@ msgstr ""
msgid "Invalid format. Use X.X.X.X or X.X.X.X/Y"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:76
#: src/validators/validateHysteriaUrl.ts:107
msgid "Invalid HY2 URL: insecure must be 0 or 1"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:62
#: src/validators/validateHysteriaUrl.ts:93
msgid "Invalid HY2 URL: invalid port number"
msgstr ""
@@ -793,19 +794,19 @@ msgstr ""
msgid "Invalid HY2 URL: must start with hysteria2:// or hy2://"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:99
#: src/validators/validateHysteriaUrl.ts:130
msgid "Invalid HY2 URL: obfs-password required when obfs is set"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:115
#: src/validators/validateHysteriaUrl.ts:146
msgid "Invalid HY2 URL: parsing failed"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:108
#: src/validators/validateHysteriaUrl.ts:139
msgid "Invalid HY2 URL: sni cannot be empty"
msgstr ""
#: src/validators/validateHysteriaUrl.ts:88
#: src/validators/validateHysteriaUrl.ts:119
msgid "Invalid HY2 URL: unsupported obfs type"
msgstr ""
@@ -948,7 +949,7 @@ msgstr ""
msgid "JSON outbound"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2076
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2080
msgid "Key path"
msgstr ""
@@ -956,11 +957,11 @@ msgstr ""
msgid "Keyword must not contain spaces"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:54
#: src/podkop/tabs/updates/initController.ts:55
msgid "Latest"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:140
#: src/podkop/tabs/updates/initController.ts:153
msgid "Latest version is installed"
msgstr ""
@@ -972,16 +973,15 @@ msgstr ""
msgid "List Update Frequency"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1956
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1960
msgid "Listen address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1963
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1967
msgid "Listen port"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1255
#: src/podkop/tabs/monitoring/initController.ts:738
#: src/podkop/tabs/monitoring/initController.ts:792
#: src/podkop/tabs/monitoring/render.ts:88
msgid "Loading connections"
msgstr ""
@@ -1030,7 +1030,7 @@ msgstr ""
msgid "Memory Usage"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2218
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2222
msgid "Method"
msgstr ""
@@ -1050,7 +1050,7 @@ msgstr ""
msgid "Monitored Interfaces"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:179
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:180
msgid "Monitoring"
msgstr ""
@@ -1078,11 +1078,11 @@ msgstr ""
msgid "NFQWS strategy cannot be empty"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:762
#: src/podkop/tabs/monitoring/initController.ts:816
msgid "No active connections"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:763
#: src/podkop/tabs/monitoring/initController.ts:817
msgid "No closed connections"
msgstr ""
@@ -1099,9 +1099,9 @@ msgid "No rules use Zapret"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:427
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2006
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2273
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2282
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2010
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2277
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2286
msgid "None"
msgstr ""
@@ -1109,9 +1109,9 @@ msgstr ""
msgid "Not implement yet"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:347
#: src/podkop/tabs/updates/initController.ts:365
#: src/podkop/tabs/updates/initController.ts:394
#: src/podkop/tabs/updates/initController.ts:366
#: src/podkop/tabs/updates/initController.ts:385
#: src/podkop/tabs/updates/initController.ts:415
msgid "Not installed"
msgstr ""
@@ -1128,11 +1128,11 @@ msgstr ""
msgid "Not running"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2281
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2285
msgid "Obfuscation"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2304
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2308
msgid "Obfuscation password"
msgstr ""
@@ -1177,7 +1177,7 @@ msgstr ""
msgid "Outbound JSON cannot be empty"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:58
#: src/podkop/tabs/updates/initController.ts:59
msgid "Outdated"
msgstr ""
@@ -1185,7 +1185,7 @@ msgstr ""
msgid "Output Network Interface"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2244
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2248
msgid "Password"
msgstr ""
@@ -1209,7 +1209,7 @@ msgstr ""
msgid "Path must end with cache.db"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:520
#: src/podkop/tabs/monitoring/initController.ts:574
#: src/podkop/tabs/monitoring/render.ts:70
#: src/podkop/tabs/monitoring/render.ts:71
msgid "Pause updates"
@@ -1239,7 +1239,7 @@ msgstr ""
msgid "Podkop Plus manages the nfqws process lifecycle itself, so daemon mode is not allowed here."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1983
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1987
msgid "Podkop Plus rules"
msgstr ""
@@ -1288,7 +1288,7 @@ msgid "Port for the local mixed proxy of this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:1336
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1416
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1420
msgid "Port must be between 1 and 65535"
msgstr ""
@@ -1300,8 +1300,8 @@ msgstr ""
msgid "Ports"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1906
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1940
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1910
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1944
msgid "Protocol"
msgstr ""
@@ -1317,39 +1317,39 @@ msgstr ""
msgid "Proxy traffic is routed via FakeIP"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1970
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1974
msgid "Public host"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1291
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1233
msgid "QR code is too large"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2094
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2098
msgid "Reality fake site"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2105
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2109
msgid "Reality fake site port"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2148
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2152
msgid "Reality max time difference"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2116
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2120
msgid "Reality private key"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2123
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2127
msgid "Reality public key"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2129
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2133
msgid "Reality short ID"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1604
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1608
msgid "Reality short ID must contain 1-8 hex digits"
msgstr ""
@@ -1361,8 +1361,8 @@ msgstr ""
msgid "Regional options cannot be used together"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:372
#: src/podkop/tabs/updates/initController.ts:401
#: src/podkop/tabs/updates/initController.ts:393
#: src/podkop/tabs/updates/initController.ts:423
msgid "Remove"
msgstr ""
@@ -1394,12 +1394,12 @@ msgstr ""
msgid "Restart Podkop Plus"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:520
#: src/podkop/tabs/monitoring/initController.ts:574
msgid "Resume updates"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:632
#: src/podkop/tabs/monitoring/initController.ts:690
#: src/podkop/tabs/monitoring/initController.ts:686
#: src/podkop/tabs/monitoring/initController.ts:744
msgid "Route"
msgstr ""
@@ -1407,11 +1407,11 @@ msgstr ""
msgid "Routing Excluded IPs"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1982
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1986
msgid "Routing mode"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1991
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1995
msgid "Routing section"
msgstr ""
@@ -1479,7 +1479,7 @@ msgstr ""
msgid "Sections"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2003
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2007
msgid "Security"
msgstr ""
@@ -1539,11 +1539,11 @@ msgstr ""
msgid "Select the WAN interfaces to be monitored"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1985
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1989
msgid "Selected section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:134
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:135
msgid "Server"
msgstr ""
@@ -1551,15 +1551,16 @@ msgstr ""
msgid "Server filtering for URLTest"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1328
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1322
msgid "Server information"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1917
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1243
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1921
msgid "Server name"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2032
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2036
msgid "Server name / SNI"
msgstr ""
@@ -1583,7 +1584,7 @@ msgstr ""
msgid "Services info"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:143
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:144
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/section.js:2479
msgid "Settings"
msgstr ""
@@ -1629,8 +1630,8 @@ msgstr ""
msgid "Sing-box version is compatible (newer than 1.12.4)"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:644
#: src/podkop/tabs/monitoring/initController.ts:694
#: src/podkop/tabs/monitoring/initController.ts:698
#: src/podkop/tabs/monitoring/initController.ts:748
msgid "Source"
msgstr ""
@@ -1642,12 +1643,12 @@ msgstr ""
msgid "Source Network Interface"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1497
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1501
msgid "Specify a file path"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1508
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1520
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1512
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1524
msgid "Specify different files"
msgstr ""
@@ -1719,6 +1720,7 @@ msgstr ""
msgid "Subscription URL cannot be empty"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1197
#: src/helpers/copyToClipboard.ts:10
msgid "Successfully copied!"
msgstr ""
@@ -1735,15 +1737,15 @@ msgstr ""
msgid "Table exist"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2320
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2324
msgid "Tailscale auth key"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2329
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2333
msgid "Tailscale control URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2337
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2341
msgid "Tailscale hostname"
msgstr ""
@@ -1772,11 +1774,11 @@ msgstr ""
msgid "There are rules using Zapret"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1431
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1436
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1491
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1595
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2267
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1435
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1440
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1495
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1599
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2271
msgid "This field is required"
msgstr ""
@@ -1800,8 +1802,8 @@ msgstr ""
msgid "This option requires a value."
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:635
#: src/podkop/tabs/monitoring/initController.ts:691
#: src/podkop/tabs/monitoring/initController.ts:689
#: src/podkop/tabs/monitoring/initController.ts:745
msgid "Time"
msgstr ""
@@ -1809,7 +1811,6 @@ msgstr ""
msgid "Time in seconds for DNS record caching (default: 60)"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1268
#: src/podkop/tabs/dashboard/initController.ts:474
#: src/podkop/tabs/dashboard/partials/renderSections.ts:216
msgid "Traffic"
@@ -1823,19 +1824,19 @@ msgstr ""
msgid "Transparent proxy mode is incompatible with action=byedpi because Podkop Plus connects to ciadpi through SOCKS."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2170
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2174
msgid "Transport"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2194
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2198
msgid "Transport host"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2181
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2185
msgid "Transport path"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1549
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1553
msgid "Transport path must start with /"
msgstr ""
@@ -1851,8 +1852,9 @@ msgstr ""
msgid "TTL value cannot be empty"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:629
#: src/podkop/tabs/monitoring/initController.ts:689
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1258
#: src/podkop/tabs/monitoring/initController.ts:683
#: src/podkop/tabs/monitoring/initController.ts:743
msgid "Type"
msgstr ""
@@ -1901,7 +1903,7 @@ msgstr ""
#: src/podkop/services/systemInfo.service.ts:16
#: src/podkop/services/systemInfo.service.ts:18
#: src/podkop/services/systemInfo.service.ts:19
#: src/podkop/tabs/updates/initController.ts:174
#: src/podkop/tabs/updates/initController.ts:187
msgid "unknown"
msgstr ""
@@ -1923,11 +1925,11 @@ msgstr ""
msgid "Unknown NFQWS flag."
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1616
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1620
msgid "Unsupported security mode for this protocol"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:133
#: src/podkop/tabs/updates/initController.ts:146
msgid "Update is available"
msgstr ""
@@ -1936,7 +1938,7 @@ msgstr ""
msgid "Update subscriptions"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:191
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/podkop.js:192
msgid "Updates"
msgstr ""
@@ -1945,12 +1947,8 @@ msgstr ""
msgid "Uplink"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1249
msgid "Upload"
msgstr ""
#: src/podkop/tabs/monitoring/initController.ts:641
#: src/podkop/tabs/monitoring/initController.ts:693
#: src/podkop/tabs/monitoring/initController.ts:695
#: src/podkop/tabs/monitoring/initController.ts:747
msgid "Uploaded"
msgstr ""
@@ -1974,30 +1972,30 @@ msgstr ""
msgid "URLTest URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1471
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1477
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1558
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1475
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1481
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1562
msgid "Use a domain name or IPv4 address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1543
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1547
msgid "Use a duration like 30s, 5m, or 1h30m"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2269
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2273
msgid "Use a non-negative integer"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1530
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1532
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1534
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1536
msgid "Use an HTTP or HTTPS URL"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1484
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1488
msgid "Use an IPv4 listen address"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1590
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1594
msgid "Use CIDR prefixes like 192.168.1.0/24"
msgstr ""
@@ -2006,7 +2004,7 @@ msgstr ""
msgid "Use format: URL | User-Agent"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1564
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1568
msgid "Use letters, digits, dots, underscores, or hyphens"
msgstr ""
@@ -2021,7 +2019,7 @@ msgstr ""
msgid "Use sing-box duration format like 1d, 12h or 30m"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2228
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2232
msgid "Username"
msgstr ""
@@ -2033,7 +2031,7 @@ msgstr ""
#: src/validators/validateDns.ts:18
#: src/validators/validateDomain.ts:13
#: src/validators/validateDomain.ts:30
#: src/validators/validateHysteriaUrl.ts:113
#: src/validators/validateHysteriaUrl.ts:144
#: src/validators/validateIp.ts:8
#: src/validators/validateOutboundJson.ts:7
#: src/validators/validatePath.ts:16
@@ -2052,11 +2050,11 @@ msgstr ""
msgid "Validation errors:"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1440
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:1444
msgid "Value must not contain control characters"
msgstr ""
#: src/podkop/tabs/updates/initController.ts:467
#: src/podkop/tabs/updates/initController.ts:515
msgid "Version"
msgstr ""
@@ -2069,7 +2067,7 @@ msgstr ""
msgid "Visible name of this section"
msgstr ""
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2272
#: ../luci-app-podkop-plus/htdocs/luci-static/resources/view/podkop/server.js:2276
msgid "VLESS flow"
msgstr ""
+9 -3
View File
@@ -8778,8 +8778,8 @@ show_sing_box_version() {
echo "$version"
}
fetch_latest_podkop_version() {
local owner repo response tag
fetch_latest_podkop_release_json() {
local owner repo
owner="${PODKOP_RELEASE_REPO%%/*}"
repo="${PODKOP_RELEASE_REPO#*/}"
@@ -8787,7 +8787,13 @@ fetch_latest_podkop_version() {
[ -n "$repo" ] || return 1
[ "$owner" != "$repo" ] || return 1
response="$(updates_fetch_github_release_json "$owner" "$repo")" || return 1
updates_fetch_github_release_json "$owner" "$repo"
}
fetch_latest_podkop_version() {
local response tag
response="$(fetch_latest_podkop_release_json)" || return 1
tag="$(printf '%s' "$response" | json_utils_ucode object-get-default tag_name "" 2>/dev/null)"
[ -n "$tag" ] || return 1
+1 -1
View File
@@ -355,7 +355,7 @@ function select_byedpi_asset_from_release(release, asset_ext, arch_candidates) {
let name = as_string(asset.name || "");
let url = as_string(asset.browser_download_url || "");
if (url != "" && byedpi_asset_matches(name, arch, asset_ext)) {
print(arch, "\t", name, "\t", url, "\n");
print(arch, "\t", name, "\t", url, "\t", as_string(release.html_url || ""), "\n");
return true;
}
}
+40 -11
View File
@@ -9,12 +9,15 @@ UPDATES_ZAPRET_BUNDLE_NAME=""
UPDATES_ZAPRET_PACKAGE_FILE=""
UPDATES_ZAPRET_PACKAGE_NAME=""
UPDATES_ZAPRET_PACKAGE_VERSION=""
UPDATES_ZAPRET_RELEASE_URL=""
UPDATES_BYEDPI_ARCH=""
UPDATES_BYEDPI_PACKAGE_URL=""
UPDATES_BYEDPI_PACKAGE_NAME=""
UPDATES_BYEDPI_PACKAGE_FILE=""
UPDATES_BYEDPI_PACKAGE_VERSION=""
UPDATES_BYEDPI_RELEASE_URL=""
UPDATES_PODKOP_BACKEND_URL=""
UPDATES_PODKOP_RELEASE_URL=""
UPDATES_PODKOP_BACKEND_NAME=""
UPDATES_PODKOP_BACKEND_FILE=""
UPDATES_PODKOP_APP_URL=""
@@ -24,6 +27,7 @@ UPDATES_PODKOP_I18N_URL=""
UPDATES_PODKOP_I18N_NAME=""
UPDATES_PODKOP_I18N_FILE=""
UPDATES_SING_BOX_EXTENDED_RELEASE_TAG=""
UPDATES_SING_BOX_EXTENDED_RELEASE_URL=""
UPDATES_SING_BOX_EXTENDED_ARCH_SUFFIX=""
UPDATES_SING_BOX_EXTENDED_ASSET_URL=""
UPDATES_SING_BOX_EXTENDED_ASSET_NAME=""
@@ -117,6 +121,7 @@ updates_json_response() {
local latest_version="${6:-}"
local changed="${7:-0}"
local status="${8:-}"
local release_url="${9:-}"
json_utils_ucode object-json \
success b "$success" \
@@ -126,7 +131,8 @@ updates_json_response() {
current_version s "$current_version" \
latest_version s "$latest_version" \
changed n "$changed" \
status s "$status"
status s "$status" \
release_url s "$release_url"
}
updates_success() {
@@ -759,8 +765,9 @@ updates_check_success() {
local component="$1"
local current_version="$2"
local latest_version="$3"
local release_url="${4:-}"
updates_check_success_compared "$component" "$current_version" "$latest_version" "$current_version" "$latest_version"
updates_check_success_compared "$component" "$current_version" "$latest_version" "$current_version" "$latest_version" "$release_url"
}
updates_check_success_compared() {
@@ -769,6 +776,7 @@ updates_check_success_compared() {
local latest_version="$3"
local compare_current_version="$4"
local compare_latest_version="$5"
local release_url="${6:-}"
local compare_result status message
compare_result="$(updates_compare_versions "$compare_current_version" "$compare_latest_version" 2>/dev/null || true)"
@@ -791,7 +799,18 @@ updates_check_success_compared() {
;;
esac
updates_success "$component" "check_update" "$message" "$current_version" "$latest_version" 0 "$status"
updates_success "$component" "check_update" "$message" "$current_version" "$latest_version" 0 "$status" "$release_url"
}
updates_fetch_podkop_latest_release_metadata() {
local release_json tag release_url
release_json="$(fetch_latest_podkop_release_json)" || return 1
tag="$(printf '%s' "$release_json" | json_utils_ucode object-get-default tag_name "" 2>/dev/null)"
[ -n "$tag" ] || return 1
release_url="$(printf '%s' "$release_json" | json_utils_ucode object-get-default html_url "" 2>/dev/null)"
printf '%s\t%s\n' "$tag" "$release_url"
}
updates_ensure_package_tool() {
@@ -1037,6 +1056,7 @@ updates_resolve_podkop_plus_release() {
local owner repo asset_ext release_json release_tag
UPDATES_PODKOP_BACKEND_URL=""
UPDATES_PODKOP_RELEASE_URL=""
UPDATES_PODKOP_BACKEND_NAME=""
UPDATES_PODKOP_APP_URL=""
UPDATES_PODKOP_APP_NAME=""
@@ -1056,6 +1076,7 @@ updates_resolve_podkop_plus_release() {
[ -n "$release_json" ] || return 1
release_tag="$(printf '%s' "$release_json" | json_utils_ucode object-get-default tag_name "" 2>/dev/null)"
[ "$release_tag" = "$latest_version" ] || return 1
UPDATES_PODKOP_RELEASE_URL="$(printf '%s' "$release_json" | json_utils_ucode object-get-default html_url "" 2>/dev/null)"
UPDATES_PODKOP_BACKEND_NAME="$(updates_select_release_asset_name "$release_json" "podkop-plus" "$asset_ext")"
UPDATES_PODKOP_APP_NAME="$(updates_select_release_asset_name "$release_json" "luci-app-podkop-plus" "$asset_ext")"
@@ -1111,8 +1132,10 @@ updates_resolve_zapret_release() {
UPDATES_ZAPRET_BUNDLE_URL=""
UPDATES_ZAPRET_BUNDLE_NAME=""
UPDATES_ZAPRET_PACKAGE_VERSION=""
UPDATES_ZAPRET_RELEASE_URL=""
release_json="$(updates_fetch_github_release_json "remittor" "zapret-openwrt")" || return 1
UPDATES_ZAPRET_RELEASE_URL="$(printf '%s' "$release_json" | json_utils_ucode object-get-default html_url "" 2>/dev/null)"
for arch in $UPDATES_ARCH_CANDIDATES; do
candidate_name="$(printf '%s' "$release_json" | json_utils_ucode release-asset-name-by-suffix "_${arch}.zip" 2>/dev/null)"
@@ -1168,6 +1191,7 @@ updates_resolve_byedpi_release() {
UPDATES_BYEDPI_PACKAGE_URL=""
UPDATES_BYEDPI_PACKAGE_NAME=""
UPDATES_BYEDPI_PACKAGE_VERSION=""
UPDATES_BYEDPI_RELEASE_URL=""
asset_ext="ipk"
updates_is_apk && asset_ext="apk"
@@ -1182,6 +1206,7 @@ updates_resolve_byedpi_release() {
UPDATES_BYEDPI_ARCH="$(printf '%s\n' "$resolved" | cut -f1)"
UPDATES_BYEDPI_PACKAGE_NAME="$(printf '%s\n' "$resolved" | cut -f2)"
UPDATES_BYEDPI_PACKAGE_URL="$(printf '%s\n' "$resolved" | cut -f3)"
UPDATES_BYEDPI_RELEASE_URL="$(printf '%s\n' "$resolved" | cut -f4)"
[ -n "$UPDATES_BYEDPI_ARCH" ] || return 1
[ -n "$UPDATES_BYEDPI_PACKAGE_NAME" ] || return 1
@@ -1229,7 +1254,7 @@ updates_install_zapret() {
[ "$installed" -eq 1 ] || updates_fail "zapret" "$action" "zapret is not installed" "$current_version" "$UPDATES_ZAPRET_PACKAGE_VERSION"
normalized_current="$(updates_normalize_zapret_version "$current_version")"
normalized_latest="$(updates_normalize_zapret_version "$UPDATES_ZAPRET_PACKAGE_VERSION")"
updates_check_success_compared "zapret" "$current_version" "$UPDATES_ZAPRET_PACKAGE_VERSION" "$normalized_current" "$normalized_latest"
updates_check_success_compared "zapret" "$current_version" "$UPDATES_ZAPRET_PACKAGE_VERSION" "$normalized_current" "$normalized_latest" "$UPDATES_ZAPRET_RELEASE_URL"
fi
updates_ensure_package_tool "unzip" "unzip" || updates_fail "zapret" "$action" "Failed to install unzip"
@@ -1262,7 +1287,7 @@ updates_install_byedpi() {
if [ "$action" = "check_update" ]; then
[ "$installed" -eq 1 ] || updates_fail "byedpi" "$action" "ByeDPI is not installed" "$current_version" "$UPDATES_BYEDPI_PACKAGE_VERSION"
updates_check_success "byedpi" "$current_version" "$UPDATES_BYEDPI_PACKAGE_VERSION"
updates_check_success "byedpi" "$current_version" "$UPDATES_BYEDPI_PACKAGE_VERSION" "$UPDATES_BYEDPI_RELEASE_URL"
fi
updates_download_byedpi_package || updates_fail "byedpi" "$action" "Failed to download ByeDPI package"
@@ -1364,6 +1389,7 @@ updates_resolve_sing_box_extended_release() {
local response tag release_json asset_pattern
UPDATES_SING_BOX_EXTENDED_RELEASE_TAG=""
UPDATES_SING_BOX_EXTENDED_RELEASE_URL=""
UPDATES_SING_BOX_EXTENDED_ASSET_URL=""
UPDATES_SING_BOX_EXTENDED_ASSET_NAME=""
@@ -1375,6 +1401,7 @@ updates_resolve_sing_box_extended_release() {
[ -n "$tag" ] || return 1
UPDATES_SING_BOX_EXTENDED_RELEASE_TAG="$tag"
release_json="$(printf '%s' "$response" | json_utils_ucode release-by-tag "$tag" 2>/dev/null)"
UPDATES_SING_BOX_EXTENDED_RELEASE_URL="$(printf '%s' "$release_json" | json_utils_ucode object-get-default html_url "" 2>/dev/null)"
asset_pattern="linux-${UPDATES_SING_BOX_EXTENDED_ARCH_SUFFIX}.tar.gz"
UPDATES_SING_BOX_EXTENDED_ASSET_URL="$(printf '%s' "$release_json" | json_utils_ucode release-asset-url-by-suffix "$asset_pattern" 2>/dev/null)"
@@ -1395,7 +1422,7 @@ updates_install_sing_box_extended() {
if [ "$action" = "check_update" ]; then
is_sing_box_extended "$current_version" || updates_fail "sing_box" "$action" "sing-box-extended is not installed" "$current_version" "$latest_version"
updates_check_success "sing_box" "$normalized_current" "$normalized_latest"
updates_check_success "sing_box" "$normalized_current" "$normalized_latest" "$UPDATES_SING_BOX_EXTENDED_RELEASE_URL"
fi
archive_file="$UPDATES_TMP_DIR/$UPDATES_SING_BOX_EXTENDED_ASSET_NAME"
@@ -1474,9 +1501,11 @@ updates_install_stable_sing_box() {
}
updates_check_podkop_plus() {
local latest_version compare_result status message now
local release_metadata latest_version release_url compare_result status message now
latest_version="$(fetch_latest_podkop_version)"
release_metadata="$(updates_fetch_podkop_latest_release_metadata 2>/dev/null || true)"
latest_version="$(printf '%s\n' "$release_metadata" | cut -f1)"
release_url="$(printf '%s\n' "$release_metadata" | cut -f2)"
[ -n "$latest_version" ] || latest_version="unknown"
if [ "$latest_version" = "unknown" ]; then
@@ -1491,7 +1520,7 @@ updates_check_podkop_plus() {
if ! is_podkop_release_version "$PODKOP_VERSION"; then
updates_log "Podkop Plus current version is not a release version ($PODKOP_VERSION)"
updates_success "podkop" "check_update" "Installed version is newer than release" "$PODKOP_VERSION" "$latest_version" 0 "dev"
updates_success "podkop" "check_update" "Installed version is newer than release" "$PODKOP_VERSION" "$latest_version" 0 "dev" "$release_url"
fi
compare_result="$(podkop_release_version_compare "$PODKOP_VERSION" "$latest_version" 2>/dev/null || true)"
@@ -1515,7 +1544,7 @@ updates_check_podkop_plus() {
;;
esac
updates_success "podkop" "check_update" "$message" "$PODKOP_VERSION" "$latest_version" 0 "$status"
updates_success "podkop" "check_update" "$message" "$PODKOP_VERSION" "$latest_version" 0 "$status" "$release_url"
}
updates_install_podkop_plus() {
@@ -1562,7 +1591,7 @@ updates_install_podkop_plus() {
new_version="$(updates_get_installed_package_version "podkop-plus")"
[ -n "$new_version" ] || new_version="$latest_version"
updates_log "Podkop Plus updated to $new_version"
updates_success "podkop" "install" "Podkop Plus has been installed" "$new_version" "$latest_version" 1 "latest"
updates_success "podkop" "install" "Podkop Plus has been installed" "$new_version" "$latest_version" 1 "latest" "$UPDATES_PODKOP_RELEASE_URL"
}
component_action() {