Beispiel #1
0
    $Addresses = new Addresses($Database);
    # verify that user is logged in
    $User->check_user_session();
    # set sorting
    $tmp = explode("|", $_POST['direction']);
    $sort['field'] = $tmp[0];
    $sort['direction'] = $tmp[1];
    if ($sort['direction'] == "asc") {
        $sort['directionNext'] = "desc";
    } else {
        $sort['directionNext'] = "asc";
    }
    # subnet-related variables
    $subnet = (array) $Subnets->fetch_subnet(null, $_POST['subnetId']);
    //subnet details
    $subnet_detailed = $Subnets->get_network_boundaries($subnet['subnet'], $subnet['mask']);
    //set network boundaries
    $slaves = $Subnets->has_slaves($subnet['id']) ? true : false;
    //check if subnet has slaves and set slaves flag true/false
    # fetch all addresses - sorted
    if ($slaves) {
        $addresses = $Addresses->fetch_subnet_addresses_recursive($subnet['id'], false, $sort['field'], $sort['direction']);
        $slave_subnets = (array) $Subnets->fetch_subnet_slaves($subnet['id']);
    } else {
        $addresses = $Addresses->fetch_subnet_addresses($subnet['id'], $sort['field'], $sort['direction']);
    }
    # set permissions
    $subnet_permission = $Subnets->check_permission($User->user, $subnet['id']);
}
# We need DNS object
$DNS = new DNS($Database, $User->settings);
Beispiel #2
0
 /**
  * Fetches all possible subnet addresses
  *
  * @access private
  * @param $subnet		//subnet in decimal format
  * @param int $mask		//subnet mask
  * @return void			//array of ip addresses in decimal format
  */
 private function get_all_possible_subnet_addresses($subnet, $mask)
 {
     # initialize classes
     $Subnets = new Subnets($this->Database);
     # make sure we have proper subnet format
     $subnet = $Subnets->transform_address($subnet, "decimal");
     //fetch start and stop addresses
     $boundaries = (object) $Subnets->get_network_boundaries($subnet, $mask);
     //create array
     if ($mask == 32) {
         $ip[] = $Subnets->transform_to_decimal($boundaries->network);
     } elseif ($mask == 31) {
         $ip[] = $Subnets->transform_to_decimal($boundaries->network);
         $ip[] = $Subnets->transform_to_decimal($boundaries->broadcast);
     } else {
         //set loop limits
         $start = gmp_strval(gmp_add($Subnets->transform_to_decimal($boundaries->network), 1));
         $stop = gmp_strval($Subnets->transform_to_decimal($boundaries->broadcast));
         //loop
         for ($m = $start; $m < $stop; $m++) {
             $ip[] = $m;
         }
     }
     //return
     return $ip;
 }
         if (!empty($cdata['vlan']) && strtolower($cdata['vlan']) != "na") {
             if (!isset($vlan_data[$cdom][$cdata['vlan']])) {
                 $msg .= "VLAN not found in provided domain.";
                 $action = "error";
             } else {
                 $cdata['vlanId'] = $vlan_data[$cdom][$cdata['vlan']]['vlanId'];
             }
         } else {
             # no VLAN provided
             $cdata['vlanId'] = 0;
         }
     }
 }
 # check data format
 if ($action != "error") {
     if ($net = $Subnets->get_network_boundaries($cdata['subnet'], $cdata['mask'])) {
         $cdata['mask'] = $net['bitmask'];
         $cidr_check = $Subnets->verify_cidr_address($cdata['subnet'] . "/" . $cdata['mask']);
         if (strlen($cidr_check) > 5) {
             $msg .= $cidr_check;
             $action = "error";
         }
     } else {
         $msg .= $net['message'];
         $action = "error";
     }
     if (preg_match("/[;'\"]/", $cdata['description'])) {
         $msg .= "Invalid characters in description.";
         $action = "error";
     }
     if (!empty($cdata['vrf']) && !preg_match("/^[a-zA-Z0-9-:]+\$/", $cdata['vrf'])) {
Beispiel #4
0
$Result = new Result();
# verify that user is logged in
$User->check_user_session();
# validate csrf cookie
$_POST['csrf_cookie'] == $_SESSION['csrf_cookie'] ?: $Result->show("danger", _("Invalid CSRF cookie"), true);
# ID must be numeric
if (!is_numeric($_POST['subnetId'])) {
    $Result->show("danger", _("Invalid ID"), true);
}
# verify that user has write permissions for subnet
if ($Subnets->check_permission($User->user, $_POST['subnetId']) < 3) {
    $Result->show("danger", _('You do not have permissions to resize subnet') . '!', true);
}
# fetch old subnet details and set new
$subnet_old = (array) $Subnets->fetch_subnet(null, $_POST['subnetId']);
# verify resizing
$Subnets->verify_subnet_resize($subnet_old['subnet'], $_POST['newMask'], $subnet_old['id'], $subnet_old['vrfId'], $subnet_old['masterSubnetId'], $subnet_old['mask'], $subnet_old['sectionId']);
# we need to recalculate subnet address if needed
if ($subnet_old['mask'] < $_POST['newMask']) {
    $subnet_new['subnet'] = $subnet_old['subnet'];
} else {
    $new_boundaries = $Subnets->get_network_boundaries($Subnets->transform_address($subnet_old['subnet'], "dotted"), $_POST['newMask']);
    $subnet_new['subnet'] = $Subnets->transform_address($new_boundaries['network'], "decimal");
}
# set update values
$values = array("id" => $_POST['subnetId'], "subnet" => $subnet_new['subnet'], "mask" => $_POST['newMask']);
if (!$Subnets->modify_subnet("resize", $values)) {
    $Result->show("danger", _("Error resizing subnet") . "!", true);
} else {
    $Result->show("success", _("Subnet resized successfully") . "!", true);
}