]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
Fix for bug 10743
authorAdolf Belka <ahb.ipfire@gmail.com>
Wed, 16 Dec 2020 12:33:22 +0000 (13:33 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Dec 2020 16:48:01 +0000 (16:48 +0000)
This adds in the option to have "deny known clients" in dhcpd.conf
This is applied to the range command so applies to the dynamic addresses
given.
If you have just a range statement say in blue then if you are not using
vlans you could have the situation where a known host in green might end
up getting a lease from the blue range. Here a deny known-clients makes
sense. Your range in this case would be limited to only unknown clients if
deny known-clients was selected.
dhcp WUI has been modified to add in this command. Error message has been
added to check that a range has been specified if the deny unknown clients
checkbox has been selected.
Language files updated with additional items (English, German & Dutch).

For more information on the history of this please see the bugzilla entry
Signed-off-by: Adolf Belka <ahb.ipfire@gmail.com>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
12 files changed:
doc/language_issues.en
doc/language_issues.es
doc/language_issues.fr
doc/language_issues.it
doc/language_issues.pl
doc/language_issues.ru
doc/language_issues.tr
doc/language_missings
html/cgi-bin/dhcp.cgi
langs/de/cgi-bin/de.pl
langs/en/cgi-bin/en.pl
langs/nl/cgi-bin/nl.pl

index b3c46de5ed037a3a57b894cc1e660e84635817fc..3955d3ae77bec7364e95a145086fc08b2250bcff 100644 (file)
@@ -574,6 +574,7 @@ WARNING: untranslated string: dhcp advopt value = Option value
 WARNING: untranslated string: dhcp allow bootp = Allow bootp clients
 WARNING: untranslated string: dhcp bootp pxe data = Enter optional bootp pxe data for this fixed lease
 WARNING: untranslated string: dhcp configuration = DHCP configuration
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
 WARNING: untranslated string: dhcp dns enable update = Enable DNS Update (RFC2136):
 WARNING: untranslated string: dhcp dns key name = Key Name
 WARNING: untranslated string: dhcp dns update = DNS Update
@@ -582,6 +583,7 @@ WARNING: untranslated string: dhcp dns update secret = Secret
 WARNING: untranslated string: dhcp server = DHCP Server
 WARNING: untranslated string: dhcp server disabled = DHCP server disabled.  Stopped.
 WARNING: untranslated string: dhcp server enabled = DHCP server enabled.  Restarting.
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: dhcp-options = DHCP push options
 WARNING: untranslated string: dial = Connect
 WARNING: untranslated string: dial profile = Connect with profile
index 9f62f03f25235670a9020bc4486afc1e7edb5706..2cd36a5a1cc649a5261b195d0dc6b994b5e60080 100644 (file)
@@ -886,11 +886,13 @@ WARNING: untranslated string: dh key move failed = Diffie-Hellman parameters mov
 WARNING: untranslated string: dh key warn = Creating DH-parameters with a length of 2048 bits takes up to several minutes. Lengths of 3072 or 4096 bits might needs several hours. Please be patient.
 WARNING: untranslated string: dh key warn1 = For weak systems or systems with little entropy, it is recommended to upload long Diffie-Hellman parameters by usage of the upload function.
 WARNING: untranslated string: dh parameter = Diffie-Hellman parameters
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
 WARNING: untranslated string: dhcp dns enable update = Enable DNS Update (RFC2136):
 WARNING: untranslated string: dhcp dns key name = Key Name
 WARNING: untranslated string: dhcp dns update = DNS Update
 WARNING: untranslated string: dhcp dns update algo = Algorithm
 WARNING: untranslated string: dhcp dns update secret = Secret
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: disable = Disable
 WARNING: untranslated string: disconnected = Disconnected
 WARNING: untranslated string: dl client arch insecure = Download insecure Client Package (zip)
index 90a7453609b137cc77bd21fd269a73cd0b78f837..279e1ba37d66850d713e6458c1e44e058018e3d9 100644 (file)
@@ -879,6 +879,8 @@ WARNING: translation string unused: zoneconf val vlan tag assignment error
 WARNING: translation string unused: zoneconf val zoneslave amount error
 WARNING: untranslated string: asn lookup failed = AS lookup failed
 WARNING: untranslated string: autonomous system = Autonomous System
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: dns enable safe-search youtube = Include YouTube in Safe Search
 WARNING: untranslated string: fwhost cust locationgrp = unknown string
 WARNING: untranslated string: fwhost err hostip = unknown string
index 62e4f99533b8d2dd246502891627535c0435e714..4ac4754dc74e996af14ecc523f8842bb1652d36b 100644 (file)
@@ -911,11 +911,13 @@ WARNING: untranslated string: crypto warning = Cryptographic warning
 WARNING: untranslated string: dangerous = Dangerous
 WARNING: untranslated string: default IP address = Default IP Address
 WARNING: untranslated string: desired = Desired
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
 WARNING: untranslated string: dhcp dns enable update = Enable DNS Update (RFC2136):
 WARNING: untranslated string: dhcp dns key name = Key Name
 WARNING: untranslated string: dhcp dns update = DNS Update
 WARNING: untranslated string: dhcp dns update algo = Algorithm
 WARNING: untranslated string: dhcp dns update secret = Secret
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: disable = Disable
 WARNING: untranslated string: disconnected = Disconnected
 WARNING: untranslated string: dl client arch insecure = Download insecure Client Package (zip)
index 9f62f03f25235670a9020bc4486afc1e7edb5706..2cd36a5a1cc649a5261b195d0dc6b994b5e60080 100644 (file)
@@ -886,11 +886,13 @@ WARNING: untranslated string: dh key move failed = Diffie-Hellman parameters mov
 WARNING: untranslated string: dh key warn = Creating DH-parameters with a length of 2048 bits takes up to several minutes. Lengths of 3072 or 4096 bits might needs several hours. Please be patient.
 WARNING: untranslated string: dh key warn1 = For weak systems or systems with little entropy, it is recommended to upload long Diffie-Hellman parameters by usage of the upload function.
 WARNING: untranslated string: dh parameter = Diffie-Hellman parameters
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
 WARNING: untranslated string: dhcp dns enable update = Enable DNS Update (RFC2136):
 WARNING: untranslated string: dhcp dns key name = Key Name
 WARNING: untranslated string: dhcp dns update = DNS Update
 WARNING: untranslated string: dhcp dns update algo = Algorithm
 WARNING: untranslated string: dhcp dns update secret = Secret
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: disable = Disable
 WARNING: untranslated string: disconnected = Disconnected
 WARNING: untranslated string: dl client arch insecure = Download insecure Client Package (zip)
index 5d16e0b1857ca6c20773bceff599f9907bd91884..a333d993942f8edd85fab330c470f77b68c3a693 100644 (file)
@@ -888,11 +888,13 @@ WARNING: untranslated string: dh key move failed = Diffie-Hellman parameters mov
 WARNING: untranslated string: dh key warn = Creating DH-parameters with a length of 2048 bits takes up to several minutes. Lengths of 3072 or 4096 bits might needs several hours. Please be patient.
 WARNING: untranslated string: dh key warn1 = For weak systems or systems with little entropy, it is recommended to upload long Diffie-Hellman parameters by usage of the upload function.
 WARNING: untranslated string: dh parameter = Diffie-Hellman parameters
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
 WARNING: untranslated string: dhcp dns enable update = Enable DNS Update (RFC2136):
 WARNING: untranslated string: dhcp dns key name = Key Name
 WARNING: untranslated string: dhcp dns update = DNS Update
 WARNING: untranslated string: dhcp dns update algo = Algorithm
 WARNING: untranslated string: dhcp dns update secret = Secret
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: disable = Disable
 WARNING: untranslated string: disconnected = Disconnected
 WARNING: untranslated string: disk access = Disk Access
index 26530a9233614c828794607ee946bd176b2ea93a..a080ee54fde6c9e8e14327ec78b523441954dda7 100644 (file)
@@ -894,6 +894,8 @@ WARNING: untranslated string: crypto warning = Cryptographic warning
 WARNING: untranslated string: dangerous = Dangerous
 WARNING: untranslated string: default IP address = Default IP Address
 WARNING: untranslated string: desired = Desired
+WARNING: untranslated string: dhcp deny known clients: = Deny known clients:
+WARNING: untranslated string: dhcp valid range required when deny known clients checked = Valid range required when "Deny known clients:" is checked
 WARNING: untranslated string: disable = Disable
 WARNING: untranslated string: disconnected = Disconnected
 WARNING: untranslated string: dns check servers = Check DNS Servers
index 12e3414028726fd1c68a87fa73324ac9746c5398..ad70d5241a277c924d4322587c295df2d1e43fc9 100644 (file)
 < desired
 < details
 < dh
+< dhcp deny known clients:
 < dhcp dns enable update
 < dhcp dns key name
 < dhcp dns update
 < dhcp dns update algo
 < dhcp dns update secret
+< dhcp valid range required when deny known clients checked
 < dh key move failed
 < dh key warn
 < dh key warn1
 < autonomous system
 < bewan adsl pci st
 < bewan adsl usb
+< dhcp deny known clients:
+< dhcp valid range required when deny known clients checked
 < dns enable safe-search youtube
 < g.dtm
 < g.lite
 < dangerous
 < default IP address
 < desired
+< dhcp deny known clients:
 < dhcp dns enable update
 < dhcp dns key name
 < dhcp dns update
 < dhcp dns update algo
 < dhcp dns update secret
+< dhcp valid range required when deny known clients checked
 < disable
 < Disabled
 < disconnected
 < desired
 < details
 < dh
+< dhcp deny known clients:
 < dhcp dns enable update
 < dhcp dns key name
 < dhcp dns update
 < dhcp dns update algo
 < dhcp dns update secret
+< dhcp valid range required when deny known clients checked
 < dh key move failed
 < dh key warn
 < dh key warn1
 < desired
 < details
 < dh
+< dhcp deny known clients:
 < dhcp dns enable update
 < dhcp dns key name
 < dhcp dns update
 < dhcp dns update algo
 < dhcp dns update secret
+< dhcp valid range required when deny known clients checked
 < dh key move failed
 < dh key warn
 < dh key warn1
 < dangerous
 < default IP address
 < desired
+< dhcp deny known clients:
+< dhcp valid range required when deny known clients checked
 < disable
 < Disabled
 < disconnected
index 8c57c675dcd14ca341636dfd64ee0275bcca7d49..2ebdde8187ea11ce136ead153ed5e2e1fceba5af 100644 (file)
@@ -74,6 +74,7 @@ foreach my $itf (@ITFs) {
     $dhcpsettings{"DNS_UPDATE_KEY_NAME_${itf}"} = '';
     $dhcpsettings{"DNS_UPDATE_KEY_SECRET_${itf}"} = '';
     $dhcpsettings{"DNS_UPDATE_KEY_ALGO_${itf}"} = '';
+    $dhcpsettings{"DENY_KNOWN_CLIENTS_${itf}"} = 'off';
 }
 
 $dhcpsettings{'SORT_FLEASELIST'} = 'FIPADDR';
@@ -175,9 +176,16 @@ if ($dhcpsettings{'ACTION'} eq $Lang::tr{'save'}) {
                }
            }
 
+           if ($dhcpsettings{"DENY_KNOWN_CLIENTS_${itf}"} eq 'on') {
+               if (($dhcpsettings{"START_ADDR_${itf}"}) eq '' && ($dhcpsettings{"END_ADDR_${itf}"}) eq '') {
+                       $errormessage = "DHCP on ${itf}: " . $Lang::tr{'dhcp valid range required when deny known clients checked'};
+                       goto ERROR;
+           }
+
            if (!($dhcpsettings{"DEFAULT_LEASE_TIME_${itf}"} =~ /^\d+$/)) {
                $errormessage = "DHCP on ${itf}: " . $Lang::tr{'invalid default lease time'} . $dhcpsettings{'DEFAULT_LEASE_TIME_${itf}'};
                goto ERROR;
+               }
            }
 
            if (!($dhcpsettings{"MAX_LEASE_TIME_${itf}"} =~ /^\d+$/)) {
@@ -548,6 +556,7 @@ foreach my $itf (@ITFs) {
     my %checked=();
     $checked{'ENABLE'}{'on'} = ( $dhcpsettings{"ENABLE_${itf}"} ne 'on') ? '' : "checked='checked'";
     $checked{'ENABLEBOOTP'}{'on'} = ( $dhcpsettings{"ENABLEBOOTP_${itf}"} ne 'on') ? '' : "checked='checked'";
+    $checked{'DENY_KNOWN_CLIENTS'}{'on'} = ( $dhcpsettings{"DENY_KNOWN_CLIENTS_${itf}"} ne 'on') ? '' : "checked='checked'";
 
     if ($netsettings{"${itf}_DEV"} ne '' ) { # Show only defined interface
        my $lc_itf=lc($itf);
@@ -563,6 +572,9 @@ print <<END
     <td width='25%'><input type='text' name='START_ADDR_${itf}' value='$dhcpsettings{"START_ADDR_${itf}"}' /></td>
     <td width='25%' class='base'>$Lang::tr{'end address'}&nbsp;<img src='/blob.gif' alt='*' /></td>
     <td width='25%'><input type='text' name='END_ADDR_${itf}' value='$dhcpsettings{"END_ADDR_${itf}"}' /></td>
+</tr><tr>
+    <td class='base'>$Lang::tr{'dhcp deny known clients:'}</td>
+    <td><input type='checkbox' name='DENY_KNOWN_CLIENTS_${itf}' $checked{'DENY_KNOWN_CLIENTS'}{'on'} /></td>
 </tr><tr>
     <td class='base'>$Lang::tr{'default lease time'}&nbsp;<img src='/blob.gif' alt='*' /></td>
     <td><input type='text' name='DEFAULT_LEASE_TIME_${itf}' value='$dhcpsettings{"DEFAULT_LEASE_TIME_${itf}"}' /></td>
@@ -1264,7 +1276,12 @@ sub buildconf {
        if ($dhcpsettings{"ENABLE_${itf}"} eq 'on' ){
            print FILE "subnet " . $netsettings{"${itf}_NETADDRESS"} . " netmask ". $netsettings{"${itf}_NETMASK"} . " #$itf\n";
            print FILE "{\n";
-           print FILE "\trange " . $dhcpsettings{"START_ADDR_${itf}"} . ' ' . $dhcpsettings{"END_ADDR_${itf}"}.";\n" if ($dhcpsettings{"START_ADDR_${itf}"});
+           if ($dhcpsettings{"START_ADDR_${itf}"}) {
+               print FILE "pool {\n";
+               print FILE "\trange " . $dhcpsettings{"START_ADDR_${itf}"} . ' ' . $dhcpsettings{"END_ADDR_${itf}"}.";\n";
+               print FILE "\tdeny known-clients;\n" if ($dhcpsettings{"DENY_KNOWN_CLIENTS_${itf}"} eq 'on');
+               print FILE "     }\n"; # pool
+           }
            print FILE "\toption subnet-mask "   . $netsettings{"${itf}_NETMASK"} . ";\n";
            print FILE "\toption domain-name \"" . $dhcpsettings{"DOMAIN_NAME_${itf}"} . "\";\n";
            print FILE "\toption routers " . $netsettings{"${itf}_ADDRESS"} . ";\n";
index 2fb46e74181062136ae5ce9e59047ed3b936704f..38c9783f830d1a028a00531afa98fed7921db8b5 100644 (file)
 'dhcp bootp pxe data' => 'Geben Sie optionale BOOTP-PXE-Daten für diese feste Zuordnung ein',
 'dhcp configuration' => 'DHCP-Konfiguration',
 'dhcp create fixed leases' => 'Feste Zuordnungen erzeugen',
+'dhcp deny known clients:' => 'Bekannte Clients verweigern:',
 'dhcp dns enable update' => 'DNS-Update nach RFC 2136 aktivieren:',
 'dhcp dns key name' => 'Schlüsselname',
 'dhcp dns update' => 'DNS-Update',
 'dhcp server' => 'DHCP-Server',
 'dhcp server disabled' => 'DHCP-Server deaktiviert. Angehalten.',
 'dhcp server enabled' => 'DHCP-Server aktiviert. Starte neu.',
+'dhcp valid range required when deny known clients checked' => 'Gültiger Bereich erforderlich, wenn "Bekannte Clients verweigern:" aktiviert ist',
 'dhcp-options' => 'DHCP push Optionen',
 'dial' => 'Verbinden',
 'dial profile' => 'Verbinde mit Profil',
index b5284effa1430559ddd6b36cc4e140b93b450854..5009132404a2bed00dc5add4a1b6741224e5bb89 100644 (file)
 'dhcp bootp pxe data' => 'Enter optional bootp pxe data for this fixed lease',
 'dhcp configuration' => 'DHCP configuration',
 'dhcp create fixed leases' => 'Create fixed leases',
+'dhcp deny known clients:' => 'Deny known clients:',
 'dhcp dns enable update' => 'Enable DNS Update (RFC2136):',
 'dhcp dns key name' => 'Key Name',
 'dhcp dns update' => 'DNS Update',
 'dhcp server disabled on blue interface' => 'DHCP server disabled on BLUE interface',
 'dhcp server enabled' => 'DHCP server enabled.  Restarting.',
 'dhcp server enabled on blue interface' => 'DHCP server enabled on BLUE interface',
+'dhcp valid range required when deny known clients checked' => 'Valid range required when "Deny known clients:" is checked',
 'dhcp-options' => 'DHCP push options',
 'dial' => 'Connect',
 'dial profile' => 'Connect with profile',
index 53341a6f8f7ee4f12fa136f386383f1da7626552..191a16927ceca36459a8e2bec14cd9ec00c4ade2 100644 (file)
 'dhcp bootp pxe data' => 'Voer optionele bootp pxe data in voor deze vaste lease',
 'dhcp configuration' => 'DHCP configuratie',
 'dhcp create fixed leases' => 'Aanmaken vaste leases',
+'dhcp deny known clients:' => 'Bekende clients weigeren:',
 'dhcp fixed lease err1' => 'Voor een vaste lease moet u het MAC-adres of de hostnaam invoeren, of beide.',
 'dhcp fixed lease help1' => 'IP-adressen mogen ook als FQDN worden ingevoerd',
 'dhcp mode' => 'DHCP',
 'dhcp server disabled on blue interface' => 'DHCP server uitgeschakeld op de BLAUWE interface',
 'dhcp server enabled' => 'DHCP server ingeschakeld. Herstarten.',
 'dhcp server enabled on blue interface' => 'DHCP server ingeschakeld op de BLAUWE interface',
+'dhcp valid range required when deny known clients checked' => 'Geldig bereik wanneer "Bekende clients weigeren:" is aangevinkt',
 'dhcp-options' => 'DHCP push opties',
 'dial' => 'Verbind',
 'dial profile' => 'Verbind met profile',