diff --git a/fe-app-podkop/src/validators/tests/validateDns.test.js b/fe-app-podkop/src/validators/tests/validateDns.test.js index e0543ab..bd105b1 100644 --- a/fe-app-podkop/src/validators/tests/validateDns.test.js +++ b/fe-app-podkop/src/validators/tests/validateDns.test.js @@ -3,7 +3,18 @@ import { validateDNS } from '../validateDns.js'; import { invalidIPs, validIPs } from './validateIp.test'; import { invalidDomains, validDomains } from './validateDomain.test'; -const validDns = [...validIPs, ...validDomains]; +export const additionalValidDns = [ + ['Google DNS (port 53)', '8.8.8.8:53'], + ['Google DNS (port 5353)', '8.8.8.8:5353'], + ['Cloudflare DNS (port 853)', '1.1.1.1:853'], + ['Cloudflare domain (port 853)', 'cloudflare-dns.com:853'], + ['DoH IP', '1.1.1.1/dns-query'], + ['DoH IP with port 443', '1.1.1.1:443/dns-query'], + ['DoH domain', 'cloudflare-dns.com/dns-query'], + ['DoH domain with port 443', 'cloudflare-dns.com:443/dns-query'], +]; + +const validDns = [...validIPs, ...validDomains, ...additionalValidDns]; const invalidDns = [...invalidIPs, ...invalidDomains]; diff --git a/fe-app-podkop/src/validators/validateDns.ts b/fe-app-podkop/src/validators/validateDns.ts index 260ec18..1952a73 100644 --- a/fe-app-podkop/src/validators/validateDns.ts +++ b/fe-app-podkop/src/validators/validateDns.ts @@ -7,11 +7,14 @@ export function validateDNS(value: string): ValidationResult { return { valid: false, message: _('DNS server address cannot be empty') }; } - if (validateIPV4(value).valid) { + const cleanedValueWithoutPort = value.replace(/:(\d+)(?=\/|$)/, ''); + const cleanedIpWithoutPath = cleanedValueWithoutPort.split('/')[0]; + + if (validateIPV4(cleanedIpWithoutPath).valid) { return { valid: true, message: _('Valid') }; } - if (validateDomain(value).valid) { + if (validateDomain(cleanedValueWithoutPort).valid) { return { valid: true, message: _('Valid') }; } 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 be0f13d..bcf89bc 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 @@ -40,10 +40,12 @@ function validateDNS(value) { if (!value) { return { valid: false, message: _("DNS server address cannot be empty") }; } - if (validateIPV4(value).valid) { + const cleanedValueWithoutPort = value.replace(/:(\d+)(?=\/|$)/, ""); + const cleanedIpWithoutPath = cleanedValueWithoutPort.split("/")[0]; + if (validateIPV4(cleanedIpWithoutPath).valid) { return { valid: true, message: _("Valid") }; } - if (validateDomain(value).valid) { + if (validateDomain(cleanedValueWithoutPort).valid) { return { valid: true, message: _("Valid") }; } return {