* [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css @ 2023-02-13 17:55 Adolf Belka 2023-02-13 17:55 ` [PATCH 2/2] dhcp.cgi: Fix bug#10629 - Highlight fixed IP's in dynamic range in red Adolf Belka 2023-02-13 21:42 ` [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css Bernhard Bitsch 0 siblings, 2 replies; 4+ messages in thread From: Adolf Belka @ 2023-02-13 17:55 UTC (permalink / raw) To: development [-- Attachment #1: Type: text/plain, Size: 3703 bytes --] - bgcolor was deprecated in HTML 4.01 and is not supported by HTML 5 - The orange colour for IP's that are outside the IPFire green and blue subnets does not work on any browser I am using. - I used the CSS approach that @Leo used in the Zone Configuration cgi page - This patch changes all existing bgcolor entries to the css based background-color - Tested on my vm testbed and confirmed to work. The Orange colour for IP's outside of the subnet now shows up. Tested-by: Adolf Belka <adolf.belka(a)ipfire.org> Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org> --- html/cgi-bin/dhcp.cgi | 44 ++++++++++++++++++++++++++++++++----------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/html/cgi-bin/dhcp.cgi b/html/cgi-bin/dhcp.cgi index 125713285..2d162b204 100644 --- a/html/cgi-bin/dhcp.cgi +++ b/html/cgi-bin/dhcp.cgi @@ -113,6 +113,27 @@ foreach my $itf (@ITFs) { &General::readhash("${General::swroot}/time/settings", \%timesettings); &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color); +###--- HTML HEAD ---### +my $extraHead = <<END +<style> + .row-color20 { + background-color: $color{'color20'}; + } + .row-color22 { + background-color: $color{'color22'}; + } + .row-colouryellow { + background-color: $Header::colouryellow; + } + .cell-orange { + background-color: orange; + } +</style> +END +; +###--- END HTML HEAD ---### + + #Get GUI values &Header::getcgihash(\%dhcpsettings); @@ -547,7 +568,8 @@ if ($dhcpsettings{'ACTION'} eq '' ) { # First launch from GUI $dhcpsettings{'ADVOPT_ENABLED'} = 'on'; } -&Header::openpage($Lang::tr{'dhcp configuration'}, 1, ''); +### START PAGE ### +&Header::openpage($Lang::tr{'dhcp configuration'}, 1, $extraHead); &Header::openbigbox('100%', 'left', '', $errormessage); if ($errormessage) { @@ -843,11 +865,11 @@ foreach my $line (@current1) { } if ($dhcpsettings{'KEY1'} eq $key) { - print "<tr bgcolor='${Header::colouryellow}'>"; + print "<tr class='row-colouryellow'>"; } elsif ($key % 2) { - print "<tr bgcolor='$color{'color22'}'>"; + print "<tr class='row-color22'>"; } else { - print "<tr bgcolor='$color{'color20'}'>"; + print "<tr class='row-color20'>"; } print <<END @@ -1069,13 +1091,13 @@ foreach my $line (@current2) { if ($dhcpsettings{'KEY2'} eq $key) { print "<tr>"; - $col="bgcolor='${Header::colouryellow}'"; + $col="class='row-colouryellow'"; } elsif ($key % 2) { print "<tr>"; - $col="bgcolor='$color{'color20'}'"; + $col="class='row-color20'"; } else { print "<tr>"; - $col="bgcolor='$color{'color22'}'"; + $col="class='row-color22'"; } my $TAG0 = ''; my $TAG1 = ''; @@ -1091,12 +1113,12 @@ foreach my $line (@current2) { $TAG3 = '</b>'; } if ($ipoutside{$temp[1]} > 0) { - $TAG4 = "bgcolor='orange'" if ($dhcpsettings{'KEY2'} ne $key); + $TAG4 = "class='cell-orange'" if ($dhcpsettings{'KEY2'} ne $key); } print <<END <td align='center' $col>$TAG2$temp[0]$TAG3</td> -<td align='center' $col $TAG4>$TAG0$temp[1]$TAG1</td> +<td align='center' $TAG4 $col>$TAG0$temp[1]$TAG1</td> <td align='center' $col>$temp[6] </td> <td align='center' $col>$temp[3] </td> <td align='center' $col>$temp[4] </td> @@ -1153,8 +1175,8 @@ print <<END </tr> <tr> <td> </td> - <td bgcolor='orange'> </td> - <td class='base'>$Lang::tr{'ip address outside subnets'}</td> + <td> </td> + <td class='base cell-orange'>$Lang::tr{'ip address outside subnets'}</td> <td> </td> <td> </td> $dup -- 2.39.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 2/2] dhcp.cgi: Fix bug#10629 - Highlight fixed IP's in dynamic range in red 2023-02-13 17:55 [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css Adolf Belka @ 2023-02-13 17:55 ` Adolf Belka 2023-02-13 22:34 ` Bernhard Bitsch 2023-02-13 21:42 ` [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css Bernhard Bitsch 1 sibling, 1 reply; 4+ messages in thread From: Adolf Belka @ 2023-02-13 17:55 UTC (permalink / raw) To: development [-- Attachment #1: Type: text/plain, Size: 21915 bytes --] - This patch marks all IP's that are in the Fixed list but are also in the dynamic range that has been defined, in red. - Additional function created to check if an ip address is in a defined range. - Added an additional key item under the Fixed Leases table for Fixed IP in dynamic range - Added line to English Language file for this key item. - ./make lang run before commit. - Tested in vm testbed and confirmed that any ip address in the Fixed Leases table that is in the defined dynamic range is highlighted in red - This uses the css background-color appoach from the first patch in this set. - This patch only highlights those IP's that overlap in red but does nothing more. So a user can still create new ones if they want but they will all show up in red. - I may come back at a later time with a further patch that allows IP's that overlap but are in the existing leases file to continue being used and edited but prevents new IP's that overlap from being created. - This patch flags up if people are doing things that they shouldn't be doing but allows them to continue doing so without changing anything if they don't want to. Tested-by: Adolf Belka <adolf.belka(a)ipfire.org> Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org> --- config/cfgroot/network-functions.pl | 24 +++++++++++++++++++++++ doc/language_issues.de | 2 +- doc/language_issues.en | 2 +- doc/language_issues.es | 2 ++ doc/language_issues.fr | 15 ++++++--------- doc/language_issues.it | 2 +- doc/language_issues.nl | 2 +- doc/language_issues.pl | 2 +- doc/language_issues.ru | 2 +- doc/language_issues.tr | 2 +- doc/language_missings | 15 ++++++++------- html/cgi-bin/dhcp.cgi | 30 ++++++++++++++++++++++------- langs/en/cgi-bin/en.pl | 1 + 13 files changed, 71 insertions(+), 30 deletions(-) diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl index 4ac6d8670..7b38cfac7 100644 --- a/config/cfgroot/network-functions.pl +++ b/config/cfgroot/network-functions.pl @@ -307,6 +307,24 @@ sub ip_address_in_network($$) { return (($address_bin >= $network_bin) && ($address_bin <= $broadcast_bin)); } +# Returns True if $ipaddress is within $ipstart and $ipend range. +sub ip_address_in_range($$) { + my $ipaddress = shift; + my $ipstart = shift; + my $ipend = shift; + + my $ipaddress_bin = &ip2bin($ipaddress); + return undef unless (defined $ipaddress_bin); + + my $ipstart_bin = &ip2bin($ipstart); + return undef unless (defined $ipstart_bin); + + my $ipend_bin = &ip2bin($ipend); + return undef unless (defined $ipend_bin); + + return (($ipaddress_bin >= $ipstart_bin) && ($ipaddress_bin <= $ipend_bin)); +} + sub setup_upstream_proxy() { my %proxysettings = (); &General::readhash("${General::swroot}/proxy/settings", \%proxysettings); @@ -666,6 +684,12 @@ sub testsuite() { $result = &ip_address_in_network("192.168.30.11", "0.0.0.0/8"); assert('ip_address_in_network("192.168.30.11", "0.0.0.0/8")', !$result); + $result = &ip_address_in_range("192.168.30.11", "192.168.30.10", "192.168.30.20"); + assert('ip_address_in_range("192.168.30.11", "192.168.30.10", "192.168.30.20")', $result); + + $result = &ip_address_in_range("192.168.30.21", "192.168.30.10", "192.168.30.20"); + assert('ip_address_in_range("192.168.30.21", "192.168.30.10", "192.168.30.20")', !$result); + print "Testsuite completed successfully!\n"; return 0; diff --git a/doc/language_issues.de b/doc/language_issues.de index 88c7879be..392416192 100644 --- a/doc/language_issues.de +++ b/doc/language_issues.de @@ -883,7 +883,7 @@ WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) WARNING: untranslated string: desired = Desired -WARNING: untranslated string: dh parameter = unknown string +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: disable = Disable WARNING: untranslated string: download apple profile = Download Apple Configuration Profile WARNING: untranslated string: enable = Enable diff --git a/doc/language_issues.en b/doc/language_issues.en index c29e3bed6..08fda35b7 100644 --- a/doc/language_issues.en +++ b/doc/language_issues.en @@ -574,7 +574,6 @@ WARNING: untranslated string: details = Details WARNING: untranslated string: device = Device WARNING: untranslated string: devices on blue = Devices on BLUE WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string WARNING: untranslated string: dhcp advopt add = Add a DHCP option WARNING: untranslated string: dhcp advopt added = DHCP option added WARNING: untranslated string: dhcp advopt blank value = DHCP Option value cannot be empty. @@ -601,6 +600,7 @@ 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dhcp make fixed lease = Add to fix leases WARNING: untranslated string: dhcp server = DHCP Server WARNING: untranslated string: dhcp server disabled = DHCP server disabled. Stopped. diff --git a/doc/language_issues.es b/doc/language_issues.es index 0bd390d5d..ffe423bd1 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -228,6 +228,7 @@ WARNING: translation string unused: dh key move failed WARNING: translation string unused: dh key warn WARNING: translation string unused: dh key warn1 WARNING: translation string unused: dh name is invalid +WARNING: translation string unused: dh parameter WARNING: translation string unused: dhcp base ip fixed lease WARNING: translation string unused: dhcp create fixed leases WARNING: translation string unused: dhcp fixed lease err1 @@ -943,6 +944,7 @@ WARNING: untranslated string: access point name is invalid = Access Point Name i WARNING: untranslated string: access point name is required = Access Point Name is required WARNING: untranslated string: bytes = unknown string WARNING: untranslated string: cpu frequency = CPU frequency +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dns servers = DNS Servers WARNING: untranslated string: error message = unknown string WARNING: untranslated string: fwhost cust locationgrp = unknown string diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 56d69d86e..cb06f0ab3 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -392,7 +392,6 @@ WARNING: translation string unused: generatepolicy WARNING: translation string unused: generatereport WARNING: translation string unused: genkey WARNING: translation string unused: green interface -WARNING: translation string unused: guaranteed bandwith WARNING: translation string unused: guest ok WARNING: translation string unused: gz with key WARNING: translation string unused: harddisk temperature graphs @@ -404,6 +403,7 @@ WARNING: translation string unused: host deny WARNING: translation string unused: hostname and domain already in use WARNING: translation string unused: hour-graph WARNING: translation string unused: hours2 +WARNING: translation string unused: ibod for dual isdn only WARNING: translation string unused: icmp selected but no type WARNING: translation string unused: icmp type WARNING: translation string unused: id @@ -453,6 +453,10 @@ WARNING: translation string unused: ipblocklist category scanner WARNING: translation string unused: ipfire side WARNING: translation string unused: ipsec no connections WARNING: translation string unused: iptable rules +WARNING: translation string unused: isdn +WARNING: translation string unused: isdn settings +WARNING: translation string unused: isdn1 +WARNING: translation string unused: isdn2 WARNING: translation string unused: javascript menu error1 WARNING: translation string unused: javascript menu error2 WARNING: translation string unused: kernel version @@ -908,15 +912,11 @@ WARNING: translation string unused: zoneconf val zoneslave amount error WARNING: untranslated string: access point name = Access Point Name WARNING: untranslated string: access point name is invalid = Access Point Name is invalid WARNING: untranslated string: access point name is required = Access Point Name is required -WARNING: untranslated string: advproxy errmsg invalid url = Invalid URL WARNING: untranslated string: core notice 3 = available. -WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string -WARNING: untranslated string: email recipient invalid = Invalid email recipient +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: error message = unknown string WARNING: untranslated string: fwhost cust locationgrp = unknown string WARNING: untranslated string: fwhost err hostip = unknown string -WARNING: untranslated string: guaranteed bandwidth = Guaranteed bandwidth WARNING: untranslated string: guardian block a host = unknown string WARNING: untranslated string: guardian block httpd brute-force = unknown string WARNING: untranslated string: guardian block ssh brute-force = unknown string @@ -947,9 +947,6 @@ WARNING: untranslated string: guardian logtarget_syslog = unknown string WARNING: untranslated string: guardian no entries = unknown string WARNING: untranslated string: guardian service = unknown string WARNING: untranslated string: pakfire ago = ago. -WARNING: untranslated string: retbleed = Retbleed WARNING: untranslated string: route config changed = unknown string WARNING: untranslated string: routing config added = unknown string WARNING: untranslated string: routing config changed = unknown string -WARNING: untranslated string: service boot setting unavailable = No valid runlevel symlink was found for the initscript of this service. -WARNING: untranslated string: show dh = Show Diffie-Hellman parameters diff --git a/doc/language_issues.it b/doc/language_issues.it index 9999f947c..dd794f57a 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -940,13 +940,13 @@ WARNING: untranslated string: dangerous = Dangerous WARNING: untranslated string: default IP address = Default IP Address WARNING: untranslated string: desired = Desired WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dhcp make fixed lease = Add to fix leases 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 diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 14a7b420e..4f100abd2 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -943,12 +943,12 @@ WARNING: untranslated string: default = Default WARNING: untranslated string: default IP address = Default IP Address WARNING: untranslated string: desired = Desired WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dhcp make fixed lease = Add to fix leases WARNING: untranslated string: disable = Disable WARNING: untranslated string: disconnected = Disconnected diff --git a/doc/language_issues.pl b/doc/language_issues.pl index a53a208d9..e91e62c5b 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -915,13 +915,13 @@ WARNING: untranslated string: default IP address = Default IP Address WARNING: untranslated string: desired = Desired WARNING: untranslated string: details = Details WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dhcp make fixed lease = Add to fix leases 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 diff --git a/doc/language_issues.ru b/doc/language_issues.ru index c5dc1aa61..7dd1a63d7 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -911,13 +911,13 @@ WARNING: untranslated string: default IP address = Default IP Address WARNING: untranslated string: desired = Desired WARNING: untranslated string: details = Details WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dhcp make fixed lease = Add to fix leases 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 diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 552082a96..3443b1f1a 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -926,8 +926,8 @@ WARNING: untranslated string: dangerous = Dangerous WARNING: untranslated string: default IP address = Default IP Address WARNING: untranslated string: desired = Desired WARNING: untranslated string: dh = Diffie-Hellman-Parameter -WARNING: untranslated string: dh parameter = unknown string WARNING: untranslated string: dhcp deny known clients: = Deny known clients: +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range WARNING: untranslated string: dhcp make fixed lease = Add to fix leases 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 diff --git a/doc/language_missings b/doc/language_missings index 65d38b422..78b9e8a2d 100644 --- a/doc/language_missings +++ b/doc/language_missings @@ -47,6 +47,7 @@ < could not connect to www ipfire org < cryptographic settings < desired +< dhcp fixed ip address in dynamic range < dhcp server disabled on blue interface < dhcp server enabled on blue interface < disable @@ -102,6 +103,7 @@ < access point name is required < addon < cpu frequency +< dhcp fixed ip address in dynamic range < dns servers < hardware vulnerabilities < invalid ip or hostname @@ -115,18 +117,12 @@ < access point name < access point name is invalid < access point name is required -< advproxy errmsg invalid url < ansi t1.483 < bewan adsl pci st < bewan adsl usb -< dh -< email recipient invalid +< dhcp fixed ip address in dynamic range < g.dtm < g.lite -< guaranteed bandwidth -< retbleed -< service boot setting unavailable -< show dh < upload fcdsl.o ############################################################################ # Checking cgi-bin translations for language: it # @@ -252,6 +248,7 @@ < dhcp dns update < dhcp dns update algo < dhcp dns update secret +< dhcp fixed ip address in dynamic range < dhcp make fixed lease < dhcp valid range required when deny known clients checked < disable @@ -756,6 +753,7 @@ < dhcp dns update < dhcp dns update algo < dhcp dns update secret +< dhcp fixed ip address in dynamic range < dhcp make fixed lease < disable < Disabled @@ -1353,6 +1351,7 @@ < dhcp dns update < dhcp dns update algo < dhcp dns update secret +< dhcp fixed ip address in dynamic range < dhcp make fixed lease < dhcp valid range required when deny known clients checked < disable @@ -2330,6 +2329,7 @@ < dhcp dns update < dhcp dns update algo < dhcp dns update secret +< dhcp fixed ip address in dynamic range < dhcp make fixed lease < dhcp valid range required when deny known clients checked < disable @@ -3173,6 +3173,7 @@ < desired < dh < dhcp deny known clients: +< dhcp fixed ip address in dynamic range < dhcp make fixed lease < dhcp valid range required when deny known clients checked < disable diff --git a/html/cgi-bin/dhcp.cgi b/html/cgi-bin/dhcp.cgi index 2d162b204..1b1102932 100644 --- a/html/cgi-bin/dhcp.cgi +++ b/html/cgi-bin/dhcp.cgi @@ -127,6 +127,9 @@ my $extraHead = <<END } .cell-orange { background-color: orange; + } + .cell-red { + background-color: red; } </style> END @@ -1042,8 +1045,9 @@ my $ipdup = 0; my %ipinuse = (); my %macdupl = (); # Duplicate MACs have to be on different subnets my %ipoutside = (); +my %ipinrange = (); -# mark duplicate ip or duplicate MAC +# mark duplicate IP, duplicate MAC or IP in dynamic range foreach my $line (@current2) { my @temp = split(/\,/,$line); $macdupl{$temp[0]} += 1; @@ -1054,14 +1058,21 @@ foreach my $line (@current2) { if ($ipinuse{$temp[1]} > 1) { $ipdup = 1; # Flag up duplicates for use later } - # Mark IP addresses outwith known subnets $ipoutside{$temp[1]} = 1; + $ipinrange{$temp[1]} = 0; foreach my $itf (@ITFs) { - if ( &General::IpInSubnet($temp[1], - $netsettings{"${itf}_NETADDRESS"}, - $netsettings{"${itf}_NETMASK"})) { - $ipoutside{$temp[1]} = 0; - } + # Mark IP addresses outwith known subnets + if ( &General::IpInSubnet($temp[1], + $netsettings{"${itf}_NETADDRESS"}, + $netsettings{"${itf}_NETMASK"})) { + $ipoutside{$temp[1]} = 0; + } + # Mark IP addresses that overlap with dynamic range + if (&Network::ip_address_in_range($temp[1], + $dhcpsettings{"START_ADDR_${itf}"}, + $dhcpsettings{"END_ADDR_${itf}"})) { + $ipinrange{$temp[1]} = 1; + } } } @@ -1115,6 +1126,9 @@ foreach my $line (@current2) { if ($ipoutside{$temp[1]} > 0) { $TAG4 = "class='cell-orange'" if ($dhcpsettings{'KEY2'} ne $key); } + if ($ipinrange{$temp[1]} > 0) { + $TAG4 = "class='cell-red'" if ($dhcpsettings{'KEY2'} ne $key); + } print <<END <td align='center' $col>$TAG2$temp[0]$TAG3</td> @@ -1177,6 +1191,8 @@ print <<END <td> </td> <td> </td> <td class='base cell-orange'>$Lang::tr{'ip address outside subnets'}</td> + <td>  </td> + <td class='base cell-red'>$Lang::tr{'dhcp fixed ip address in dynamic range'}</td> <td> </td> <td> </td> $dup diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index 80753b841..5a72f53b8 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -827,6 +827,7 @@ 'dhcp dns update' => 'DNS Update', 'dhcp dns update algo' => 'Algorithm', 'dhcp dns update secret' => 'Secret', +'dhcp fixed ip address in dynamic range' => 'Fixed IP Address in dynamic range', 'dhcp fixed lease err1' => 'For a fix lease you have to enter the MAC address or the hostname, or you enter both.', 'dhcp fixed lease help1' => 'IP Addresses might be entered as FQDN', 'dhcp make fixed lease' => 'Add to fix leases', -- 2.39.1 ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 2/2] dhcp.cgi: Fix bug#10629 - Highlight fixed IP's in dynamic range in red 2023-02-13 17:55 ` [PATCH 2/2] dhcp.cgi: Fix bug#10629 - Highlight fixed IP's in dynamic range in red Adolf Belka @ 2023-02-13 22:34 ` Bernhard Bitsch 0 siblings, 0 replies; 4+ messages in thread From: Bernhard Bitsch @ 2023-02-13 22:34 UTC (permalink / raw) To: development [-- Attachment #1: Type: text/plain, Size: 23349 bytes --] Thx for this patch. It resolves a problem, which shows up from time to time. It allows some freedom in defining fixed leases ( without interpretation of sense ), but marks this exception of the 'IPFire philosophy'. Bernhard Reviewed-by: Bernhard Bitsch <bbitsch(a)ipfire.org> Am 13.02.2023 um 18:55 schrieb Adolf Belka: > - This patch marks all IP's that are in the Fixed list but are also in the dynamic range > that has been defined, in red. > - Additional function created to check if an ip address is in a defined range. > - Added an additional key item under the Fixed Leases table for Fixed IP in dynamic range > - Added line to English Language file for this key item. > - ./make lang run before commit. > - Tested in vm testbed and confirmed that any ip address in the Fixed Leases table that > is in the defined dynamic range is highlighted in red > - This uses the css background-color appoach from the first patch in this set. > - This patch only highlights those IP's that overlap in red but does nothing more. So a > user can still create new ones if they want but they will all show up in red. > - I may come back at a later time with a further patch that allows IP's that overlap but > are in the existing leases file to continue being used and edited but prevents new IP's > that overlap from being created. > - This patch flags up if people are doing things that they shouldn't be doing but allows > them to continue doing so without changing anything if they don't want to. > > Tested-by: Adolf Belka <adolf.belka(a)ipfire.org> > Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org> > --- > config/cfgroot/network-functions.pl | 24 +++++++++++++++++++++++ > doc/language_issues.de | 2 +- > doc/language_issues.en | 2 +- > doc/language_issues.es | 2 ++ > doc/language_issues.fr | 15 ++++++--------- > doc/language_issues.it | 2 +- > doc/language_issues.nl | 2 +- > doc/language_issues.pl | 2 +- > doc/language_issues.ru | 2 +- > doc/language_issues.tr | 2 +- > doc/language_missings | 15 ++++++++------- > html/cgi-bin/dhcp.cgi | 30 ++++++++++++++++++++++------- > langs/en/cgi-bin/en.pl | 1 + > 13 files changed, 71 insertions(+), 30 deletions(-) > > diff --git a/config/cfgroot/network-functions.pl b/config/cfgroot/network-functions.pl > index 4ac6d8670..7b38cfac7 100644 > --- a/config/cfgroot/network-functions.pl > +++ b/config/cfgroot/network-functions.pl > @@ -307,6 +307,24 @@ sub ip_address_in_network($$) { > return (($address_bin >= $network_bin) && ($address_bin <= $broadcast_bin)); > } > > +# Returns True if $ipaddress is within $ipstart and $ipend range. > +sub ip_address_in_range($$) { > + my $ipaddress = shift; > + my $ipstart = shift; > + my $ipend = shift; > + > + my $ipaddress_bin = &ip2bin($ipaddress); > + return undef unless (defined $ipaddress_bin); > + > + my $ipstart_bin = &ip2bin($ipstart); > + return undef unless (defined $ipstart_bin); > + > + my $ipend_bin = &ip2bin($ipend); > + return undef unless (defined $ipend_bin); > + > + return (($ipaddress_bin >= $ipstart_bin) && ($ipaddress_bin <= $ipend_bin)); > +} > + > sub setup_upstream_proxy() { > my %proxysettings = (); > &General::readhash("${General::swroot}/proxy/settings", \%proxysettings); > @@ -666,6 +684,12 @@ sub testsuite() { > $result = &ip_address_in_network("192.168.30.11", "0.0.0.0/8"); > assert('ip_address_in_network("192.168.30.11", "0.0.0.0/8")', !$result); > > + $result = &ip_address_in_range("192.168.30.11", "192.168.30.10", "192.168.30.20"); > + assert('ip_address_in_range("192.168.30.11", "192.168.30.10", "192.168.30.20")', $result); > + > + $result = &ip_address_in_range("192.168.30.21", "192.168.30.10", "192.168.30.20"); > + assert('ip_address_in_range("192.168.30.21", "192.168.30.10", "192.168.30.20")', !$result); > + > print "Testsuite completed successfully!\n"; > > return 0; > diff --git a/doc/language_issues.de b/doc/language_issues.de > index 88c7879be..392416192 100644 > --- a/doc/language_issues.de > +++ b/doc/language_issues.de > @@ -883,7 +883,7 @@ WARNING: untranslated string: cake profile pppoe-ptm 27 = PPPoE PTM (27 bytes) > WARNING: untranslated string: cake profile pppoe-vcmux 32 = PPPoE VC-MUX (32 bytes) > WARNING: untranslated string: cake profile raw 0 = Raw (no overhead compensation) > WARNING: untranslated string: desired = Desired > -WARNING: untranslated string: dh parameter = unknown string > +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: disable = Disable > WARNING: untranslated string: download apple profile = Download Apple Configuration Profile > WARNING: untranslated string: enable = Enable > diff --git a/doc/language_issues.en b/doc/language_issues.en > index c29e3bed6..08fda35b7 100644 > --- a/doc/language_issues.en > +++ b/doc/language_issues.en > @@ -574,7 +574,6 @@ WARNING: untranslated string: details = Details > WARNING: untranslated string: device = Device > WARNING: untranslated string: devices on blue = Devices on BLUE > WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > WARNING: untranslated string: dhcp advopt add = Add a DHCP option > WARNING: untranslated string: dhcp advopt added = DHCP option added > WARNING: untranslated string: dhcp advopt blank value = DHCP Option value cannot be empty. > @@ -601,6 +600,7 @@ 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dhcp make fixed lease = Add to fix leases > WARNING: untranslated string: dhcp server = DHCP Server > WARNING: untranslated string: dhcp server disabled = DHCP server disabled. Stopped. > diff --git a/doc/language_issues.es b/doc/language_issues.es > index 0bd390d5d..ffe423bd1 100644 > --- a/doc/language_issues.es > +++ b/doc/language_issues.es > @@ -228,6 +228,7 @@ WARNING: translation string unused: dh key move failed > WARNING: translation string unused: dh key warn > WARNING: translation string unused: dh key warn1 > WARNING: translation string unused: dh name is invalid > +WARNING: translation string unused: dh parameter > WARNING: translation string unused: dhcp base ip fixed lease > WARNING: translation string unused: dhcp create fixed leases > WARNING: translation string unused: dhcp fixed lease err1 > @@ -943,6 +944,7 @@ WARNING: untranslated string: access point name is invalid = Access Point Name i > WARNING: untranslated string: access point name is required = Access Point Name is required > WARNING: untranslated string: bytes = unknown string > WARNING: untranslated string: cpu frequency = CPU frequency > +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dns servers = DNS Servers > WARNING: untranslated string: error message = unknown string > WARNING: untranslated string: fwhost cust locationgrp = unknown string > diff --git a/doc/language_issues.fr b/doc/language_issues.fr > index 56d69d86e..cb06f0ab3 100644 > --- a/doc/language_issues.fr > +++ b/doc/language_issues.fr > @@ -392,7 +392,6 @@ WARNING: translation string unused: generatepolicy > WARNING: translation string unused: generatereport > WARNING: translation string unused: genkey > WARNING: translation string unused: green interface > -WARNING: translation string unused: guaranteed bandwith > WARNING: translation string unused: guest ok > WARNING: translation string unused: gz with key > WARNING: translation string unused: harddisk temperature graphs > @@ -404,6 +403,7 @@ WARNING: translation string unused: host deny > WARNING: translation string unused: hostname and domain already in use > WARNING: translation string unused: hour-graph > WARNING: translation string unused: hours2 > +WARNING: translation string unused: ibod for dual isdn only > WARNING: translation string unused: icmp selected but no type > WARNING: translation string unused: icmp type > WARNING: translation string unused: id > @@ -453,6 +453,10 @@ WARNING: translation string unused: ipblocklist category scanner > WARNING: translation string unused: ipfire side > WARNING: translation string unused: ipsec no connections > WARNING: translation string unused: iptable rules > +WARNING: translation string unused: isdn > +WARNING: translation string unused: isdn settings > +WARNING: translation string unused: isdn1 > +WARNING: translation string unused: isdn2 > WARNING: translation string unused: javascript menu error1 > WARNING: translation string unused: javascript menu error2 > WARNING: translation string unused: kernel version > @@ -908,15 +912,11 @@ WARNING: translation string unused: zoneconf val zoneslave amount error > WARNING: untranslated string: access point name = Access Point Name > WARNING: untranslated string: access point name is invalid = Access Point Name is invalid > WARNING: untranslated string: access point name is required = Access Point Name is required > -WARNING: untranslated string: advproxy errmsg invalid url = Invalid URL > WARNING: untranslated string: core notice 3 = available. > -WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > -WARNING: untranslated string: email recipient invalid = Invalid email recipient > +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: error message = unknown string > WARNING: untranslated string: fwhost cust locationgrp = unknown string > WARNING: untranslated string: fwhost err hostip = unknown string > -WARNING: untranslated string: guaranteed bandwidth = Guaranteed bandwidth > WARNING: untranslated string: guardian block a host = unknown string > WARNING: untranslated string: guardian block httpd brute-force = unknown string > WARNING: untranslated string: guardian block ssh brute-force = unknown string > @@ -947,9 +947,6 @@ WARNING: untranslated string: guardian logtarget_syslog = unknown string > WARNING: untranslated string: guardian no entries = unknown string > WARNING: untranslated string: guardian service = unknown string > WARNING: untranslated string: pakfire ago = ago. > -WARNING: untranslated string: retbleed = Retbleed > WARNING: untranslated string: route config changed = unknown string > WARNING: untranslated string: routing config added = unknown string > WARNING: untranslated string: routing config changed = unknown string > -WARNING: untranslated string: service boot setting unavailable = No valid runlevel symlink was found for the initscript of this service. > -WARNING: untranslated string: show dh = Show Diffie-Hellman parameters > diff --git a/doc/language_issues.it b/doc/language_issues.it > index 9999f947c..dd794f57a 100644 > --- a/doc/language_issues.it > +++ b/doc/language_issues.it > @@ -940,13 +940,13 @@ WARNING: untranslated string: dangerous = Dangerous > WARNING: untranslated string: default IP address = Default IP Address > WARNING: untranslated string: desired = Desired > WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dhcp make fixed lease = Add to fix leases > 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 > diff --git a/doc/language_issues.nl b/doc/language_issues.nl > index 14a7b420e..4f100abd2 100644 > --- a/doc/language_issues.nl > +++ b/doc/language_issues.nl > @@ -943,12 +943,12 @@ WARNING: untranslated string: default = Default > WARNING: untranslated string: default IP address = Default IP Address > WARNING: untranslated string: desired = Desired > WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dhcp make fixed lease = Add to fix leases > WARNING: untranslated string: disable = Disable > WARNING: untranslated string: disconnected = Disconnected > diff --git a/doc/language_issues.pl b/doc/language_issues.pl > index a53a208d9..e91e62c5b 100644 > --- a/doc/language_issues.pl > +++ b/doc/language_issues.pl > @@ -915,13 +915,13 @@ WARNING: untranslated string: default IP address = Default IP Address > WARNING: untranslated string: desired = Desired > WARNING: untranslated string: details = Details > WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dhcp make fixed lease = Add to fix leases > 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 > diff --git a/doc/language_issues.ru b/doc/language_issues.ru > index c5dc1aa61..7dd1a63d7 100644 > --- a/doc/language_issues.ru > +++ b/doc/language_issues.ru > @@ -911,13 +911,13 @@ WARNING: untranslated string: default IP address = Default IP Address > WARNING: untranslated string: desired = Desired > WARNING: untranslated string: details = Details > WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > 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 fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dhcp make fixed lease = Add to fix leases > 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 > diff --git a/doc/language_issues.tr b/doc/language_issues.tr > index 552082a96..3443b1f1a 100644 > --- a/doc/language_issues.tr > +++ b/doc/language_issues.tr > @@ -926,8 +926,8 @@ WARNING: untranslated string: dangerous = Dangerous > WARNING: untranslated string: default IP address = Default IP Address > WARNING: untranslated string: desired = Desired > WARNING: untranslated string: dh = Diffie-Hellman-Parameter > -WARNING: untranslated string: dh parameter = unknown string > WARNING: untranslated string: dhcp deny known clients: = Deny known clients: > +WARNING: untranslated string: dhcp fixed ip address in dynamic range = Fixed IP Address in dynamic range > WARNING: untranslated string: dhcp make fixed lease = Add to fix leases > 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 > diff --git a/doc/language_missings b/doc/language_missings > index 65d38b422..78b9e8a2d 100644 > --- a/doc/language_missings > +++ b/doc/language_missings > @@ -47,6 +47,7 @@ > < could not connect to www ipfire org > < cryptographic settings > < desired > +< dhcp fixed ip address in dynamic range > < dhcp server disabled on blue interface > < dhcp server enabled on blue interface > < disable > @@ -102,6 +103,7 @@ > < access point name is required > < addon > < cpu frequency > +< dhcp fixed ip address in dynamic range > < dns servers > < hardware vulnerabilities > < invalid ip or hostname > @@ -115,18 +117,12 @@ > < access point name > < access point name is invalid > < access point name is required > -< advproxy errmsg invalid url > < ansi t1.483 > < bewan adsl pci st > < bewan adsl usb > -< dh > -< email recipient invalid > +< dhcp fixed ip address in dynamic range > < g.dtm > < g.lite > -< guaranteed bandwidth > -< retbleed > -< service boot setting unavailable > -< show dh > < upload fcdsl.o > ############################################################################ > # Checking cgi-bin translations for language: it # > @@ -252,6 +248,7 @@ > < dhcp dns update > < dhcp dns update algo > < dhcp dns update secret > +< dhcp fixed ip address in dynamic range > < dhcp make fixed lease > < dhcp valid range required when deny known clients checked > < disable > @@ -756,6 +753,7 @@ > < dhcp dns update > < dhcp dns update algo > < dhcp dns update secret > +< dhcp fixed ip address in dynamic range > < dhcp make fixed lease > < disable > < Disabled > @@ -1353,6 +1351,7 @@ > < dhcp dns update > < dhcp dns update algo > < dhcp dns update secret > +< dhcp fixed ip address in dynamic range > < dhcp make fixed lease > < dhcp valid range required when deny known clients checked > < disable > @@ -2330,6 +2329,7 @@ > < dhcp dns update > < dhcp dns update algo > < dhcp dns update secret > +< dhcp fixed ip address in dynamic range > < dhcp make fixed lease > < dhcp valid range required when deny known clients checked > < disable > @@ -3173,6 +3173,7 @@ > < desired > < dh > < dhcp deny known clients: > +< dhcp fixed ip address in dynamic range > < dhcp make fixed lease > < dhcp valid range required when deny known clients checked > < disable > diff --git a/html/cgi-bin/dhcp.cgi b/html/cgi-bin/dhcp.cgi > index 2d162b204..1b1102932 100644 > --- a/html/cgi-bin/dhcp.cgi > +++ b/html/cgi-bin/dhcp.cgi > @@ -127,6 +127,9 @@ my $extraHead = <<END > } > .cell-orange { > background-color: orange; > + } > + .cell-red { > + background-color: red; > } > </style> > END > @@ -1042,8 +1045,9 @@ my $ipdup = 0; > my %ipinuse = (); > my %macdupl = (); # Duplicate MACs have to be on different subnets > my %ipoutside = (); > +my %ipinrange = (); > > -# mark duplicate ip or duplicate MAC > +# mark duplicate IP, duplicate MAC or IP in dynamic range > foreach my $line (@current2) { > my @temp = split(/\,/,$line); > $macdupl{$temp[0]} += 1; > @@ -1054,14 +1058,21 @@ foreach my $line (@current2) { > if ($ipinuse{$temp[1]} > 1) { > $ipdup = 1; # Flag up duplicates for use later > } > - # Mark IP addresses outwith known subnets > $ipoutside{$temp[1]} = 1; > + $ipinrange{$temp[1]} = 0; > foreach my $itf (@ITFs) { > - if ( &General::IpInSubnet($temp[1], > - $netsettings{"${itf}_NETADDRESS"}, > - $netsettings{"${itf}_NETMASK"})) { > - $ipoutside{$temp[1]} = 0; > - } > + # Mark IP addresses outwith known subnets > + if ( &General::IpInSubnet($temp[1], > + $netsettings{"${itf}_NETADDRESS"}, > + $netsettings{"${itf}_NETMASK"})) { > + $ipoutside{$temp[1]} = 0; > + } > + # Mark IP addresses that overlap with dynamic range > + if (&Network::ip_address_in_range($temp[1], > + $dhcpsettings{"START_ADDR_${itf}"}, > + $dhcpsettings{"END_ADDR_${itf}"})) { > + $ipinrange{$temp[1]} = 1; > + } > } > } > > @@ -1115,6 +1126,9 @@ foreach my $line (@current2) { > if ($ipoutside{$temp[1]} > 0) { > $TAG4 = "class='cell-orange'" if ($dhcpsettings{'KEY2'} ne $key); > } > + if ($ipinrange{$temp[1]} > 0) { > + $TAG4 = "class='cell-red'" if ($dhcpsettings{'KEY2'} ne $key); > + } > > print <<END > <td align='center' $col>$TAG2$temp[0]$TAG3</td> > @@ -1177,6 +1191,8 @@ print <<END > <td> </td> > <td> </td> > <td class='base cell-orange'>$Lang::tr{'ip address outside subnets'}</td> > + <td>  </td> > + <td class='base cell-red'>$Lang::tr{'dhcp fixed ip address in dynamic range'}</td> > <td> </td> > <td> </td> > $dup > diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl > index 80753b841..5a72f53b8 100644 > --- a/langs/en/cgi-bin/en.pl > +++ b/langs/en/cgi-bin/en.pl > @@ -827,6 +827,7 @@ > 'dhcp dns update' => 'DNS Update', > 'dhcp dns update algo' => 'Algorithm', > 'dhcp dns update secret' => 'Secret', > +'dhcp fixed ip address in dynamic range' => 'Fixed IP Address in dynamic range', > 'dhcp fixed lease err1' => 'For a fix lease you have to enter the MAC address or the hostname, or you enter both.', > 'dhcp fixed lease help1' => 'IP Addresses might be entered as FQDN', > 'dhcp make fixed lease' => 'Add to fix leases', ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css 2023-02-13 17:55 [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css Adolf Belka 2023-02-13 17:55 ` [PATCH 2/2] dhcp.cgi: Fix bug#10629 - Highlight fixed IP's in dynamic range in red Adolf Belka @ 2023-02-13 21:42 ` Bernhard Bitsch 1 sibling, 0 replies; 4+ messages in thread From: Bernhard Bitsch @ 2023-02-13 21:42 UTC (permalink / raw) To: development [-- Attachment #1: Type: text/plain, Size: 4066 bytes --] Reviewed-by: Bernhard Bitsch <bbitsch(a)ipfire.org> Am 13.02.2023 um 18:55 schrieb Adolf Belka: > - bgcolor was deprecated in HTML 4.01 and is not supported by HTML 5 > - The orange colour for IP's that are outside the IPFire green and blue subnets does not > work on any browser I am using. > - I used the CSS approach that @Leo used in the Zone Configuration cgi page > - This patch changes all existing bgcolor entries to the css based background-color > - Tested on my vm testbed and confirmed to work. The Orange colour for IP's outside of > the subnet now shows up. > > Tested-by: Adolf Belka <adolf.belka(a)ipfire.org> > Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org> > --- > html/cgi-bin/dhcp.cgi | 44 ++++++++++++++++++++++++++++++++----------- > 1 file changed, 33 insertions(+), 11 deletions(-) > > diff --git a/html/cgi-bin/dhcp.cgi b/html/cgi-bin/dhcp.cgi > index 125713285..2d162b204 100644 > --- a/html/cgi-bin/dhcp.cgi > +++ b/html/cgi-bin/dhcp.cgi > @@ -113,6 +113,27 @@ foreach my $itf (@ITFs) { > &General::readhash("${General::swroot}/time/settings", \%timesettings); > &General::readhash("/srv/web/ipfire/html/themes/ipfire/include/colors.txt", \%color); > > +###--- HTML HEAD ---### > +my $extraHead = <<END > +<style> > + .row-color20 { > + background-color: $color{'color20'}; > + } > + .row-color22 { > + background-color: $color{'color22'}; > + } > + .row-colouryellow { > + background-color: $Header::colouryellow; > + } > + .cell-orange { > + background-color: orange; > + } > +</style> > +END > +; > +###--- END HTML HEAD ---### > + > + > #Get GUI values > &Header::getcgihash(\%dhcpsettings); > > @@ -547,7 +568,8 @@ if ($dhcpsettings{'ACTION'} eq '' ) { # First launch from GUI > $dhcpsettings{'ADVOPT_ENABLED'} = 'on'; > } > > -&Header::openpage($Lang::tr{'dhcp configuration'}, 1, ''); > +### START PAGE ### > +&Header::openpage($Lang::tr{'dhcp configuration'}, 1, $extraHead); > &Header::openbigbox('100%', 'left', '', $errormessage); > > if ($errormessage) { > @@ -843,11 +865,11 @@ foreach my $line (@current1) { > } > > if ($dhcpsettings{'KEY1'} eq $key) { > - print "<tr bgcolor='${Header::colouryellow}'>"; > + print "<tr class='row-colouryellow'>"; > } elsif ($key % 2) { > - print "<tr bgcolor='$color{'color22'}'>"; > + print "<tr class='row-color22'>"; > } else { > - print "<tr bgcolor='$color{'color20'}'>"; > + print "<tr class='row-color20'>"; > } > > print <<END > @@ -1069,13 +1091,13 @@ foreach my $line (@current2) { > > if ($dhcpsettings{'KEY2'} eq $key) { > print "<tr>"; > - $col="bgcolor='${Header::colouryellow}'"; > + $col="class='row-colouryellow'"; > } elsif ($key % 2) { > print "<tr>"; > - $col="bgcolor='$color{'color20'}'"; > + $col="class='row-color20'"; > } else { > print "<tr>"; > - $col="bgcolor='$color{'color22'}'"; > + $col="class='row-color22'"; > } > my $TAG0 = ''; > my $TAG1 = ''; > @@ -1091,12 +1113,12 @@ foreach my $line (@current2) { > $TAG3 = '</b>'; > } > if ($ipoutside{$temp[1]} > 0) { > - $TAG4 = "bgcolor='orange'" if ($dhcpsettings{'KEY2'} ne $key); > + $TAG4 = "class='cell-orange'" if ($dhcpsettings{'KEY2'} ne $key); > } > > print <<END > <td align='center' $col>$TAG2$temp[0]$TAG3</td> > -<td align='center' $col $TAG4>$TAG0$temp[1]$TAG1</td> > +<td align='center' $TAG4 $col>$TAG0$temp[1]$TAG1</td> > <td align='center' $col>$temp[6] </td> > <td align='center' $col>$temp[3] </td> > <td align='center' $col>$temp[4] </td> > @@ -1153,8 +1175,8 @@ print <<END > </tr> > <tr> > <td> </td> > - <td bgcolor='orange'> </td> > - <td class='base'>$Lang::tr{'ip address outside subnets'}</td> > + <td> </td> > + <td class='base cell-orange'>$Lang::tr{'ip address outside subnets'}</td> > <td> </td> > <td> </td> > $dup ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-02-13 22:34 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-02-13 17:55 [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css Adolf Belka 2023-02-13 17:55 ` [PATCH 2/2] dhcp.cgi: Fix bug#10629 - Highlight fixed IP's in dynamic range in red Adolf Belka 2023-02-13 22:34 ` Bernhard Bitsch 2023-02-13 21:42 ` [PATCH 1/2] dhcp.cgi: Fix for bug#10629 - update bgcolor to css Bernhard Bitsch
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox