diff --git a/CHANGELOG.md b/CHANGELOG.md index abd261d8..0cf6e4c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ See also the [v0.107.20 GitHub milestone][ms-v0.107.20]. ### Fixed +- Wrong validation error messages on the DHCP configuration page ([#5208]). - Slow upstream checks making the API unresponsive ([#5193]). - The TLS initialization errors preventing AdGuard Home from starting ([#5189]). Instead, AdGuard Home disables encryption and shows an error message on the @@ -46,6 +47,7 @@ See also the [v0.107.20 GitHub milestone][ms-v0.107.20]. [#5189]: https://github.com/AdguardTeam/AdGuardHome/issues/5189 [#5190]: https://github.com/AdguardTeam/AdGuardHome/issues/5190 [#5193]: https://github.com/AdguardTeam/AdGuardHome/issues/5193 +[#5208]: https://github.com/AdguardTeam/AdGuardHome/issues/5208 diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json index 0d1bb275..1771afbd 100644 --- a/client/src/__locales/en.json +++ b/client/src/__locales/en.json @@ -37,8 +37,6 @@ "dhcp_ipv6_settings": "DHCP IPv6 Settings", "form_error_required": "Required field", "form_error_ip4_format": "Invalid IPv4 address", - "form_error_ip4_range_start_format": "Invalid IPv4 address of the range start", - "form_error_ip4_range_end_format": "Invalid IPv4 address of the range end", "form_error_ip4_gateway_format": "Invalid IPv4 address of the gateway", "form_error_ip6_format": "Invalid IPv6 address", "form_error_ip_format": "Invalid IP address", @@ -51,9 +49,8 @@ "out_of_range_error": "Must be out of range \"{{start}}\"-\"{{end}}\"", "lower_range_start_error": "Must be lower than range start", "greater_range_start_error": "Must be greater than range start", - "greater_range_end_error": "Must be greater than range end", "subnet_error": "Addresses must be in one subnet", - "gateway_or_subnet_invalid": "Subnet mask invalid", + "gateway_or_subnet_invalid": "Invalid subnet mask", "dhcp_form_gateway_input": "Gateway IP", "dhcp_form_subnet_input": "Subnet mask", "dhcp_form_range_title": "Range of IP addresses", diff --git a/client/src/components/Settings/Dhcp/FormDHCPv4.js b/client/src/components/Settings/Dhcp/FormDHCPv4.js index cb371f9f..1c3d9c60 100644 --- a/client/src/components/Settings/Dhcp/FormDHCPv4.js +++ b/client/src/components/Settings/Dhcp/FormDHCPv4.js @@ -74,7 +74,6 @@ const FormDHCPv4 = ({ className="form-control" placeholder={t(ipv4placeholders.subnet_mask)} validate={[ - validateIpv4, validateRequired, validateGatewaySubnetMask, ]} @@ -97,7 +96,6 @@ const FormDHCPv4 = ({ placeholder={t(ipv4placeholders.range_start)} validate={[ validateIpv4, - validateGatewaySubnetMask, validateIpForGatewaySubnetMask, ]} disabled={!isInterfaceIncludesIpv4} @@ -113,7 +111,6 @@ const FormDHCPv4 = ({ validate={[ validateIpv4, validateIpv4RangeEnd, - validateGatewaySubnetMask, validateIpForGatewaySubnetMask, ]} disabled={!isInterfaceIncludesIpv4} diff --git a/client/src/helpers/validators.js b/client/src/helpers/validators.js index ed274416..e7849639 100644 --- a/client/src/helpers/validators.js +++ b/client/src/helpers/validators.js @@ -77,11 +77,11 @@ export const validateNotInRange = (value, allValues) => { const { range_start, range_end } = allValues.v4; if (range_start && validateIpv4(range_start)) { - return 'form_error_ip4_range_start_format'; + return undefined; } if (range_end && validateIpv4(range_end)) { - return 'form_error_ip4_range_end_format'; + return undefined; } const isAboveMin = range_start && ip4ToInt(value) >= ip4ToInt(range_start); @@ -94,14 +94,6 @@ export const validateNotInRange = (value, allValues) => { }); } - if (!range_end && isAboveMin) { - return 'lower_range_start_error'; - } - - if (!range_start && isBelowMax) { - return 'greater_range_end_error'; - } - return undefined; }; @@ -118,7 +110,7 @@ export const validateGatewaySubnetMask = (_, allValues) => { const { subnet_mask, gateway_ip } = allValues.v4; if (validateIpv4(gateway_ip)) { - return 'form_error_ip4_gateway_format'; + return 'gateway_or_subnet_invalid'; } return parseSubnetMask(subnet_mask) ? undefined : 'gateway_or_subnet_invalid'; @@ -138,6 +130,10 @@ export const validateIpForGatewaySubnetMask = (value, allValues) => { gateway_ip, subnet_mask, } = allValues.v4; + if ((gateway_ip && validateIpv4(gateway_ip)) || (subnet_mask && validateIpv4(subnet_mask))) { + return undefined; + } + const subnetPrefix = parseSubnetMask(subnet_mask); if (!isIpInCidr(value, `${gateway_ip}/${subnetPrefix}`)) {