From 8f8682f73db5cd16b31e19162d14b81ee43e9892 Mon Sep 17 00:00:00 2001 From: Phil Davis Date: Sat, 23 May 2015 23:46:40 +0545 Subject: Code style services DHCP --- usr/local/www/services_dhcp.php | 1424 +++++++++++++++++-------------- usr/local/www/services_dhcp_edit.php | 473 +++++----- usr/local/www/services_dhcp_relay.php | 139 +-- usr/local/www/services_dhcpv6.php | 969 +++++++++++---------- usr/local/www/services_dhcpv6_edit.php | 209 ++--- usr/local/www/services_dhcpv6_relay.php | 144 ++-- 6 files changed, 1832 insertions(+), 1526 deletions(-) (limited to 'usr/local') diff --git a/usr/local/www/services_dhcp.php b/usr/local/www/services_dhcp.php index f0b5be9..653d777 100644 --- a/usr/local/www/services_dhcp.php +++ b/usr/local/www/services_dhcp.php @@ -44,24 +44,25 @@ require("guiconfig.inc"); require_once("filter.inc"); -if(!$g['services_dhcp_server_enable']) { +if (!$g['services_dhcp_server_enable']) { header("Location: /"); exit; } $if = $_GET['if']; -if (!empty($_POST['if'])) +if (!empty($_POST['if'])) { $if = $_POST['if']; +} /* if OLSRD is enabled, allow WAN to house DHCP. */ -if($config['installedpackages']['olsrd']) { - foreach($config['installedpackages']['olsrd']['config'] as $olsrd) { - if($olsrd['enable']) { - $is_olsr_enabled = true; - break; - } +if ($config['installedpackages']['olsrd']) { + foreach ($config['installedpackages']['olsrd']['config'] as $olsrd) { + if ($olsrd['enable']) { + $is_olsr_enabled = true; + break; + } } -} +} $iflist = get_configured_interface_with_descr(); @@ -70,23 +71,26 @@ if (!$if || !isset($iflist[$if])) { foreach ($iflist as $ifent => $ifname) { $oc = $config['interfaces'][$ifent]; if ((is_array($config['dhcpd'][$ifent]) && !isset($config['dhcpd'][$ifent]['enable']) && (!is_ipaddrv4($oc['ipaddr']))) || - (!is_array($config['dhcpd'][$ifent]) && (!is_ipaddrv4($oc['ipaddr'])))) + (!is_array($config['dhcpd'][$ifent]) && (!is_ipaddrv4($oc['ipaddr'])))) { continue; + } $if = $ifent; break; } } $act = $_GET['act']; -if (!empty($_POST['act'])) +if (!empty($_POST['act'])) { $act = $_POST['act']; +} $a_pools = array(); -if (is_array($config['dhcpd'][$if])){ +if (is_array($config['dhcpd'][$if])) { $pool = $_GET['pool']; - if (is_numeric($_POST['pool'])) + if (is_numeric($_POST['pool'])) { $pool = $_POST['pool']; + } // If we have a pool but no interface name, that's not valid. Redirect away. if (is_numeric($pool) && empty($if)) { @@ -94,16 +98,18 @@ if (is_array($config['dhcpd'][$if])){ exit; } - if (!is_array($config['dhcpd'][$if]['pool'])) + if (!is_array($config['dhcpd'][$if]['pool'])) { $config['dhcpd'][$if]['pool'] = array(); + } $a_pools = &$config['dhcpd'][$if]['pool']; - if (is_numeric($pool) && $a_pools[$pool]) + if (is_numeric($pool) && $a_pools[$pool]) { $dhcpdconf = &$a_pools[$pool]; - elseif ($act == "newpool") + } elseif ($act == "newpool") { $dhcpdconf = array(); - else + } else { $dhcpdconf = &$config['dhcpd'][$if]; + } } if (is_array($dhcpdconf)) { // Global Options @@ -118,14 +124,16 @@ if (is_array($dhcpdconf)) { // then show it true/checked. foreach ($config['dhcpd'] as $dhcpdifitem) { $dhcpleaseinlocaltime = $dhcpdifitem['dhcpleaseinlocaltime']; - if ($dhcpleaseinlocaltime) + if ($dhcpleaseinlocaltime) { break; + } } $pconfig['dhcpleaseinlocaltime'] = $dhcpleaseinlocaltime; - if (!is_array($dhcpdconf['staticmap'])) + if (!is_array($dhcpdconf['staticmap'])) { $dhcpdconf['staticmap'] = array(); + } $a_maps = &$dhcpdconf['staticmap']; } else { // Options that exist only in pools @@ -142,8 +150,8 @@ if (is_array($dhcpdconf)) { $pconfig['gateway'] = $dhcpdconf['gateway']; $pconfig['domain'] = $dhcpdconf['domain']; $pconfig['domainsearchlist'] = $dhcpdconf['domainsearchlist']; - list($pconfig['wins1'],$pconfig['wins2']) = $dhcpdconf['winsserver']; - list($pconfig['dns1'],$pconfig['dns2'],$pconfig['dns3'],$pconfig['dns4']) = $dhcpdconf['dnsserver']; + list($pconfig['wins1'], $pconfig['wins2']) = $dhcpdconf['winsserver']; + list($pconfig['dns1'], $pconfig['dns2'], $pconfig['dns3'], $pconfig['dns4']) = $dhcpdconf['dnsserver']; $pconfig['denyunknown'] = isset($dhcpdconf['denyunknown']); $pconfig['ddnsdomain'] = $dhcpdconf['ddnsdomain']; $pconfig['ddnsdomainprimary'] = $dhcpdconf['ddnsdomainprimary']; @@ -152,7 +160,7 @@ if (is_array($dhcpdconf)) { $pconfig['ddnsupdate'] = isset($dhcpdconf['ddnsupdate']); $pconfig['mac_allow'] = $dhcpdconf['mac_allow']; $pconfig['mac_deny'] = $dhcpdconf['mac_deny']; - list($pconfig['ntp1'],$pconfig['ntp2']) = $dhcpdconf['ntpserver']; + list($pconfig['ntp1'], $pconfig['ntp2']) = $dhcpdconf['ntpserver']; $pconfig['tftp'] = $dhcpdconf['tftp']; $pconfig['ldap'] = $dhcpdconf['ldap']; $pconfig['netboot'] = isset($dhcpdconf['netboot']); @@ -172,9 +180,11 @@ function validate_partial_mac_list($maclist) { $macs = explode(',', $maclist); // Loop through and look for invalid MACs. - foreach ($macs as $mac) - if (!is_macaddr($mac, true)) + foreach ($macs as $mac) { + if (!is_macaddr($mac, true)) { return false; + } + } return true; } @@ -185,8 +195,8 @@ if (isset($_POST['submit'])) { $pconfig = $_POST; $numberoptions = array(); - for($x=0; $x<99; $x++) { - if(isset($_POST["number{$x}"]) && ctype_digit($_POST["number{$x}"])) { + for ($x=0; $x<99; $x++) { + if (isset($_POST["number{$x}"]) && ctype_digit($_POST["number{$x}"])) { $numbervalue = array(); $numbervalue['number'] = htmlspecialchars($_POST["number{$x}"]); $numbervalue['type'] = htmlspecialchars($_POST["itemtype{$x}"]); @@ -200,60 +210,76 @@ if (isset($_POST['submit'])) { /* input validation */ if ($_POST['enable'] || is_numeric($pool) || $act == "newpool") { $reqdfields = explode(" ", "range_from range_to"); - $reqdfieldsn = array(gettext("Range begin"),gettext("Range end")); + $reqdfieldsn = array(gettext("Range begin"), gettext("Range end")); do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); - if (($_POST['range_from'] && !is_ipaddrv4($_POST['range_from']))) + if (($_POST['range_from'] && !is_ipaddrv4($_POST['range_from']))) { $input_errors[] = gettext("A valid range must be specified."); - if (($_POST['range_to'] && !is_ipaddrv4($_POST['range_to']))) + } + if (($_POST['range_to'] && !is_ipaddrv4($_POST['range_to']))) { $input_errors[] = gettext("A valid range must be specified."); - if (($_POST['gateway'] && $_POST['gateway'] != "none" && !is_ipaddrv4($_POST['gateway']))) + } + if (($_POST['gateway'] && $_POST['gateway'] != "none" && !is_ipaddrv4($_POST['gateway']))) { $input_errors[] = gettext("A valid IP address must be specified for the gateway."); - if (($_POST['wins1'] && !is_ipaddrv4($_POST['wins1'])) || ($_POST['wins2'] && !is_ipaddrv4($_POST['wins2']))) + } + if (($_POST['wins1'] && !is_ipaddrv4($_POST['wins1'])) || ($_POST['wins2'] && !is_ipaddrv4($_POST['wins2']))) { $input_errors[] = gettext("A valid IP address must be specified for the primary/secondary WINS servers."); + } $parent_ip = get_interface_ip($_POST['if']); if (is_ipaddrv4($parent_ip) && $_POST['gateway'] && $_POST['gateway'] != "none") { $parent_sn = get_interface_subnet($_POST['if']); - if(!ip_in_subnet($_POST['gateway'], gen_subnet($parent_ip, $parent_sn) . "/" . $parent_sn) && !ip_in_interface_alias_subnet($_POST['if'], $_POST['gateway'])) + if (!ip_in_subnet($_POST['gateway'], gen_subnet($parent_ip, $parent_sn) . "/" . $parent_sn) && !ip_in_interface_alias_subnet($_POST['if'], $_POST['gateway'])) { $input_errors[] = sprintf(gettext("The gateway address %s does not lie within the chosen interface's subnet."), $_POST['gateway']); + } } - if (($_POST['dns1'] && !is_ipaddrv4($_POST['dns1'])) || ($_POST['dns2'] && !is_ipaddrv4($_POST['dns2'])) || ($_POST['dns3'] && !is_ipaddrv4($_POST['dns3'])) || ($_POST['dns4'] && !is_ipaddrv4($_POST['dns4']))) + if (($_POST['dns1'] && !is_ipaddrv4($_POST['dns1'])) || ($_POST['dns2'] && !is_ipaddrv4($_POST['dns2'])) || ($_POST['dns3'] && !is_ipaddrv4($_POST['dns3'])) || ($_POST['dns4'] && !is_ipaddrv4($_POST['dns4']))) { $input_errors[] = gettext("A valid IP address must be specified for each of the DNS servers."); + } - if ($_POST['deftime'] && (!is_numeric($_POST['deftime']) || ($_POST['deftime'] < 60))) - $input_errors[] = gettext("The default lease time must be at least 60 seconds."); + if ($_POST['deftime'] && (!is_numeric($_POST['deftime']) || ($_POST['deftime'] < 60))) { + $input_errors[] = gettext("The default lease time must be at least 60 seconds."); + } if (isset($config['captiveportal']) && is_array($config['captiveportal'])) { $deftime = 7200; // Default value if it's empty - if (is_numeric($_POST['deftime'])) + if (is_numeric($_POST['deftime'])) { $deftime = $_POST['deftime']; + } foreach ($config['captiveportal'] as $cpZone => $cpdata) { - if (!isset($cpdata['enable'])) + if (!isset($cpdata['enable'])) { continue; - if (!isset($cpdata['timeout']) || !is_numeric($cpdata['timeout'])) + } + if (!isset($cpdata['timeout']) || !is_numeric($cpdata['timeout'])) { continue; + } $cp_ifs = explode(',', $cpdata['interface']); - if (!in_array($if, $cp_ifs)) + if (!in_array($if, $cp_ifs)) { continue; - if ($cpdata['timeout'] > $deftime) + } + if ($cpdata['timeout'] > $deftime) { $input_errors[] = sprintf(gettext( "The Captive Portal zone '%s' has Hard Timeout parameter set to a value bigger than Default lease time (%s)."), $cpZone, $deftime); + } } } - if ($_POST['maxtime'] && (!is_numeric($_POST['maxtime']) || ($_POST['maxtime'] < 60) || ($_POST['maxtime'] <= $_POST['deftime']))) + if ($_POST['maxtime'] && (!is_numeric($_POST['maxtime']) || ($_POST['maxtime'] < 60) || ($_POST['maxtime'] <= $_POST['deftime']))) { $input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time."); - if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain']))) + } + if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain']))) { $input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration."); - if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary']))) + } + if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary']))) { $input_errors[] = gettext("A valid primary domain name server IP address must be specified for the dynamic domain name."); + } if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) || - ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey'])) + ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey'])) { $input_errors[] = gettext("You must specify both a valid domain key and key name."); + } if ($_POST['domainsearchlist']) { - $domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']); + $domain_array = preg_split("/[ ;]+/", $_POST['domainsearchlist']); foreach ($domain_array as $curdomain) { if (!is_domain($curdomain)) { $input_errors[] = gettext("A valid domain search list must be specified."); @@ -263,64 +289,79 @@ if (isset($_POST['submit'])) { } // Validate MACs - if (!empty($_POST['mac_allow']) && !validate_partial_mac_list($_POST['mac_allow'])) + if (!empty($_POST['mac_allow']) && !validate_partial_mac_list($_POST['mac_allow'])) { $input_errors[] = gettext("If you specify a mac allow list, it must contain only valid partial MAC addresses."); - if (!empty($_POST['mac_deny']) && !validate_partial_mac_list($_POST['mac_deny'])) + } + if (!empty($_POST['mac_deny']) && !validate_partial_mac_list($_POST['mac_deny'])) { $input_errors[] = gettext("If you specify a mac deny list, it must contain only valid partial MAC addresses."); + } - if (($_POST['ntp1'] && !is_ipaddrv4($_POST['ntp1'])) || ($_POST['ntp2'] && !is_ipaddrv4($_POST['ntp2']))) + if (($_POST['ntp1'] && !is_ipaddrv4($_POST['ntp1'])) || ($_POST['ntp2'] && !is_ipaddrv4($_POST['ntp2']))) { $input_errors[] = gettext("A valid IP address must be specified for the primary/secondary NTP servers."); - if (($_POST['domain'] && !is_domain($_POST['domain']))) + } + if (($_POST['domain'] && !is_domain($_POST['domain']))) { $input_errors[] = gettext("A valid domain name must be specified for the DNS domain."); - if ($_POST['tftp'] && !is_ipaddrv4($_POST['tftp']) && !is_domain($_POST['tftp']) && !is_URL($_POST['tftp'])) + } + if ($_POST['tftp'] && !is_ipaddrv4($_POST['tftp']) && !is_domain($_POST['tftp']) && !is_URL($_POST['tftp'])) { $input_errors[] = gettext("A valid IP address or hostname must be specified for the TFTP server."); - if (($_POST['nextserver'] && !is_ipaddrv4($_POST['nextserver']))) + } + if (($_POST['nextserver'] && !is_ipaddrv4($_POST['nextserver']))) { $input_errors[] = gettext("A valid IP address must be specified for the network boot server."); + } - if(gen_subnet($ifcfgip, $ifcfgsn) == $_POST['range_from']) + if (gen_subnet($ifcfgip, $ifcfgsn) == $_POST['range_from']) { $input_errors[] = gettext("You cannot use the network address in the starting subnet range."); - if(gen_subnet_max($ifcfgip, $ifcfgsn) == $_POST['range_to']) + } + if (gen_subnet_max($ifcfgip, $ifcfgsn) == $_POST['range_to']) { $input_errors[] = gettext("You cannot use the broadcast address in the ending subnet range."); + } // Disallow a range that includes the virtualip if (is_array($config['virtualip']['vip'])) { - foreach($config['virtualip']['vip'] as $vip) { - if($vip['interface'] == $if) - if($vip['subnet'] && is_inrange_v4($vip['subnet'], $_POST['range_from'], $_POST['range_to'])) - $input_errors[] = sprintf(gettext("The subnet range cannot overlap with virtual IP address %s."),$vip['subnet']); + foreach ($config['virtualip']['vip'] as $vip) { + if ($vip['interface'] == $if) { + if ($vip['subnet'] && is_inrange_v4($vip['subnet'], $_POST['range_from'], $_POST['range_to'])) { + $input_errors[] = sprintf(gettext("The subnet range cannot overlap with virtual IP address %s."), $vip['subnet']); + } + } } } $noip = false; - if(is_array($a_maps)) - foreach ($a_maps as $map) - if (empty($map['ipaddr'])) + if (is_array($a_maps)) { + foreach ($a_maps as $map) { + if (empty($map['ipaddr'])) { $noip = true; - if ($_POST['staticarp'] && $noip) + } + } + } + if ($_POST['staticarp'] && $noip) { $input_errors[] = "Cannot enable static ARP when you have static map entries without IP addresses. Ensure all static maps have IP addresses and try again."; + } - if(is_array($pconfig['numberoptions']['item'])) { + if (is_array($pconfig['numberoptions']['item'])) { foreach ($pconfig['numberoptions']['item'] as $numberoption) { - if ( $numberoption['type'] == 'text' && strstr($numberoption['value'], '"') ) + if ($numberoption['type'] == 'text' && strstr($numberoption['value'], '"')) { $input_errors[] = gettext("Text type cannot include quotation marks."); - else if ( $numberoption['type'] == 'string' && !preg_match('/^"[^"]*"$/', $numberoption['value']) && !preg_match('/^[0-9a-f]{2}(?:\:[0-9a-f]{2})*$/i', $numberoption['value']) ) + } else if ($numberoption['type'] == 'string' && !preg_match('/^"[^"]*"$/', $numberoption['value']) && !preg_match('/^[0-9a-f]{2}(?:\:[0-9a-f]{2})*$/i', $numberoption['value'])) { $input_errors[] = gettext("String type must be enclosed in quotes like \"this\" or must be a series of octets specified in hexadecimal, separated by colons, like 01:23:45:67:89:ab:cd:ef"); - else if ( $numberoption['type'] == 'boolean' && $numberoption['value'] != 'true' && $numberoption['value'] != 'false' && $numberoption['value'] != 'on' && $numberoption['value'] != 'off' ) + } else if ($numberoption['type'] == 'boolean' && $numberoption['value'] != 'true' && $numberoption['value'] != 'false' && $numberoption['value'] != 'on' && $numberoption['value'] != 'off') { $input_errors[] = gettext("Boolean type must be true, false, on, or off."); - else if ( $numberoption['type'] == 'unsigned integer 8' && (!is_numeric($numberoption['value']) || $numberoption['value'] < 0 || $numberoption['value'] > 255) ) + } else if ($numberoption['type'] == 'unsigned integer 8' && (!is_numeric($numberoption['value']) || $numberoption['value'] < 0 || $numberoption['value'] > 255)) { $input_errors[] = gettext("Unsigned 8-bit integer type must be a number in the range 0 to 255."); - else if ( $numberoption['type'] == 'unsigned integer 16' && (!is_numeric($numberoption['value']) || $numberoption['value'] < 0 || $numberoption['value'] > 65535) ) + } else if ($numberoption['type'] == 'unsigned integer 16' && (!is_numeric($numberoption['value']) || $numberoption['value'] < 0 || $numberoption['value'] > 65535)) { $input_errors[] = gettext("Unsigned 16-bit integer type must be a number in the range 0 to 65535."); - else if ( $numberoption['type'] == 'unsigned integer 32' && (!is_numeric($numberoption['value']) || $numberoption['value'] < 0 || $numberoption['value'] > 4294967295) ) + } else if ($numberoption['type'] == 'unsigned integer 32' && (!is_numeric($numberoption['value']) || $numberoption['value'] < 0 || $numberoption['value'] > 4294967295)) { $input_errors[] = gettext("Unsigned 32-bit integer type must be a number in the range 0 to 4294967295."); - else if ( $numberoption['type'] == 'signed integer 8' && (!is_numeric($numberoption['value']) || $numberoption['value'] < -128 || $numberoption['value'] > 127) ) + } else if ($numberoption['type'] == 'signed integer 8' && (!is_numeric($numberoption['value']) || $numberoption['value'] < -128 || $numberoption['value'] > 127)) { $input_errors[] = gettext("Signed 8-bit integer type must be a number in the range -128 to 127."); - else if ( $numberoption['type'] == 'signed integer 16' && (!is_numeric($numberoption['value']) || $numberoption['value'] < -32768 || $numberoption['value'] > 32767) ) + } else if ($numberoption['type'] == 'signed integer 16' && (!is_numeric($numberoption['value']) || $numberoption['value'] < -32768 || $numberoption['value'] > 32767)) { $input_errors[] = gettext("Signed 16-bit integer type must be a number in the range -32768 to 32767."); - else if ( $numberoption['type'] == 'signed integer 32' && (!is_numeric($numberoption['value']) || $numberoption['value'] < -2147483648 || $numberoption['value'] > 2147483647) ) + } else if ($numberoption['type'] == 'signed integer 32' && (!is_numeric($numberoption['value']) || $numberoption['value'] < -2147483648 || $numberoption['value'] > 2147483647)) { $input_errors[] = gettext("Signed 32-bit integer type must be a number in the range -2147483648 to 2147483647."); - else if ( $numberoption['type'] == 'ip-address' && !is_ipaddrv4($numberoption['value']) && !is_hostname($numberoption['value']) ) + } else if ($numberoption['type'] == 'ip-address' && !is_ipaddrv4($numberoption['value']) && !is_hostname($numberoption['value'])) { $input_errors[] = gettext("IP address or host type must be an IP address or host name."); + } } } @@ -334,20 +375,23 @@ if (isset($_POST['submit'])) { $input_errors[] = gettext("The specified range lies outside of the current subnet."); } - if (ip2ulong($_POST['range_from']) > ip2ulong($_POST['range_to'])) + if (ip2ulong($_POST['range_from']) > ip2ulong($_POST['range_to'])) { $input_errors[] = gettext("The range is invalid (first element higher than second element)."); + } if (is_numeric($pool) || ($act == "newpool")) { $rfrom = $config['dhcpd'][$if]['range']['from']; $rto = $config['dhcpd'][$if]['range']['to']; - if (is_inrange_v4($_POST['range_from'], $rfrom, $rto) || is_inrange_v4($_POST['range_to'], $rfrom, $rto)) + if (is_inrange_v4($_POST['range_from'], $rfrom, $rto) || is_inrange_v4($_POST['range_to'], $rfrom, $rto)) { $input_errors[] = gettext("The specified range must not be within the DHCP range for this interface."); + } } foreach ($a_pools as $id => $p) { - if (is_numeric($pool) && ($id == $pool)) + if (is_numeric($pool) && ($id == $pool)) { continue; + } if (is_inrange_v4($_POST['range_from'], $p['range']['from'], $p['range']['to']) || is_inrange_v4($_POST['range_to'], $p['range']['from'], $p['range']['to'])) { @@ -357,17 +401,19 @@ if (isset($_POST['submit'])) { } /* make sure that the DHCP Relay isn't enabled on this interface */ - if (isset($config['dhcrelay']['enable']) && (stristr($config['dhcrelay']['interface'], $if) !== false)) - $input_errors[] = sprintf(gettext("You must disable the DHCP relay on the %s interface before enabling the DHCP server."),$iflist[$if]); + if (isset($config['dhcrelay']['enable']) && (stristr($config['dhcrelay']['interface'], $if) !== false)) { + $input_errors[] = sprintf(gettext("You must disable the DHCP relay on the %s interface before enabling the DHCP server."), $iflist[$if]); + } $dynsubnet_start = ip2ulong($_POST['range_from']); $dynsubnet_end = ip2ulong($_POST['range_to']); if (is_array($a_maps)) { foreach ($a_maps as $map) { - if (empty($map['ipaddr'])) + if (empty($map['ipaddr'])) { continue; + } if ((ip2ulong($map['ipaddr']) > $dynsubnet_start) && - (ip2ulong($map['ipaddr']) < $dynsubnet_end)) { + (ip2ulong($map['ipaddr']) < $dynsubnet_end)) { $input_errors[] = sprintf(gettext("The DHCP range cannot overlap any static DHCP mappings.")); break; } @@ -381,8 +427,9 @@ if (isset($_POST['submit'])) { if ($act == "newpool") { $dhcpdconf = array(); } else { - if (!is_array($config['dhcpd'][$if])) + if (!is_array($config['dhcpd'][$if])) { $config['dhcpd'][$if] = array(); + } $dhcpdconf = $config['dhcpd'][$if]; } } else { @@ -394,8 +441,9 @@ if (isset($_POST['submit'])) { exit; } } - if (!is_array($dhcpdconf['range'])) + if (!is_array($dhcpdconf['range'])) { $dhcpdconf['range'] = array(); + } $dhcpd_enable_changed = false; @@ -410,8 +458,9 @@ if (isset($_POST['submit'])) { $dhcpdconf['enable'] = $new_dhcpd_enable; $dhcpdconf['staticarp'] = ($_POST['staticarp']) ? true : false; $previous = $dhcpdconf['failover_peerip']; - if($previous <> $_POST['failover_peerip']) + if ($previous <> $_POST['failover_peerip']) { mwexec("/bin/rm -rf /var/dhcpd/var/db/*"); + } $dhcpdconf['failover_peerip'] = $_POST['failover_peerip']; // dhcpleaseinlocaltime is global to all interfaces. So update the setting on all interfaces. foreach ($config['dhcpd'] as &$dhcpdifitem) { @@ -430,20 +479,26 @@ if (isset($_POST['submit'])) { $dhcpdconf['netmask'] = $_POST['netmask']; unset($dhcpdconf['winsserver']); - if ($_POST['wins1']) + if ($_POST['wins1']) { $dhcpdconf['winsserver'][] = $_POST['wins1']; - if ($_POST['wins2']) + } + if ($_POST['wins2']) { $dhcpdconf['winsserver'][] = $_POST['wins2']; + } unset($dhcpdconf['dnsserver']); - if ($_POST['dns1']) + if ($_POST['dns1']) { $dhcpdconf['dnsserver'][] = $_POST['dns1']; - if ($_POST['dns2']) + } + if ($_POST['dns2']) { $dhcpdconf['dnsserver'][] = $_POST['dns2']; - if ($_POST['dns3']) + } + if ($_POST['dns3']) { $dhcpdconf['dnsserver'][] = $_POST['dns3']; - if ($_POST['dns4']) + } + if ($_POST['dns4']) { $dhcpdconf['dnsserver'][] = $_POST['dns4']; + } $dhcpdconf['gateway'] = $_POST['gateway']; $dhcpdconf['domain'] = $_POST['domain']; @@ -458,10 +513,12 @@ if (isset($_POST['submit'])) { $dhcpdconf['mac_deny'] = $_POST['mac_deny']; unset($dhcpdconf['ntpserver']); - if ($_POST['ntp1']) + if ($_POST['ntp1']) { $dhcpdconf['ntpserver'][] = $_POST['ntp1']; - if ($_POST['ntp2']) + } + if ($_POST['ntp2']) { $dhcpdconf['ntpserver'][] = $_POST['ntp2']; + } $dhcpdconf['tftp'] = $_POST['tftp']; $dhcpdconf['ldap'] = $_POST['ldap']; @@ -473,8 +530,9 @@ if (isset($_POST['submit'])) { $dhcpdconf['rootpath'] = $_POST['rootpath']; // Handle the custom options rowhelper - if(isset($dhcpdconf['numberoptions']['item'])) + if (isset($dhcpdconf['numberoptions']['item'])) { unset($dhcpdconf['numberoptions']['item']); + } $dhcpdconf['numberoptions'] = $numberoptions; @@ -510,14 +568,17 @@ if ((isset($_POST['submit']) || isset($_POST['apply'])) && (!$input_errors)) { clear_subsystem_dirty('staticmaps'); } else { $retvaldhcp = services_dhcpd_configure(); - if ($retvaldhcp == 0) + if ($retvaldhcp == 0) { clear_subsystem_dirty('staticmaps'); + } } - if ($dhcpd_enable_changed) + if ($dhcpd_enable_changed) { $retvalfc = filter_configure(); + } - if($retvaldhcp == 1 || $retvaldns == 1 || $retvalfc == 1) + if ($retvaldhcp == 1 || $retvaldns == 1 || $retvalfc == 1) { $retval = 1; + } $savemsg = get_std_save_message($retval); } @@ -534,10 +595,11 @@ if ($act == "del") { if ($a_maps[$_GET['id']]) { unset($a_maps[$_GET['id']]); write_config(); - if(isset($config['dhcpd'][$if]['enable'])) { + if (isset($config['dhcpd'][$if]['enable'])) { mark_subsystem_dirty('staticmaps'); - if (isset($config['dnsmasq']['enable']) && isset($config['dnsmasq']['regdhcpstatic'])) + if (isset($config['dnsmasq']['enable']) && isset($config['dnsmasq']['regdhcpstatic'])) { mark_subsystem_dirty('hosts'); + } } header("Location: services_dhcp.php?if={$if}"); exit; @@ -545,7 +607,7 @@ if ($act == "del") { } $closehead = false; -$pgtitle = array(gettext("Services"),gettext("DHCP server")); +$pgtitle = array(gettext("Services"), gettext("DHCP server")); $shortcut_section = "dhcp"; include("head.inc"); @@ -689,7 +751,8 @@ include("head.inc"); " . gettext("You must apply the changes in order for them to take effect."));?>
- + - - + + + + + + + +
+
$ifname) { $oc = $config['interfaces'][$ifent]; if ((is_array($config['dhcpd'][$ifent]) && !isset($config['dhcpd'][$ifent]['enable']) && (!is_ipaddrv4($oc['ipaddr']))) || - (!is_array($config['dhcpd'][$ifent]) && (!is_ipaddrv4($oc['ipaddr'])))) + (!is_array($config['dhcpd'][$ifent]) && (!is_ipaddrv4($oc['ipaddr'])))) { continue; - if ($ifent == $if) + } + if ($ifent == $if) { $active = true; - else + } else { $active = false; + } $tab_array[] = array($ifname, $active, "services_dhcp.php?if={$ifent}"); $tabscounter++; } @@ -717,572 +782,655 @@ include("head.inc"); } display_top_tabs($tab_array); ?> -
-
- + + + + - +
+
+ - - - - + + + + - - - - - - - - - - - + - - - - - - - - - - - + + + -
In-use DHCP Pool Ranges: - -
- - - - -
- - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  - onclick="enable_change(false)" /> -
  + onclick="enable_change(false)" /> + +
  - /> -
-
- -
- -
- -
- - - - +
  + /> +
+ +
- -
+ +
- -    -
- - - - - - + - - - - - - - + + - - - - - + + -
- - - - - -
plus
+
+
- - -   - -   - - - - - - -
edit')">delete
-
+ +
- - - - - -
add
-
+ + - + +
In-use DHCP Pool Ranges: + +
+ + - + + +
+ + - + +
-
-
- -
-
-
-
-
- -
-
- -
-
- -
-
- -
- -
-
- -
- -
-
- -
-
- 20).");?> -
- - - + + - - - - - + + + + - -
- />  + +
+
  - +
+ +   
-
- - - + + + - - - - - + + + + - -
- /> +
+ - - - + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ plus +
+
+ + +   + +   + + + + + + +
+ edit + + ')">delete +
+
+ + + + + +
+ add +
+
  - +
+
+
-
-
- " /> - -
- -
-
- " /> - -
- -
-
- " /> - -
- -
-
- " /> - -
- -
-
- " /> - -
- -
-
- " /> - -
- -
-
- " /> - -
- - -
  - - - - - - - - " onclick="enable_change(true)" /> -
 


-
,

-
-
-

-
- - - - - - - - - - - - - - - - - "" or $mapent['ipaddr'] <> ""): ?> - - - - - - - - - - - - - - - -
 
- - - - - -
add
-
- - ARP Table Static Entry - - - - -   - -   - -   - - - - - -
edit')">delete
-
- - - - - + +
add
+ + + + + + + + + + + + + "" or $mapent['ipaddr'] <> ""): +?> + + + + + + + + + + + + +
 
+ + + + + +
+ add +
+
+ + ARP Table Static Entry + + + + +   + +   + +   + + + + + + +
edit')">delete
+
+ + + + + +
add
+
+ +
- -
-
+
+
  + + " onclick="enable_change(true)" /> +
  +

+ + + +
+
+
+ \ + , +
+ +
+
+
+
+

+
- - - - - -
- " /> - -
- - - - - - -
- " /> - -
- - - - - - - -
- " /> - -
- - - - - - -
- " /> - -
- - - - - - -
- " /> - -
- - - - - -   - - - " onclick="enable_change(true)" /> - - - -   -


-
,

-
-
-

- - - - - - - - - - - - - - - - - - "" or $mapent['ipaddrv6'] <> ""): ?> - - - - - - - - - - - - - - -
 
- - - - - -
add
-
- - -   - -   - -   - - - - - - -
edit')">delete
-
- - - - - -
add
+
- - - +