From 853af95404de60712e159ccb2b362e9366388439 Mon Sep 17 00:00:00 2001 From: Slava-Shchipunov Date: Thu, 7 Nov 2024 11:33:32 +0700 Subject: [PATCH] feat: add domain input validation --- .../luci-static/resources/view/podkop/podkop.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js index 065fad8..b6db9e1 100644 --- a/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js +++ b/luci-app-podkop/htdocs/luci-static/resources/view/podkop/podkop.js @@ -89,6 +89,22 @@ return view.extend({ o.placeholder = 'Domains list'; o.depends('custom_domains_list_enabled', '1'); o.rmempty = false; + o.validate = function(section_id, value) { + // Чтобы валидация не ругалась на пустое поле + if (!value || value.length === 0) { + return true; + } + + // Регулярное выражение для проверки доменов и субдоменов (без порта, протокола, пути) + // Домен должен соответствовать правилам именования доменов. Только для латиницы + const domainRegex = /^(?!:\/\/)([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\.)+[a-zA-Z]{2,}$/; + + if (!domainRegex.test(value)) { + return `Invalid domain format: ${value}. Enter only valid domain, without protocol, port or path`; + } + + return true; + }; o = s.taboption('main', form.Flag, 'custom_download_domains_list_enabled', _('URL domains enable')); o.default = '0';