Pull request: 4698 Gateway IP in DHCP Lease

Closes #4698.

Squashed commit of the following:

commit 6be0caee58926f8cea1e10650fbde0c8d97d0dac
Author: Ildar Kamalov <ik@adguard.com>
Date:   Fri Jul 8 13:41:50 2022 +0300

    update translation

commit e0370656d05e8463d73ea73568cae81187c6b2e3
Author: Ildar Kamalov <ik@adguard.com>
Date:   Fri Jul 8 13:40:54 2022 +0300

    client: validate static lease ip

commit 7f4d00f9f3a54dc93ce5d5c45e9c21745f6e39d1
Merge: 2ee79626 77e5e27d
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Fri Jul 8 13:20:15 2022 +0300

    Merge branch 'master' into 4698-lease-with-gateway

commit 2ee79626a1b0c7b113dbd22ba4ef6e85ea9913ec
Merge: 471b96b8 3505ce87
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Thu Jul 7 19:34:33 2022 +0300

    Merge branch 'master' into 4698-lease-with-gateway

commit 471b96b81da8920c1e71b7110050154f912677d2
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Thu Jul 7 16:07:23 2022 +0300

    dhcpd: imp docs

commit 67dd6c76f7d2df4712a57281e0f40f2ee1a1efa2
Author: Eugene Burkov <E.Burkov@AdGuard.COM>
Date:   Thu Jul 7 15:48:47 2022 +0300

    dhcpd: restrict gateway ip for lease
This commit is contained in:
Eugene Burkov
2022-07-08 15:17:47 +03:00
parent 77e5e27d75
commit a832987f7c
10 changed files with 120 additions and 42 deletions

View File

@@ -47,6 +47,7 @@
"form_error_server_name": "Invalid server name",
"form_error_subnet": "Subnet \"{{cidr}}\" does not contain the IP address \"{{ip}}\"",
"form_error_positive": "Must be greater than 0",
"form_error_gateway_ip": "Lease can't have the IP address of the gateway",
"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",

View File

@@ -10,6 +10,7 @@ import {
validateMac,
validateRequiredValue,
validateIpv4InCidr,
validateIpGateway,
} from '../../../../helpers/validators';
import { FORM_NAME } from '../../../../helpers/constants';
import { toggleLeaseModal } from '../../../../actions';
@@ -57,6 +58,7 @@ const Form = ({
validateRequiredValue,
validateIpv4,
validateIpv4InCidr,
validateIpGateway,
]}
/>
</div>
@@ -101,6 +103,7 @@ Form.propTypes = {
ip: PropTypes.string.isRequired,
hostname: PropTypes.string.isRequired,
cidr: PropTypes.string.isRequired,
gatewayIp: PropTypes.string,
}),
pristine: PropTypes.bool.isRequired,
handleSubmit: PropTypes.func.isRequired,

View File

@@ -13,6 +13,7 @@ const Modal = ({
cidr,
rangeStart,
rangeEnd,
gatewayIp,
}) => {
const dispatch = useDispatch();
@@ -42,6 +43,7 @@ const Modal = ({
cidr,
rangeStart,
rangeEnd,
gatewayIp,
}}
onSubmit={handleSubmit}
processingAdding={processingAdding}
@@ -61,6 +63,7 @@ Modal.propTypes = {
cidr: PropTypes.string.isRequired,
rangeStart: PropTypes.string,
rangeEnd: PropTypes.string,
gatewayIp: PropTypes.string,
};
export default withTranslation()(Modal);

View File

@@ -24,6 +24,7 @@ const StaticLeases = ({
cidr,
rangeStart,
rangeEnd,
gatewayIp,
}) => {
const [t] = useTranslation();
const dispatch = useDispatch();
@@ -106,6 +107,7 @@ const StaticLeases = ({
cidr={cidr}
rangeStart={rangeStart}
rangeEnd={rangeEnd}
gatewayIp={gatewayIp}
/>
</>
);
@@ -119,6 +121,7 @@ StaticLeases.propTypes = {
cidr: PropTypes.string.isRequired,
rangeStart: PropTypes.string,
rangeEnd: PropTypes.string,
gatewayIp: PropTypes.string,
};
cellWrap.propTypes = {

View File

@@ -278,6 +278,7 @@ const Dhcp = () => {
cidr={cidr}
rangeStart={dhcp?.values?.v4?.range_start}
rangeEnd={dhcp?.values?.v4?.range_end}
gatewayIp={dhcp?.values?.v4?.gateway_ip}
/>
<div className="btn-list mt-2">
<button

View File

@@ -339,3 +339,14 @@ export const validatePasswordLength = (value) => {
}
return undefined;
};
/**
* @param value {string}
* @returns {Function}
*/
export const validateIpGateway = (value, allValues) => {
if (value === allValues.gatewayIp) {
return i18next.t('form_error_gateway_ip');
}
return undefined;
};