diff --git a/fe-app-podkop/locales/calls.json b/fe-app-podkop/locales/calls.json index 466ceff..75b8119 100644 --- a/fe-app-podkop/locales/calls.json +++ b/fe-app-podkop/locales/calls.json @@ -397,17 +397,11 @@ "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:278" ] }, - { - "call": "Downloading all lists via main Proxy/VPN", - "key": "Downloading all lists via main Proxy/VPN", - "places": [ - "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270" - ] - }, { "call": "Downloading all lists via specific Proxy/VPN", "key": "Downloading all lists via specific Proxy/VPN", "places": [ + "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270", "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279" ] }, @@ -526,7 +520,8 @@ "call": "Fastest", "key": "Fastest", "places": [ - "src/podkop/methods/custom/getDashboardSections.ts:117" + "src/podkop/methods/custom/getDashboardSections.ts:117", + "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:58" ] }, { @@ -611,7 +606,7 @@ "call": "Invalid JSON format", "key": "Invalid JSON format", "places": [ - "src/validators/validateOutboundJson.ts:19" + "src/validators/validateOutboundJson.ts:9" ] }, { @@ -884,8 +879,9 @@ "call": "Not responding", "key": "Not responding", "places": [ - "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59", - "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79" + "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:74", + "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:80", + "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:99" ] }, { @@ -920,13 +916,6 @@ "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:64" ] }, - { - "call": "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields", - "key": "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields", - "places": [ - "src/validators/validateOutboundJson.ts:11" - ] - }, { "call": "Outdated", "key": "Outdated", @@ -1588,7 +1577,7 @@ "src/validators/validateDomain.ts:13", "src/validators/validateDomain.ts:30", "src/validators/validateIp.ts:8", - "src/validators/validateOutboundJson.ts:17", + "src/validators/validateOutboundJson.ts:7", "src/validators/validatePath.ts:16", "src/validators/validateShadowsocksUrl.ts:95", "src/validators/validateSocksUrl.ts:80", diff --git a/fe-app-podkop/locales/podkop.pot b/fe-app-podkop/locales/podkop.pot index b23bcca..26b3d38 100644 --- a/fe-app-podkop/locales/podkop.pot +++ b/fe-app-podkop/locales/podkop.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PODKOP\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-25 22:08+0300\n" -"PO-Revision-Date: 2025-10-25 22:08+0300\n" +"POT-Creation-Date: 2025-10-26 12:56+0200\n" +"PO-Revision-Date: 2025-10-26 12:56+0200\n" "Last-Translator: divocat \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -250,9 +250,6 @@ msgid "Download Lists via specific proxy section" msgstr "" #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270 -msgid "Downloading all lists via main Proxy/VPN" -msgstr "" - #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279 msgid "Downloading all lists via specific Proxy/VPN" msgstr "" @@ -324,6 +321,7 @@ msgid "Failed to execute!" msgstr "" #: src/podkop/methods/custom/getDashboardSections.ts:117 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:58 msgid "Fastest" msgstr "" @@ -372,7 +370,7 @@ msgstr "" msgid "Invalid IP address" msgstr "" -#: src/validators/validateOutboundJson.ts:19 +#: src/validators/validateOutboundJson.ts:9 msgid "Invalid JSON format" msgstr "" @@ -528,8 +526,9 @@ msgstr "" msgid "Not implement yet" msgstr "" -#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59 -#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:74 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:80 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:99 msgid "Not responding" msgstr "" @@ -553,10 +552,6 @@ msgstr "" msgid "Outbound Configuration" msgstr "" -#: src/validators/validateOutboundJson.ts:11 -msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields" -msgstr "" - #: src/podkop/tabs/diagnostic/initController.ts:443 msgid "Outdated" msgstr "" @@ -941,7 +936,7 @@ msgstr "" #: src/validators/validateDomain.ts:13 #: src/validators/validateDomain.ts:30 #: src/validators/validateIp.ts:8 -#: src/validators/validateOutboundJson.ts:17 +#: src/validators/validateOutboundJson.ts:7 #: src/validators/validatePath.ts:16 #: src/validators/validateShadowsocksUrl.ts:95 #: src/validators/validateSocksUrl.ts:80 diff --git a/fe-app-podkop/locales/podkop.ru.po b/fe-app-podkop/locales/podkop.ru.po index 3296fc8..13a5c41 100644 --- a/fe-app-podkop/locales/podkop.ru.po +++ b/fe-app-podkop/locales/podkop.ru.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PODKOP\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-25 01:08+0300\n" -"PO-Revision-Date: 2025-10-25 01:08+0300\n" +"POT-Creation-Date: 2025-10-26 14:56+0200\n" +"PO-Revision-Date: 2025-10-26 14:56+0200\n" "Last-Translator: divocat\n" "Language-Team: none\n" "Language: ru\n" @@ -182,9 +182,6 @@ msgstr "Скачивать списки через Proxy/VPN" msgid "Download Lists via specific proxy section" msgstr "Скачивать списки через выбранную секцию" -msgid "Downloading all lists via main Proxy/VPN" -msgstr "Загрузка всех списков через основной прокси/VPN" - msgid "Downloading all lists via specific Proxy/VPN" msgstr "Загрузка всех списков через указанный прокси/VPN" @@ -401,9 +398,6 @@ msgstr "Конфигурация Outbound" msgid "Outbound Configuration" msgstr "Конфигурация исходящего соединения" -msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields" -msgstr "JSON должен содержать поля \"type\", \"server\" и \"server_port\"" - msgid "Outdated" msgstr "Устаревшая" diff --git a/fe-app-podkop/src/main.ts b/fe-app-podkop/src/main.ts index bffa791..497e60e 100644 --- a/fe-app-podkop/src/main.ts +++ b/fe-app-podkop/src/main.ts @@ -4,6 +4,9 @@ 'require uci'; 'require ui'; +if (typeof structuredClone !== 'function') + globalThis.structuredClone = (obj) => JSON.parse(JSON.stringify(obj)); + export * from './validators'; export * from './helpers'; export * from './podkop'; diff --git a/fe-app-podkop/src/podkop/tabs/diagnostic/initController.ts b/fe-app-podkop/src/podkop/tabs/diagnostic/initController.ts index a815e22..c8f3653 100644 --- a/fe-app-podkop/src/podkop/tabs/diagnostic/initController.ts +++ b/fe-app-podkop/src/podkop/tabs/diagnostic/initController.ts @@ -415,9 +415,9 @@ function renderDiagnosticSystemInfoWidget() { function getPodkopVersionRow(): IRenderSystemInfoRow { const loading = diagnosticsSystemInfo.loading; const unknown = diagnosticsSystemInfo.podkop_version === _('unknown'); - const hasActualVersion = Boolean( - diagnosticsSystemInfo.podkop_latest_version, - ); + const hasActualVersion = + Boolean(diagnosticsSystemInfo.podkop_latest_version) && + diagnosticsSystemInfo.podkop_latest_version !== 'unknown'; const version = normalizeCompiledVersion( diagnosticsSystemInfo.podkop_version, ); diff --git a/fe-app-podkop/src/validators/validateOutboundJson.ts b/fe-app-podkop/src/validators/validateOutboundJson.ts index 822662b..36ae4b9 100644 --- a/fe-app-podkop/src/validators/validateOutboundJson.ts +++ b/fe-app-podkop/src/validators/validateOutboundJson.ts @@ -1,18 +1,8 @@ import { ValidationResult } from './types'; -// TODO refactor current validation and add tests export function validateOutboundJson(value: string): ValidationResult { try { - const parsed = JSON.parse(value); - - if (!parsed.type || !parsed.server || !parsed.server_port) { - return { - valid: false, - message: _( - 'Outbound JSON must contain at least "type", "server" and "server_port" fields', - ), - }; - } + JSON.parse(value); return { valid: true, message: _('Valid') }; } catch { diff --git a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js index 37ccc9a..1a1dadc 100644 --- a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js +++ b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/main.js @@ -323,15 +323,7 @@ function validateVlessUrl(url) { // src/validators/validateOutboundJson.ts function validateOutboundJson(value) { try { - const parsed = JSON.parse(value); - if (!parsed.type || !parsed.server || !parsed.server_port) { - return { - valid: false, - message: _( - 'Outbound JSON must contain at least "type", "server" and "server_port" fields' - ) - }; - } + JSON.parse(value); return { valid: true, message: _("Valid") }; } catch { return { valid: false, message: _("Invalid JSON format") }; @@ -4152,9 +4144,7 @@ function renderDiagnosticSystemInfoWidget() { function getPodkopVersionRow() { const loading = diagnosticsSystemInfo.loading; const unknown = diagnosticsSystemInfo.podkop_version === _("unknown"); - const hasActualVersion = Boolean( - diagnosticsSystemInfo.podkop_latest_version - ); + const hasActualVersion = Boolean(diagnosticsSystemInfo.podkop_latest_version) && diagnosticsSystemInfo.podkop_latest_version !== "unknown"; const version = normalizeCompiledVersion( diagnosticsSystemInfo.podkop_version ); @@ -4745,6 +4735,10 @@ function insertIf(condition, elements) { function insertIfObj(condition, object) { return condition ? object : {}; } + +// src/main.ts +if (typeof structuredClone !== "function") + globalThis.structuredClone = (obj) => JSON.parse(JSON.stringify(obj)); return baseclass.extend({ ALLOWED_WITH_RUSSIA_INSIDE, BOOTSTRAP_DNS_SERVER_OPTIONS, diff --git a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js index ad678a4..d0b85b8 100644 --- a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js +++ b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js @@ -267,7 +267,7 @@ function createSettingsContent(section) { form.Flag, "download_lists_via_proxy", _("Download Lists via Proxy/VPN"), - _("Downloading all lists via main Proxy/VPN"), + _("Downloading all lists via specific Proxy/VPN"), ); o.default = "0"; o.rmempty = false; diff --git a/luci-app-podkop/po/ru/podkop.po b/luci-app-podkop/po/ru/podkop.po index 3296fc8..13a5c41 100644 --- a/luci-app-podkop/po/ru/podkop.po +++ b/luci-app-podkop/po/ru/podkop.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PODKOP\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-25 01:08+0300\n" -"PO-Revision-Date: 2025-10-25 01:08+0300\n" +"POT-Creation-Date: 2025-10-26 14:56+0200\n" +"PO-Revision-Date: 2025-10-26 14:56+0200\n" "Last-Translator: divocat\n" "Language-Team: none\n" "Language: ru\n" @@ -182,9 +182,6 @@ msgstr "Скачивать списки через Proxy/VPN" msgid "Download Lists via specific proxy section" msgstr "Скачивать списки через выбранную секцию" -msgid "Downloading all lists via main Proxy/VPN" -msgstr "Загрузка всех списков через основной прокси/VPN" - msgid "Downloading all lists via specific Proxy/VPN" msgstr "Загрузка всех списков через указанный прокси/VPN" @@ -401,9 +398,6 @@ msgstr "Конфигурация Outbound" msgid "Outbound Configuration" msgstr "Конфигурация исходящего соединения" -msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields" -msgstr "JSON должен содержать поля \"type\", \"server\" и \"server_port\"" - msgid "Outdated" msgstr "Устаревшая" diff --git a/luci-app-podkop/po/templates/podkop.pot b/luci-app-podkop/po/templates/podkop.pot index b23bcca..26b3d38 100644 --- a/luci-app-podkop/po/templates/podkop.pot +++ b/luci-app-podkop/po/templates/podkop.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: PODKOP\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-25 22:08+0300\n" -"PO-Revision-Date: 2025-10-25 22:08+0300\n" +"POT-Creation-Date: 2025-10-26 12:56+0200\n" +"PO-Revision-Date: 2025-10-26 12:56+0200\n" "Last-Translator: divocat \n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -250,9 +250,6 @@ msgid "Download Lists via specific proxy section" msgstr "" #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270 -msgid "Downloading all lists via main Proxy/VPN" -msgstr "" - #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279 msgid "Downloading all lists via specific Proxy/VPN" msgstr "" @@ -324,6 +321,7 @@ msgid "Failed to execute!" msgstr "" #: src/podkop/methods/custom/getDashboardSections.ts:117 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:58 msgid "Fastest" msgstr "" @@ -372,7 +370,7 @@ msgstr "" msgid "Invalid IP address" msgstr "" -#: src/validators/validateOutboundJson.ts:19 +#: src/validators/validateOutboundJson.ts:9 msgid "Invalid JSON format" msgstr "" @@ -528,8 +526,9 @@ msgstr "" msgid "Not implement yet" msgstr "" -#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59 -#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:74 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:80 +#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:99 msgid "Not responding" msgstr "" @@ -553,10 +552,6 @@ msgstr "" msgid "Outbound Configuration" msgstr "" -#: src/validators/validateOutboundJson.ts:11 -msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields" -msgstr "" - #: src/podkop/tabs/diagnostic/initController.ts:443 msgid "Outdated" msgstr "" @@ -941,7 +936,7 @@ msgstr "" #: src/validators/validateDomain.ts:13 #: src/validators/validateDomain.ts:30 #: src/validators/validateIp.ts:8 -#: src/validators/validateOutboundJson.ts:17 +#: src/validators/validateOutboundJson.ts:7 #: src/validators/validatePath.ts:16 #: src/validators/validateShadowsocksUrl.ts:95 #: src/validators/validateSocksUrl.ts:80