Example #1
0
     $existingFqn = "{$mapent['hostname']}.{$mapent['domain']}";
     $candidateFqn = "{$_POST['hostname']}.{$_POST['domain']}";
     if ($existingFqn == $candidateFqn && $mapent['hostname'] || $mapent['mac'] == $_POST['mac'] && $mapent['mac'] || $mapent['ipaddr'] == $_POST['ipaddr'] && $mapent['ipaddr'] || $mapent['cid'] == $_POST['cid'] && $mapent['cid']) {
         $input_errors[] = gettext("This fully qualified hostname (Hostname + Domainname), IP, MAC address or Client identifier already exists.");
         break;
     }
 }
 /* make sure it's not within the dynamic subnet */
 if ($_POST['ipaddr']) {
     $dynsubnet_start = ip2ulong($config['dhcpd'][$if]['range']['from']);
     $dynsubnet_end = ip2ulong($config['dhcpd'][$if]['range']['to']);
     if (ip2ulong($_POST['ipaddr']) >= $dynsubnet_start && ip2ulong($_POST['ipaddr']) <= $dynsubnet_end) {
         $input_errors[] = sprintf(gettext("The IP address must not be within the DHCP range for this interface."));
     }
     foreach ($a_pools as $pidx => $p) {
         if (is_inrange_v4($_POST['ipaddr'], $p['range']['from'], $p['range']['to'])) {
             $input_errors[] = gettext("The IP address must not be within the range configured on a DHCP pool for this interface.");
             break;
         }
     }
     $lansubnet_start = ip2ulong(gen_subnetv4($ifcfgip, $ifcfgsn));
     $lansubnet_end = ip2ulong(gen_subnetv4_max($ifcfgip, $ifcfgsn));
     $ipaddr_int = ip2ulong($_POST['ipaddr']);
     if ($ipaddr_int < $lansubnet_start || $ipaddr_int > $lansubnet_end) {
         $input_errors[] = sprintf(gettext("The IP address must lie in the %s subnet."), $ifcfgdescr);
     }
     if ($ipaddr_int == $lansubnet_start) {
         $input_errors[] = sprintf(gettext("The IP address cannot be the %s network address."), $ifcfgdescr);
     }
     if ($ipaddr_int == $lansubnet_end) {
         $input_errors[] = sprintf(gettext("The IP address cannot be the %s broadcast address."), $ifcfgdescr);
Example #2
0
     $input_errors[] = gettext("A valid IP address or hostname must be specified for the TFTP server.");
 }
 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']) {
     $input_errors[] = gettext("You cannot use the network address in the starting subnet range.");
 }
 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']);
             }
         }
     }
 }
 $noip = false;
 if (is_array($a_maps)) {
     foreach ($a_maps as $map) {
         if (empty($map['ipaddr'])) {
             $noip = true;
         }
     }
 }
 if ($_POST['staticarp'] && $noip) {
     $input_errors[] = gettext("Cannot enable static ARP when you have static map entries without IP addresses. Ensure all static maps have IP addresses and try again.");
Example #3
0
 }
 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)) {
         $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) {
         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'])) {
         $input_errors[] = gettext("The specified range must not be within the range configured on a DHCP pool for this interface.");
         break;
     }
 }
 /* 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]);
 }
 $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'])) {
             continue;
         }
     $input_errors[] = gettext("A valid remote start address must be specified.");
 }
 if ($_POST['radiusserver'] && !is_ipaddr($_POST['radiusserver'])) {
     $input_errors[] = gettext("A valid RADIUS server address must be specified.");
 }
 if (!is_numericint($_POST['n_pppoe_units']) || $_POST['n_pppoe_units'] > 255) {
     $input_errors[] = gettext("Number of PPPoE users must be between 1 and 255");
 }
 if (!is_numericint($_POST['n_pppoe_maxlogin']) || $_POST['n_pppoe_maxlogin'] > 255) {
     $input_errors[] = gettext("User Max Logins must be between 1 and 255");
 }
 if (!is_numericint($_POST['pppoe_subnet']) || $_POST['pppoe_subnet'] > 32) {
     $input_errors[] = gettext("Subnet mask must be an interger between 0 and 32");
 }
 $_POST['remoteip'] = $pconfig['remoteip'] = gen_subnet($_POST['remoteip'], $_POST['pppoe_subnet']);
 if (is_inrange_v4($_POST['localip'], $_POST['remoteip'], ip_after($_POST['remoteip'], $_POST['pppoe_subnet'] - 1))) {
     $input_errors[] = gettext("The specified server address lies in the remote subnet.");
 }
 if ($_POST['localip'] == get_interface_ip($_POST['interface'])) {
     $input_errors[] = gettext("The specified server address is equal to an interface ip address.");
 }
 for ($x = 0; $x < 4999; $x++) {
     if ($_POST["username{$x}"]) {
         if (empty($_POST["password{$x}"])) {
             $input_errors[] = sprintf(gettext("No password specified for username %s"), $_POST["username{$x}"]);
         }
         if ($_POST["ip{$x}"] != "" && !is_ipaddr($_POST["ip{$x}"])) {
             $input_errors[] = sprintf(gettext("Incorrect ip address specified for username %s"), $_POST["username{$x}"]);
         }
     }
 }
     }
 }
 /* make sure it's not within the dynamic subnet */
 if ($_POST['ipaddr']) {
     if (is_inrange_v4($_POST['ipaddr'], $config['dhcpd'][$if]['range']['from'], $config['dhcpd'][$if]['range']['to'])) {
         $input_errors[] = sprintf(gettext("The IP address must not be within the DHCP range for this interface."));
     }
     foreach ($a_pools as $pidx => $p) {
         if (is_inrange_v4($_POST['ipaddr'], $p['range']['from'], $p['range']['to'])) {
             $input_errors[] = gettext("The IP address must not be within the range configured on a DHCP pool for this interface.");
             break;
         }
     }
     $lansubnet_start = gen_subnetv4($ifcfgip, $ifcfgsn);
     $lansubnet_end = gen_subnetv4_max($ifcfgip, $ifcfgsn);
     if (!is_inrange_v4($_POST['ipaddr'], $lansubnet_start, $lansubnet_end)) {
         $input_errors[] = sprintf(gettext("The IP address must lie in the %s subnet."), $ifcfgdescr);
     }
     if ($_POST['ipaddr'] == $lansubnet_start) {
         $input_errors[] = sprintf(gettext("The IP address cannot be the %s network address."), $ifcfgdescr);
     }
     if ($_POST['ipaddr'] == $lansubnet_end) {
         $input_errors[] = sprintf(gettext("The IP address cannot be the %s broadcast address."), $ifcfgdescr);
     }
 }
 if ($_POST['gateway'] && !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'])) {
     $input_errors[] = gettext("A valid IP address must be specified for the primary/secondary WINS servers.");
 }
             continue;
         }
         if (is_inrange_v4($data['ip'], $dhcpifconf['range']['from'], $dhcpifconf['range']['to'])) {
             $data['if'] = $dhcpif;
             $dlskey = $dhcpif . "-" . $dhcpifconf['range']['from'];
             $dhcp_leases_subnet_counter[$dlskey]['dhcpif'] = $dhcpif;
             $dhcp_leases_subnet_counter[$dlskey]['from'] = $dhcpifconf['range']['from'];
             $dhcp_leases_subnet_counter[$dlskey]['to'] = $dhcpifconf['range']['to'];
             $dhcp_leases_subnet_counter[$dlskey]['count'] += 1;
             break;
         }
         // Check if the IP is in the range of any DHCP pools
         if (is_array($dhcpifconf['pool'])) {
             foreach ($dhcpifconf['pool'] as $dhcppool) {
                 if (is_array($dhcppool['range'])) {
                     if (is_inrange_v4($data['ip'], $dhcppool['range']['from'], $dhcppool['range']['to'])) {
                         $data['if'] = $dhcpif;
                         $dlskey = $dhcpif . "-" . $dhcppool['range']['from'];
                         $dhcp_leases_subnet_counter[$dlskey]['dhcpif'] = $dhcpif;
                         $dhcp_leases_subnet_counter[$dlskey]['from'] = $dhcppool['range']['from'];
                         $dhcp_leases_subnet_counter[$dlskey]['to'] = $dhcppool['range']['to'];
                         $dhcp_leases_subnet_counter[$dlskey]['count'] += 1;
                         break 2;
                     }
                 }
             }
         }
     }
 }
 $mac = $data['mac'];
 $mac_hi = strtoupper($mac[0] . $mac[1] . $mac[3] . $mac[4] . $mac[6] . $mac[7]);
Example #7
0
         $input_errors[] = gettext("Secret and confirmation must match");
     }
     if ($_POST['radiussecret'] != $_POST['radiussecret_confirm']) {
         $input_errors[] = gettext("Secret and confirmation must match");
     }
     if (!is_numericint($_POST['n_l2tp_units']) || $_POST['n_l2tp_units'] > 255) {
         $input_errors[] = gettext("Number of L2TP users must be between 1 and 255");
     }
     /* if this is an AJAX caller then handle via JSON */
     if (isAjax() && is_array($input_errors)) {
         input_errors2Ajax($input_errors);
         exit;
     }
     if (!$input_errors) {
         $_POST['remoteip'] = $pconfig['remoteip'] = gen_subnet($_POST['remoteip'], $_POST['l2tp_subnet']);
         if (is_inrange_v4($_POST['localip'], $_POST['remoteip'], ip_after($_POST['remoteip'], $_POST['n_l2tp_units'] - 1))) {
             $input_errors[] = gettext("The specified server address lies in the remote subnet.");
         }
         if ($_POST['localip'] == get_interface_ip("lan")) {
             $input_errors[] = gettext("The specified server address is equal to the LAN interface address.");
         }
     }
 }
 /* if this is an AJAX caller then handle via JSON */
 if (isAjax() && is_array($input_errors)) {
     input_errors2Ajax($input_errors);
     exit;
 }
 if (!$input_errors) {
     $l2tpcfg['remoteip'] = $_POST['remoteip'];
     $l2tpcfg['localip'] = $_POST['localip'];
             }
             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'])) {
                 $input_errors[] = gettext("The specified range must not be within the range configured on a DHCP pool for this interface.");
                 break;
             }
         }
         /* 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("The DHCP relay on the %s interface must be disabled before enabling the DHCP server."), $iflist[$if]);
         }
         if (is_array($a_maps)) {
             foreach ($a_maps as $map) {
                 if (empty($map['ipaddr'])) {
                     continue;
                 }
                 if (is_inrange_v4($map['ipaddr'], $_POST['range_from'], $_POST['range_to'])) {
                     $input_errors[] = sprintf(gettext("The DHCP range cannot overlap any static DHCP mappings."));
                     break;
                 }
             }
         }
     }
 }
 if (!$input_errors) {
     if (!is_numeric($pool)) {
         if ($act == "newpool") {
             $dhcpdconf = array();
         } else {
             if (!is_array($config['dhcpd'][$if])) {
                 $config['dhcpd'][$if] = array();
             }
            foreach ($config['dhcpd'][$ifname]['staticmap'] as $static) {
                $slease = array();
                $slease['ip'] = $static['ipaddr'];
                $slease['act'] = "static";
                $slease['staticmap_array_index'] = $staticmap_array_index;
                $leases[] = $slease;
                $staticmap_array_index++;
            }
        }
    }
    $ifcfgip = get_interface_ip($dhcpif);
    $ifcfgsn = get_interface_subnet($dhcpif);
    $subnet_start = gen_subnetv4($ifcfgip, $ifcfgsn);
    $subnet_end = gen_subnetv4_max($ifcfgip, $ifcfgsn);
    $result['range'] = ip_range_size_v4($config['dhcpd'][$dhcpif]['range']['from'], $config['dhcpd'][$dhcpif]['range']['to']);
    foreach ($leases as $data) {
        if ($data['act'] != "active" && $data['act'] != "static" && $_GET['all'] != 1) {
            continue;
        }
        if ($data['act'] != "static") {
            if (is_inrange_v4($data['ip'], $config['dhcpd'][$dhcpif]['range']['from'], $config['dhcpd'][$dhcpif]['range']['to'])) {
                $result['active'] = $result['active'] + 1;
            }
        } else {
            if (is_inrange_v4($data['ip'], $subnet_start, $subnet_end)) {
                $result['static'] = $result['static'] + 1;
            }
        }
    }
}
echo $result['active'] . ":" . $result['static'] . ":" . $result['range'];
Example #10
0
        continue;
    }
    if ($data['act'] == $active_string) {
        $icon = 'fa-check-circle-o';
    } elseif ($data['act'] == $expired_string) {
        $icon = 'fa-ban';
    } else {
        $icon = 'fa-times-circle-o';
    }
    if ($data['act'] != $static_string) {
        $dlsc = 0;
        foreach ($config['dhcpd'] as $dhcpif => $dhcpifconf) {
            if (!is_array($dhcpifconf['range'])) {
                continue;
            }
            if (is_inrange_v4($data['ip'], $dhcpifconf['range']['from'], $dhcpifconf['range']['to'])) {
                $data['if'] = $dhcpif;
                $dhcp_leases_subnet_counter[$dlsc]['dhcpif'] = $dhcpif;
                $dhcp_leases_subnet_counter[$dlsc]['from'] = $dhcpifconf['range']['from'];
                $dhcp_leases_subnet_counter[$dlsc]['to'] = $dhcpifconf['range']['to'];
                $dhcp_leases_subnet_counter[$dlsc]['count'] = $dhcp_leases_subnet_counter[$dlsc]['count'] + 1;
                break;
            }
            $dlsc++;
        }
    }
    $mac = $data['mac'];
    $mac_hi = strtoupper($mac[0] . $mac[1] . $mac[3] . $mac[4] . $mac[6] . $mac[7]);
    ?>
				<tr>
					<td><i class="fa <?php