} } } # validate and normalize MAC address if ($action !== "delete") { if (strlen(@$address['mac']) > 0) { if ($User->validate_mac($address['mac']) === false) { $errors[] = _('Invalid MAC address') . "!"; } else { $address['mac'] = $User->reformat_mac_address($address['mac'], 1); } } } # modify action - if delete ok, dynamically reset add / edit -> if IP already exists set edit if ($action != "delete") { $address['action'] = $Addresses->address_exists($m, $address['subnetId']) === true ? "edit" : "add"; } # if it fails set error log if (!$Addresses->modify_address($address, false)) { $errors[] = _('Cannot') . ' ' . $address['action'] . ' ' . _('IP address') . ' ' . $Addresses->transform_to_dotted($m); } # next IP $m = gmp_strval(gmp_add($m, 1)); } # print errors if they exist if (isset($errors)) { $log = $Result->array_to_log($errors); $Result->show("danger", $log, false); $Log->write("IP address modification", "'Error {$action} range {$address['start']} - {$address['stop']}<br> {$log}", 2); } else { # reset IP for mailing
// array size must be at least 9 if (sizeof($lineArr) < 9) { $errors[] = "Line {$k} is invalid"; unset($outFile[$k]); //wrong line, unset! } else { // reformat IP state $lineArr[1] = $Addresses->address_type_type_to_index($lineArr[1]); // reformat device from name to id foreach ($devices as $d) { if ($d->hostname == $lineArr[6]) { $lineArr[6] = $d->id; } } // set action if ($id = $Addresses->address_exists($lineArr[0], $_POST['subnetId'], false)) { $action = "edit"; } else { $action = "add"; } // set insert / update values $address_insert = array("action" => $action, "subnetId" => $_POST['subnetId'], "ip_addr" => $lineArr[0], "state" => $Addresses->address_type_type_to_index($lineArr[1]), "description" => $lineArr[2], "dns_name" => $lineArr[3], "mac" => $lineArr[4], "owner" => $lineArr[5], "switch" => $lineArr[6], "port" => $lineArr[7], "note" => $lineArr[8]); // add id if ($action == "edit") { $address_insert["id"] = $id; } // insert if ($Addresses->modify_address($address_insert) === false) { $errors++; } else { if ($action == "edit") {
foreach ($_POST as $key => $line) { // IP address if (substr($key, 0, 2) == "ip") { $res[substr($key, 2)]['ip_addr'] = $line; } // description if (substr($key, 0, 11) == "description") { $res[substr($key, 11)]['description'] = $line; } // dns name if (substr($key, 0, 8) == "dns_name") { $res[substr($key, 8)]['dns_name'] = $line; } //verify that it is not already in table! if (substr($key, 0, 2) == "ip") { if ($Addresses->address_exists($line, $_POST['subnetId']) === true) { $Result->show("danger", "IP address {$line} already exists!", true); } } } # insert entries if (sizeof($res) > 0) { $errors = 0; foreach ($res as $r) { # set insert values $values = array("ip_addr" => $Subnets->transform_to_decimal($r['ip_addr']), "dns_name" => $r['dns_name'], "subnetId" => $_POST['subnetId'], "description" => $r['description'], "lastSeen" => date("Y-m-d H:i:s")); # insert if (!$Admin->object_modify("ipaddresses", "add", "id", $values)) { $Result->show("danger", "Failed to import entry " . $r['ip_addr'], false); $errors++; }
//set reject values $values = array("id" => $_POST['requestId'], "processed" => 1, "accepted" => 0, "adminComment" => @$_POST['adminComment']); if (!$Admin->object_modify("requests", "edit", "id", $values)) { $Result->show("danger", _("Failed to reject IP request"), true); } else { $Result->show("success", _("Request has beed rejected"), false); } # send mail $Tools->ip_request_send_mail("reject", $_POST); } else { // fetch subnet $subnet_temp = $Addresses->transform_to_dotted($subnet['subnet']) . "/" . $subnet['mask']; //verify IP and subnet $Addresses->verify_address($Addresses->transform_address($_POST['ip_addr'], "dotted"), $subnet_temp, false, true); //check if already existing and die if ($Addresses->address_exists($Addresses->transform_address($_POST['ip_addr'], "decimal"), $subnet['id'])) { $Result->show("danger", _('IP address already exists'), true); } //insert to ipaddresses table $values = array("action" => "add", "ip_addr" => $Addresses->transform_address($_POST['ip_addr'], "decimal"), "subnetId" => $_POST['subnetId'], "description" => @$_POST['description'], "dns_name" => @$_POST['dns_name'], "mac" => @$_POST['mac'], "owner" => @$_POST['owner'], "state" => @$_POST['state'], "switch" => @$_POST['switch'], "port" => @$_POST['port'], "note" => @$_POST['note']); if (!$Addresses->modify_address($values)) { $Result->show("danger", _("Failed to create IP address"), true); } //accept message $values2 = array("id" => $_POST['requestId'], "processed" => 1, "accepted" => 1, "adminComment" => $comment); if (!$Admin->object_modify("requests", "edit", "id", $values2)) { $Result->show("danger", _("Cannot confirm IP address"), true); } else { $Result->show("success", _("IP request accepted/rejected"), false); } # send mail
//fail if ($request === false) { $Result->show("danger", _("Request does not exist"), true, true); } else { $request = (array) $request; } # verify permissions if ($Subnets->check_permission($User->user, $request['subnetId']) != 3) { $Result->show("danger", _('You do not have permissions to process this request') . "!", true, true); } # set IP address # if provided (requested from logged in user) check if already in use, if it is warn and set next free # else get next free if (strlen($request['ip_addr']) > 0) { // check if it exists if ($Addresses->address_exists($request['ip_addr'], $request['subnetId'])) { $errmsg = "Requested IP address ({$request['ip_addr']}) already used. First available address automatically provided."; $errmsg_class = "warning"; //fetch first free $ip_address = $Addresses->transform_to_dotted($Addresses->get_first_available_address($request['subnetId'], $Subnets)); } else { $ip_address = $request['ip_addr']; } } else { // fetch first free $ip_address = $Addresses->transform_to_dotted($Addresses->get_first_available_address($request['subnetId'], $Subnets)); } // false if ($ip_address === false) { $ip_address = ""; $errmsg = "No IP addresses available in requested subnet";