Merge pull request #232 from itdoginfo/fix/change_json_outbound_validation

small pack of fixes
This commit is contained in:
Kirill Sobakin
2025-10-26 16:07:47 +03:00
committed by GitHub
10 changed files with 42 additions and 88 deletions

View File

@@ -397,17 +397,11 @@
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:278" "../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", "call": "Downloading all lists via specific Proxy/VPN",
"key": "Downloading all lists via specific Proxy/VPN", "key": "Downloading all lists via specific Proxy/VPN",
"places": [ "places": [
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270",
"../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279" "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279"
] ]
}, },
@@ -526,7 +520,8 @@
"call": "Fastest", "call": "Fastest",
"key": "Fastest", "key": "Fastest",
"places": [ "places": [
"src/podkop/methods/custom/getDashboardSections.ts:117" "src/podkop/methods/custom/getDashboardSections.ts:117",
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:58"
] ]
}, },
{ {
@@ -611,7 +606,7 @@
"call": "Invalid JSON format", "call": "Invalid JSON format",
"key": "Invalid JSON format", "key": "Invalid JSON format",
"places": [ "places": [
"src/validators/validateOutboundJson.ts:19" "src/validators/validateOutboundJson.ts:9"
] ]
}, },
{ {
@@ -884,8 +879,9 @@
"call": "Not responding", "call": "Not responding",
"key": "Not responding", "key": "Not responding",
"places": [ "places": [
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59", "src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:74",
"src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79" "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" "../luci-app-podkop/htdocs/luci-static/resources/view/podkop/section.js:64"
] ]
}, },
{
"call": "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields",
"key": "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields",
"places": [
"src/validators/validateOutboundJson.ts:11"
]
},
{ {
"call": "Outdated", "call": "Outdated",
"key": "Outdated", "key": "Outdated",
@@ -1588,7 +1577,7 @@
"src/validators/validateDomain.ts:13", "src/validators/validateDomain.ts:13",
"src/validators/validateDomain.ts:30", "src/validators/validateDomain.ts:30",
"src/validators/validateIp.ts:8", "src/validators/validateIp.ts:8",
"src/validators/validateOutboundJson.ts:17", "src/validators/validateOutboundJson.ts:7",
"src/validators/validatePath.ts:16", "src/validators/validatePath.ts:16",
"src/validators/validateShadowsocksUrl.ts:95", "src/validators/validateShadowsocksUrl.ts:95",
"src/validators/validateSocksUrl.ts:80", "src/validators/validateSocksUrl.ts:80",

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PODKOP\n" "Project-Id-Version: PODKOP\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-25 22:08+0300\n" "POT-Creation-Date: 2025-10-26 12:56+0200\n"
"PO-Revision-Date: 2025-10-25 22:08+0300\n" "PO-Revision-Date: 2025-10-26 12:56+0200\n"
"Last-Translator: divocat <divocatt@gmail.com>\n" "Last-Translator: divocat <divocatt@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: \n"
@@ -250,9 +250,6 @@ msgid "Download Lists via specific proxy section"
msgstr "" msgstr ""
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270 #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270
msgid "Downloading all lists via main Proxy/VPN"
msgstr ""
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279 #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279
msgid "Downloading all lists via specific Proxy/VPN" msgid "Downloading all lists via specific Proxy/VPN"
msgstr "" msgstr ""
@@ -324,6 +321,7 @@ msgid "Failed to execute!"
msgstr "" msgstr ""
#: src/podkop/methods/custom/getDashboardSections.ts:117 #: src/podkop/methods/custom/getDashboardSections.ts:117
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:58
msgid "Fastest" msgid "Fastest"
msgstr "" msgstr ""
@@ -372,7 +370,7 @@ msgstr ""
msgid "Invalid IP address" msgid "Invalid IP address"
msgstr "" msgstr ""
#: src/validators/validateOutboundJson.ts:19 #: src/validators/validateOutboundJson.ts:9
msgid "Invalid JSON format" msgid "Invalid JSON format"
msgstr "" msgstr ""
@@ -528,8 +526,9 @@ msgstr ""
msgid "Not implement yet" msgid "Not implement yet"
msgstr "" msgstr ""
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59 #: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:74
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79 #: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:80
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:99
msgid "Not responding" msgid "Not responding"
msgstr "" msgstr ""
@@ -553,10 +552,6 @@ msgstr ""
msgid "Outbound Configuration" msgid "Outbound Configuration"
msgstr "" msgstr ""
#: src/validators/validateOutboundJson.ts:11
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:443 #: src/podkop/tabs/diagnostic/initController.ts:443
msgid "Outdated" msgid "Outdated"
msgstr "" msgstr ""
@@ -941,7 +936,7 @@ msgstr ""
#: src/validators/validateDomain.ts:13 #: src/validators/validateDomain.ts:13
#: src/validators/validateDomain.ts:30 #: src/validators/validateDomain.ts:30
#: src/validators/validateIp.ts:8 #: src/validators/validateIp.ts:8
#: src/validators/validateOutboundJson.ts:17 #: src/validators/validateOutboundJson.ts:7
#: src/validators/validatePath.ts:16 #: src/validators/validatePath.ts:16
#: src/validators/validateShadowsocksUrl.ts:95 #: src/validators/validateShadowsocksUrl.ts:95
#: src/validators/validateSocksUrl.ts:80 #: src/validators/validateSocksUrl.ts:80

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PODKOP\n" "Project-Id-Version: PODKOP\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-25 01:08+0300\n" "POT-Creation-Date: 2025-10-26 14:56+0200\n"
"PO-Revision-Date: 2025-10-25 01:08+0300\n" "PO-Revision-Date: 2025-10-26 14:56+0200\n"
"Last-Translator: divocat\n" "Last-Translator: divocat\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: ru\n" "Language: ru\n"
@@ -182,9 +182,6 @@ msgstr "Скачивать списки через Proxy/VPN"
msgid "Download Lists via specific proxy section" msgid "Download Lists via specific proxy section"
msgstr "Скачивать списки через выбранную секцию" msgstr "Скачивать списки через выбранную секцию"
msgid "Downloading all lists via main Proxy/VPN"
msgstr "Загрузка всех списков через основной прокси/VPN"
msgid "Downloading all lists via specific Proxy/VPN" msgid "Downloading all lists via specific Proxy/VPN"
msgstr "Загрузка всех списков через указанный прокси/VPN" msgstr "Загрузка всех списков через указанный прокси/VPN"
@@ -401,9 +398,6 @@ msgstr "Конфигурация Outbound"
msgid "Outbound Configuration" msgid "Outbound Configuration"
msgstr "Конфигурация исходящего соединения" msgstr "Конфигурация исходящего соединения"
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
msgstr "JSON должен содержать поля \"type\", \"server\" и \"server_port\""
msgid "Outdated" msgid "Outdated"
msgstr "Устаревшая" msgstr "Устаревшая"

View File

@@ -4,6 +4,9 @@
'require uci'; 'require uci';
'require ui'; 'require ui';
if (typeof structuredClone !== 'function')
globalThis.structuredClone = (obj) => JSON.parse(JSON.stringify(obj));
export * from './validators'; export * from './validators';
export * from './helpers'; export * from './helpers';
export * from './podkop'; export * from './podkop';

View File

@@ -415,9 +415,9 @@ function renderDiagnosticSystemInfoWidget() {
function getPodkopVersionRow(): IRenderSystemInfoRow { function getPodkopVersionRow(): IRenderSystemInfoRow {
const loading = diagnosticsSystemInfo.loading; const loading = diagnosticsSystemInfo.loading;
const unknown = diagnosticsSystemInfo.podkop_version === _('unknown'); const unknown = diagnosticsSystemInfo.podkop_version === _('unknown');
const hasActualVersion = Boolean( const hasActualVersion =
diagnosticsSystemInfo.podkop_latest_version, Boolean(diagnosticsSystemInfo.podkop_latest_version) &&
); diagnosticsSystemInfo.podkop_latest_version !== 'unknown';
const version = normalizeCompiledVersion( const version = normalizeCompiledVersion(
diagnosticsSystemInfo.podkop_version, diagnosticsSystemInfo.podkop_version,
); );

View File

@@ -1,18 +1,8 @@
import { ValidationResult } from './types'; import { ValidationResult } from './types';
// TODO refactor current validation and add tests
export function validateOutboundJson(value: string): ValidationResult { export function validateOutboundJson(value: string): ValidationResult {
try { try {
const parsed = JSON.parse(value); JSON.parse(value);
if (!parsed.type || !parsed.server || !parsed.server_port) {
return {
valid: false,
message: _(
'Outbound JSON must contain at least "type", "server" and "server_port" fields',
),
};
}
return { valid: true, message: _('Valid') }; return { valid: true, message: _('Valid') };
} catch { } catch {

View File

@@ -323,15 +323,7 @@ function validateVlessUrl(url) {
// src/validators/validateOutboundJson.ts // src/validators/validateOutboundJson.ts
function validateOutboundJson(value) { function validateOutboundJson(value) {
try { try {
const parsed = JSON.parse(value); JSON.parse(value);
if (!parsed.type || !parsed.server || !parsed.server_port) {
return {
valid: false,
message: _(
'Outbound JSON must contain at least "type", "server" and "server_port" fields'
)
};
}
return { valid: true, message: _("Valid") }; return { valid: true, message: _("Valid") };
} catch { } catch {
return { valid: false, message: _("Invalid JSON format") }; return { valid: false, message: _("Invalid JSON format") };
@@ -4152,9 +4144,7 @@ function renderDiagnosticSystemInfoWidget() {
function getPodkopVersionRow() { function getPodkopVersionRow() {
const loading = diagnosticsSystemInfo.loading; const loading = diagnosticsSystemInfo.loading;
const unknown = diagnosticsSystemInfo.podkop_version === _("unknown"); const unknown = diagnosticsSystemInfo.podkop_version === _("unknown");
const hasActualVersion = Boolean( const hasActualVersion = Boolean(diagnosticsSystemInfo.podkop_latest_version) && diagnosticsSystemInfo.podkop_latest_version !== "unknown";
diagnosticsSystemInfo.podkop_latest_version
);
const version = normalizeCompiledVersion( const version = normalizeCompiledVersion(
diagnosticsSystemInfo.podkop_version diagnosticsSystemInfo.podkop_version
); );
@@ -4745,6 +4735,10 @@ function insertIf(condition, elements) {
function insertIfObj(condition, object) { function insertIfObj(condition, object) {
return condition ? object : {}; return condition ? object : {};
} }
// src/main.ts
if (typeof structuredClone !== "function")
globalThis.structuredClone = (obj) => JSON.parse(JSON.stringify(obj));
return baseclass.extend({ return baseclass.extend({
ALLOWED_WITH_RUSSIA_INSIDE, ALLOWED_WITH_RUSSIA_INSIDE,
BOOTSTRAP_DNS_SERVER_OPTIONS, BOOTSTRAP_DNS_SERVER_OPTIONS,

View File

@@ -267,7 +267,7 @@ function createSettingsContent(section) {
form.Flag, form.Flag,
"download_lists_via_proxy", "download_lists_via_proxy",
_("Download Lists via Proxy/VPN"), _("Download Lists via Proxy/VPN"),
_("Downloading all lists via main Proxy/VPN"), _("Downloading all lists via specific Proxy/VPN"),
); );
o.default = "0"; o.default = "0";
o.rmempty = false; o.rmempty = false;

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PODKOP\n" "Project-Id-Version: PODKOP\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-25 01:08+0300\n" "POT-Creation-Date: 2025-10-26 14:56+0200\n"
"PO-Revision-Date: 2025-10-25 01:08+0300\n" "PO-Revision-Date: 2025-10-26 14:56+0200\n"
"Last-Translator: divocat\n" "Last-Translator: divocat\n"
"Language-Team: none\n" "Language-Team: none\n"
"Language: ru\n" "Language: ru\n"
@@ -182,9 +182,6 @@ msgstr "Скачивать списки через Proxy/VPN"
msgid "Download Lists via specific proxy section" msgid "Download Lists via specific proxy section"
msgstr "Скачивать списки через выбранную секцию" msgstr "Скачивать списки через выбранную секцию"
msgid "Downloading all lists via main Proxy/VPN"
msgstr "Загрузка всех списков через основной прокси/VPN"
msgid "Downloading all lists via specific Proxy/VPN" msgid "Downloading all lists via specific Proxy/VPN"
msgstr "Загрузка всех списков через указанный прокси/VPN" msgstr "Загрузка всех списков через указанный прокси/VPN"
@@ -401,9 +398,6 @@ msgstr "Конфигурация Outbound"
msgid "Outbound Configuration" msgid "Outbound Configuration"
msgstr "Конфигурация исходящего соединения" msgstr "Конфигурация исходящего соединения"
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
msgstr "JSON должен содержать поля \"type\", \"server\" и \"server_port\""
msgid "Outdated" msgid "Outdated"
msgstr "Устаревшая" msgstr "Устаревшая"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PODKOP\n" "Project-Id-Version: PODKOP\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-25 22:08+0300\n" "POT-Creation-Date: 2025-10-26 12:56+0200\n"
"PO-Revision-Date: 2025-10-25 22:08+0300\n" "PO-Revision-Date: 2025-10-26 12:56+0200\n"
"Last-Translator: divocat <divocatt@gmail.com>\n" "Last-Translator: divocat <divocatt@gmail.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n" "Language: \n"
@@ -250,9 +250,6 @@ msgid "Download Lists via specific proxy section"
msgstr "" msgstr ""
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270 #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:270
msgid "Downloading all lists via main Proxy/VPN"
msgstr ""
#: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279 #: ../luci-app-podkop/htdocs/luci-static/resources/view/podkop/settings.js:279
msgid "Downloading all lists via specific Proxy/VPN" msgid "Downloading all lists via specific Proxy/VPN"
msgstr "" msgstr ""
@@ -324,6 +321,7 @@ msgid "Failed to execute!"
msgstr "" msgstr ""
#: src/podkop/methods/custom/getDashboardSections.ts:117 #: src/podkop/methods/custom/getDashboardSections.ts:117
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:58
msgid "Fastest" msgid "Fastest"
msgstr "" msgstr ""
@@ -372,7 +370,7 @@ msgstr ""
msgid "Invalid IP address" msgid "Invalid IP address"
msgstr "" msgstr ""
#: src/validators/validateOutboundJson.ts:19 #: src/validators/validateOutboundJson.ts:9
msgid "Invalid JSON format" msgid "Invalid JSON format"
msgstr "" msgstr ""
@@ -528,8 +526,9 @@ msgstr ""
msgid "Not implement yet" msgid "Not implement yet"
msgstr "" msgstr ""
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:59 #: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:74
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:79 #: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:80
#: src/podkop/tabs/diagnostic/checks/runSectionsCheck.ts:99
msgid "Not responding" msgid "Not responding"
msgstr "" msgstr ""
@@ -553,10 +552,6 @@ msgstr ""
msgid "Outbound Configuration" msgid "Outbound Configuration"
msgstr "" msgstr ""
#: src/validators/validateOutboundJson.ts:11
msgid "Outbound JSON must contain at least \"type\", \"server\" and \"server_port\" fields"
msgstr ""
#: src/podkop/tabs/diagnostic/initController.ts:443 #: src/podkop/tabs/diagnostic/initController.ts:443
msgid "Outdated" msgid "Outdated"
msgstr "" msgstr ""
@@ -941,7 +936,7 @@ msgstr ""
#: src/validators/validateDomain.ts:13 #: src/validators/validateDomain.ts:13
#: src/validators/validateDomain.ts:30 #: src/validators/validateDomain.ts:30
#: src/validators/validateIp.ts:8 #: src/validators/validateIp.ts:8
#: src/validators/validateOutboundJson.ts:17 #: src/validators/validateOutboundJson.ts:7
#: src/validators/validatePath.ts:16 #: src/validators/validatePath.ts:16
#: src/validators/validateShadowsocksUrl.ts:95 #: src/validators/validateShadowsocksUrl.ts:95
#: src/validators/validateSocksUrl.ts:80 #: src/validators/validateSocksUrl.ts:80