/** * CSV import IP address * * provided input is CSV line! */ function importCSVline($line, $subnetId) { global $database; /* get subnet details by Id */ $subnetDetails = getSubnetDetailsById($subnetId); $subnet = Transform2long($subnetDetails['subnet']) . "/" . $subnetDetails['mask']; /* verify! */ $err = VerifyIpAddress($line[0], $subnet); if ($err) { return _('Wrong IP address') . ' - ' . $err . ' - ' . $line[0]; } /* check for duplicates */ if (checkDuplicate($line[0], $subnetId)) { return _('IP address already exists') . ' - ' . $line[0]; } /* get custom fields */ $myFields = getCustomFields('ipaddresses'); if (sizeof($myFields) > 0) { $import['fieldName'] = ""; $import['fieldValue'] = ""; $m = 9; foreach ($myFields as $field) { //escape chars $line[$m] = mysqli_real_escape_string($database, $line[$m]); $import['fieldName'] .= ",`{$field['name']}`"; $import['fieldValue'] .= ",'{$line[$m]}'"; $m++; } } /* escape chars */ foreach ($line as $k => $l) { $line[$k] = mysqli_real_escape_string($database, $l); } /* all ok, set query */ $query = "insert into ipaddresses "; $query .= "(`subnetId`, `ip_addr`, `state`, `description`, `dns_name`, `mac`, `owner`, `switch`, `port`, `note` {$import['fieldName']} ) "; $query .= "values "; $query .= "('{$subnetId}','" . Transform2decimal($line[0]) . "', '{$line['1']}','{$line['2']}','{$line['3']}','{$line['4']}','{$line['5']}','{$line['6']}','{$line['7']}','{$line['8']}' {$import['fieldValue']});"; /* print "<pre>"; print_r($line); die('alert alert-danger'); */ /* set log details */ $log = prepareLogFromArray($line); /* execute */ try { $database->executeQuery($query); } catch (Exception $e) { $error = $e->getMessage(); } if (!isset($e)) { updateLogTable('CSV import of IP address ' . $line[1] . ' succeeded', $log, 0); return true; } else { updateLogTable('CSV import of IP address ' . $line[1] . ' failed', $log, 2); return $error; } }
print "<a class='\t\t\t\t btn btn-xs btn-default disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-envelope-o'></i></a>"; print "<a class='delete_ipaddress btn btn-xs btn-default modIPaddr' data-action='delete' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' data-stopIP='" . $ipaddress[$n]['stopIP'] . "' href='#' id2='" . Transform2long($ipaddress[$n]['ip_addr']) . "'>\t\t<i class='fa fa-gray fa-times'></i></a>"; } else { print "<a class='edit_ipaddress btn btn-xs btn-default modIPaddr' data-action='edit' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' >\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-pencil'></i></a>"; print "<a class='ping_ipaddress btn btn-xs btn-default' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' rel='tooltip' data-container='body' title='" . _('Check avalibility') . "'>\t\t\t\t\t<i class='fa fa-gray fa-cogs'></i></a>"; print "<a class='search_ipaddress btn btn-xs btn-default "; if (strlen($dnsResolved['name']) == 0) { print "disabled"; } print "' href='tools/search/{$dnsResolved['name']}' "; if (strlen($dnsResolved['name']) != 0) { print "rel='tooltip' data-container='body' title='" . _('Search same hostnames in db') . "'"; } print ">\t<i class='fa fa-gray fa-search'></i></a>"; print "<a class='mail_ipaddress btn btn-xs btn-default ' href='#' data-id='" . $ipaddress[$n]['id'] . "' rel='tooltip' data-container='body' title='" . _('Send mail notification') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-envelope-o'></i></a>"; print "<a class='delete_ipaddress btn btn-xs btn-default modIPaddr' data-action='delete' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' id2='" . Transform2long($ipaddress[$n]['ip_addr']) . "'>\t\t<i class='fa fa-gray fa-times'> </i></a>"; } } else { if ($ipaddress[$n]['class'] == "range-dhcp") { print "<a class='edit_ipaddress btn btn-xs btn-default disabled' rel='tooltip' data-container='body' title='" . _('Edit IP address details (disabled)') . "'>\t<i class='fa fa-gray fa-pencil'></i></a>"; print "<a class='\t\t\t\t btn btn-xs btn-default disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-cogs'></i></a>"; print "<a class='\t\t\t\t btn btn-xs btn-default disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-search'></i></a>"; print "<a class='\t\t\t\t btn btn-xs btn-default disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-envelope-o'></i></a>"; print "<a class='delete_ipaddress btn btn-xs btn-default disabled' rel='tooltip' data-container='body' title='" . _('Delete IP address (disabled)') . "'>\t\t\t<i class='fa fa-gray fa-times'></i></a>"; } else { print "<a class='edit_ipaddress btn btn-xs btn-default disabled' rel='tooltip' data-container='body' title='" . _('Edit IP address details (disabled)') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-pencil'></i></a>"; print "<a class='\t\t\t\t btn btn-xs btn-default disabled' data-id='" . $ipaddress[$n]['id'] . "' href='#' rel='tooltip' data-container='body' title='" . _('Check avalibility') . "'>\t\t\t\t\t<i class='fa fa-gray fa-cogs'></i></a>"; print "<a class='search_ipaddress btn btn-xs btn-default "; if (strlen($dnsResolved['name']) == 0) { print "disabled"; }
} else { $errors[] = $error; } } /* ask must be > 8 */ if ($_POST['newMask'] < 8) { die('<div class="alert alert-danger">' . _('New mask must be at least /8') . '!</div>'); } /* * if strict mode is enabled check that is is still inside master subnet! */ if ($section['strictMode'] == 1) { if (!($overlap = verifySubnetNesting($subnetOld['masterSubnetId'], transform2long($subnetOld['subnet']) . "/" . $_POST['newMask'])) && $subnetOld['masterSubnetId'] != 0) { # get master details $master = getSubnetDetailsById($subnetOld['masterSubnetId']); $master = Transform2long($master['subnet']) . "/" . $master['mask'] . " - " . $master['description']; $errors[] = _("New subnet not in master subnet") . "!<br>({$master})"; } } /* * If subnet has slaves make sure all slaves are still inside! */ if ($section['strictMode'] == 1) { $slaves = getAllSlaveSubnetsBySubnetId($_POST['subnetId']); if (sizeof($slaves) > 0) { foreach ($slaves as $slave) { if (!isSubnetInsideSubnet(transform2long($slave['subnet']) . "/" . $slave['mask'], transform2long($subnetOld['subnet']) . "/" . $_POST['newMask'])) { $errors[] = _("Nested subnet out of new subnet") . "!<br>(" . transform2long($slave['subnet']) . "/{$slave['mask']} - {$slave['description']})"; } } }
/** * Send IP result mail - reject or confirm reservation */ function sendIPResultEmail($request) { # get settings global $settings; global $mail; # set subject based on action if ($request['action'] == "accept") { $subject = _("IP address request") . " (" . Transform2long($request['ip_addr']) . ") " . _("{$request['action']}ed"); } else { $subject = _("IP address request {$request['action']}ed"); } # set additional headers $mail['recipients'] = $request['requester']; // it is sent to requester this time! $mail['subject'] = $subject; # add admins to CC $admins = getAllAdminUsers(); $cc = ""; foreach ($admins as $admin) { $cc .= '' . $admin['email'] . ', '; } $cc = substr($cc, 0, -2); $mail['headers'] .= 'Cc: ' . $cc . "\r\n"; # get active user name */ $sender = getActiveUserDetails(); # get subnet details $subnet = getSubnetDetailsById($request['subnetId']); $subnet2 = Transform2long($subnet['subnet']) . "/" . $subnet['mask']; # get section detaiils $section = getSectionDetailsById($subnet['sectionId']); # reformat \n to breaks $request['comment'] = str_replace("\n", "<br>", $request['comment']); $request['adminComment'] = str_replace("\n", "<br>", $request['adminComment']); # set html content if ($settings['htmlMail'] == "1") { $mail['content'] = $mail['header']; $mail['content'] .= "<tr><td style='padding:5px;margin:0px;color:#333;font-size:16px;text-shadow:1px 1px 1px white;border-bottom:1px solid #eeeeee;' colspan='2'><font face='Helvetica, Verdana, Arial, sans-serif' style='font-size:16px;'>{$subject}</font></td></tr>"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;border-top:1px solid white;padding-top:10px;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Section') . ' </font></td><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;border-top:1px solid white;padding-top:10px;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $section['name'] . ' (' . $section['description'] . ')</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Subnet') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $subnet2 . '</font></td></tr>' . "\n"; if ($request['action'] == "accept") { $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('assigned IP address') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . Transform2long($request['ip_addr']) . '</font></td></tr>' . "\n"; } $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Description') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['description'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Hostname') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['dns_name'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Owner') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['owner'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Requested from') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;"><a href="mailto:' . $request['requester'] . '" style="color:#08c;">' . $request['requester'] . '</a></font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;vertical-align:top;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Comment (request)') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['comment'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;vertical-align:top;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Admin accept/reject comment') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px; font-weight:bold;">' . $request['adminComment'] . '</font></td></tr>' . "\n"; $mail['content'] .= "<tr><td style='padding:5px;padding-left:15px;margin:0px;font-style:italic;padding-bottom:3px;text-align:right;color:#ccc;text-shadow:1px 1px 1px white;border-top:1px solid white;' colspan='2'><font face='Helvetica, Verdana, Arial, sans-serif' style='font-size:11px;'>" . _('Sent by user') . " " . $mail['sender']['real_name'] . " at " . date('Y/m/d H:i') . "</font></td></tr>"; $mail['content'] .= $mail['footer2']; } else { # reformat content $content = str_replace("<br>", "\r\n", $content); $content = str_replace("\t", " ", $content); $content = strip_tags($content); # reformat content $request['comment'] = str_replace("<br>", "\r\n", $request['comment']); $request['adminComment'] = str_replace("<br>", "\r\n", $request['adminComment']); $mail['content'] = $mail['header']; $mail['content'] .= "{$subject}" . "\r\n------------------------------\r\n\r\n"; $mail['content'] .= _("Section") . ": {$section['name']} ({$section['description']})\r\n"; $mail['content'] .= _("Subnet") . ": {$subnet2}\r\n"; if ($request['action'] == "accept") { $mail['content'] .= _("Assigned IP address") . ": " . Transform2long($request['ip_addr']) . "\r\n"; } $mail['content'] .= _("Description") . ": {$request['description']}\r\n"; $mail['content'] .= _("Hostname") . ": {$request['dns_name']}\r\n"; $mail['content'] .= _("Owner") . ": {$request['owner']}\r\n"; $mail['content'] .= _("Requested by") . ": {$request['requester']}\r\n"; $mail['content'] .= _("Comment (request)") . ": {$request['comment']}\r\n"; $mail['content'] .= _("Admin accept/reject comment") . ": {$request['adminComment']}\r\n"; $mail['content'] .= "\r\nSent by user " . $mail['sender']['real_name'] . " at " . date('Y/m/d H:i'); $mail['content'] .= $mail['footer']; # reset headers $mail['headers'] = 'From: ' . $mail['from'] . "\r\n"; $mail['headers'] .= 'Reply-To: ' . $settings['siteAdminMail'] . "\r\n"; $mail['headers'] .= 'X-Mailer: PHP/' . phpversion() . "\r\n"; $mail['headers'] .= 'Cc: ' . $cc . "\r\n"; } # send mail and update log if (!mail($mail['recipients'], $mail['subject'], $mail['content'], $mail['headers'])) { # write log updateLogTable("IP request response mail (confirm,reject) sending failed", "Sending notification mail to {$mail['recipients']} failed!", $severity = 2); return false; } else { # write log updateLogTable("IP request response mail (confirm,reject) sent ok", "Sending notification mail to {$mail['recipients']} succeeded!", $severity = 0); return true; } }
<tr> <th><?php print _('Requested subnet'); ?> </th> <td> <select name="subnetId" id="subnetId" class="form-control input-sm input-w-auto"> <?php $subnets = fetchAllSubnets(); foreach ($subnets as $subnet) { /* show only subnets that allow IP exporting */ if ($subnet['allowRequests'] == 1) { if ($request['subnetId'] == $subnet['id']) { print '<option value="' . $subnet['id'] . '" selected>' . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ' [' . $subnet['description'] . ']</option>'; } else { print '<option value="' . $subnet['id'] . '">' . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ' [' . $subnet['description'] . ']</option>'; } } } ?> </select> </td> </tr> <!-- IP address --> <tr> <th><?php print _('IP address'); ?> </th> <td> <input type="text" name="ip_addr" class="ip_addr form-control input-sm" value="<?php
//set max $max = sizeof($ip); } $z = 0; //addresses array index // run per MAX_THREADS for ($m = 0; $m <= $max; $m += $settings['scanMaxThreads']) { // create threads $threads = array(); // fork processes for ($i = 0; $i <= $settings['scanMaxThreads'] && $i <= $max; $i++) { //only if index exists! if (isset($ip[$z])) { //start new thread $threads[$z] = new Thread('pingHost'); $threads[$z]->start(Transform2long($ip[$z]), $count, $timeout, true); $z++; //next index } } // wait for all the threads to finish while (!empty($threads)) { foreach ($threads as $index => $thread) { if (!$thread->isAlive()) { //get exit code $exitCode = $thread->getExitCode(); //online, save to array if ($exitCode == 0) { $out['alive'][] = $ip[$index]; } elseif ($exitCode == 1 || $exitCode == 2) { $out['dead'][] = $ip[$index];
print _('Description'); ?> </th> <th><?php print _('Requested by'); ?> </th> </tr> <?php # print requests foreach ($allActiveRequests as $request) { //get subnet details $subnet = getSubnetDetailsById($request['subnetId']); print '<tr>' . "\n"; print "\t<td><button class='btn btn-xs btn-default' data-requestid='{$request['id']}'><i class='fa fa-pencil'></i></button></td>"; print ' <td>' . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ' (' . $subnet['description'] . ')</td>' . "\n"; print ' <td>' . $request['dns_name'] . '</td>' . "\n"; print ' <td>' . $request['description'] . '</td>' . "\n"; print ' <td>' . $request['requester'] . '</td>' . "\n"; print '</tr>' . "\n"; } ?> </table> <?php } ?>
/** * Get IP address details */ function getIpAddrDetailsById($id) { global $database; /* set query, open db connection and fetch results */ $query = 'select * from `ipaddresses` where `id` = "' . $id . '";'; /* execute */ try { $details = $database->getArray($query); } catch (Exception $e) { $error = $e->getMessage(); print "<div class='alert alert-danger'>" . _('Error') . ": {$error}</div>"; return false; } //we only fetch 1 field $details = $details[0]; //change IP address formatting to dotted(long) $details['ip_addr'] = Transform2long($details['ip_addr']); /* return result */ return $details; }
/** * Send IP result mail - reject or confirm reservation */ function sendIPResultEmail($request) { # get settings global $settings; global $mailsettings; global $mail; global $pmail; # set subject based on action if ($request['action'] == "accept") { $subject = _("IP address request") . " (" . Transform2long($request['ip_addr']) . ") " . _("{$request['action']}ed"); } else { $subject = _("IP address request {$request['action']}ed"); } # get active user name */ $sender = getActiveUserDetails(); # get subnet details $subnet = getSubnetDetailsById($request['subnetId']); $subnet2 = Transform2long($subnet['subnet']) . "/" . $subnet['mask']; # get section detaiils $section = getSectionDetailsById($subnet['sectionId']); # reformat \n to breaks $request['comment'] = str_replace("\n", "<br>", $request['comment']); $request['adminComment'] = str_replace("\n", "<br>", $request['adminComment']); # set html content $mail['content'] = $mail['header']; $mail['content'] .= "<tr><td style='padding:5px;margin:0px;color:#333;font-size:16px;text-shadow:1px 1px 1px white;border-bottom:1px solid #eeeeee;' colspan='2'><font face='Helvetica, Verdana, Arial, sans-serif' style='font-size:16px;'>{$subject}</font></td></tr>"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;border-top:1px solid white;padding-top:10px;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Section') . ' </font></td><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;border-top:1px solid white;padding-top:10px;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $section['name'] . ' (' . $section['description'] . ')</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Subnet') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $subnet2 . '</font></td></tr>' . "\n"; if ($request['action'] == "accept") { $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('assigned IP address') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . Transform2long($request['ip_addr']) . '</font></td></tr>' . "\n"; } $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Description') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['description'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Hostname') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['dns_name'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Owner') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['owner'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Requested from') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;"><a href="mailto:' . $request['requester'] . '" style="color:#08c;">' . $request['requester'] . '</a></font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;vertical-align:top;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Comment (request)') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">' . $request['comment'] . '</font></td></tr>' . "\n"; $mail['content'] .= '<tr><td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;vertical-align:top;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px;">• ' . _('Admin accept/reject comment') . ' </font></td> <td style="padding: 0px;padding-left:10px;margin:0px;line-height:18px;text-align:left;"><font face="Helvetica, Verdana, Arial, sans-serif" style="font-size:13px; font-weight:bold;">' . $request['adminComment'] . '</font></td></tr>' . "\n"; $mail['content'] .= "<tr><td style='padding:5px;padding-left:15px;margin:0px;font-style:italic;padding-bottom:3px;text-align:right;color:#ccc;text-shadow:1px 1px 1px white;border-top:1px solid white;' colspan='2'><font face='Helvetica, Verdana, Arial, sans-serif' style='font-size:11px;'>" . _('Sent by user') . " " . $mail['sender']['real_name'] . " at " . date('Y/m/d H:i') . "</font></td></tr>"; $mail['content'] .= $mail['footer2']; # alt content $request['comment'] = str_replace("<br>", "\r\n", $request['comment']); $request['adminComment'] = str_replace("<br>", "\r\n", $request['adminComment']); $mail['contentAlt'] = $mail['headerAlt']; $mail['contentAlt'] .= "{$subject}" . "\r\n------------------------------\r\n\r\n"; $mail['contentAlt'] .= _("Section") . ": {$section['name']} ({$section['description']})\r\n"; $mail['contentAlt'] .= _("Subnet") . ": {$subnet2}\r\n"; if ($request['action'] == "accept") { $mail['contentAlt'] .= _("Assigned IP address") . ": " . Transform2long($request['ip_addr']) . "\r\n"; } $mail['contentAlt'] .= _("Description") . ": {$request['description']}\r\n"; $mail['contentAlt'] .= _("Hostname") . ": {$request['dns_name']}\r\n"; $mail['contentAlt'] .= _("Owner") . ": {$request['owner']}\r\n"; $mail['contentAlt'] .= _("Requested by") . ": {$request['requester']}\r\n"; $mail['contentAlt'] .= _("Comment (request)") . ": {$request['comment']}\r\n"; $mail['contentAlt'] .= _("Admin accept/reject comment") . ": {$request['adminComment']}\r\n"; $mail['contentAlt'] .= "\r\nSent by user " . $mail['sender']['real_name'] . " at " . date('Y/m/d H:i'); $mail['contentAlt'] .= $mail['footerAlt']; # set mail parameters try { $pmail->SetFrom($mailsettings['mAdminMail'], $mailsettings['mAdminName']); // send to requester $pmail->AddAddress($request['requester']); // add admins to CC $admins = getAllAdminUsers(); foreach ($admins as $admin) { $pmail->AddCC($admin['email']); } $pmail->ClearReplyTos(); $pmail->AddReplyTo($mailsettings['mAdminMail'], $mailsettings['mAdminName']); // content $pmail->Subject = $subject; $pmail->AltBody = $mail['contentAlt']; $pmail->MsgHTML($mail['content']); # poÅ¡lji $pmail->Send(); } catch (phpmailerException $e) { updateLogTable("IP request response mail (confirm,reject) sending failed", "Sending notification mail to {$mail['recipients']} failed!\n" . $e->errorMessage(), 2); return false; } catch (Exception $e) { updateLogTable("IP request response mail (confirm,reject) sending failed", "Sending notification mail to {$mail['recipients']} failed!\n" . $e->errorMessage(), 2); return false; } # write log for ok updateLogTable("IP request response mail (confirm,reject) sent ok", "Sending notification mail to {$mail['recipients']} succeeded!", 0); return true; }
/** * CSV import IP address * * provided input is CSV line! */ function importCSVline($line, $subnetId) { /* array */ $line = explode(",", $line); global $db; # get variables from config file $database = new database($db['host'], $db['user'], $db['pass'], $db['name']); /* get subnet details by Id */ $subnetDetails = getSubnetDetailsById($subnetId); $subnet = Transform2long($subnetDetails['subnet']) . "/" . $subnetDetails['mask']; /* verify! */ if (VerifyIpAddress($line[0], $subnet)) { return _('Wrong IP address') . ' - ' . $line[0]; } /* check for duplicates */ if (checkDuplicate($line[0], $subnetId)) { return _('IP address already exists') . ' - ' . $line[0]; } /* reformat state */ switch ($line[5]) { case "Active": $line[5] = "1"; break; case "active": $line[5] = "1"; break; case "Reserved": $line[5] = "2"; break; case "reserved": $line[5] = "2"; break; case "Offline": $line[5] = "0"; break; case "offline": $line[5] = "0"; break; } /* reformat switch! */ $switch = getSwitchDetailsByHostname($line[7]); /* get custom fields */ $myFields = getCustomIPaddrFields(); if (sizeof($myFields) > 0) { $import['fieldName'] = ""; $import['fieldValue'] = ""; $m = 9; foreach ($myFields as $field) { $import['fieldName'] .= ",`{$field['name']}`"; $import['fieldValue'] .= ",'{$line[$m]}'"; $m++; } } /* all ok, set query */ $query = "insert into ipaddresses "; $query .= "(`subnetId`, `ip_addr`, `state`, `description`, `dns_name`, `mac`, `owner`, `switch`, `port`, `note` {$import['fieldName']} ) "; $query .= "values "; $query .= "('{$subnetId}','" . Transform2decimal($line[0]) . "', '{$line['1']}','{$line['2']}','{$line['3']}','{$line['4']}','{$line['5']}','{$line['6']}','{$switch['id']}','{$line['8']}' {$import['fieldValue']});"; /* set log details */ $log = prepareLogFromArray($line); /* execute */ try { $database->executeQuery($query); } catch (Exception $e) { $error = $e->getMessage(); } if (!isset($e)) { updateLogTable('CSV import of IP address ' . $line[1] . ' succeeded', $log, 0); return true; } else { updateLogTable('CSV import of IP address ' . $line[1] . ' failed', $log, 2); return $error; } }
</tr> </tbody> <?php /* content */ $n = 0; $m = $CalculateSubnetDetails['used'] - 1; $n = 0; # count for IP addresses - $n++ per IP address /* print IP addresses ********************/ foreach ($ipaddresses as $ipaddress) { print "<tr>"; print "\t<td class='ipaddress'>" . Transform2long($ipaddress['ip_addr']); if (in_array('state', $setFields)) { print reformatIPState($ipaddress['state']); } print "</td>"; # resolve dns name if not provided, else print it - IPv4 only! if (empty($ipaddress['dns_name']) and $settings['enableDNSresolving'] == 1 and IdentifyAddress($ipaddress['ip_addr']) == "IPv4") { $dnsResolved = ResolveDnsName($ipaddress['ip_addr']); } else { $dnsResolved['class'] = ""; $dnsResolved['name'] = $ipaddress['dns_name']; } print "<td class='{$dnsResolved['class']} hostname'>{$dnsResolved['name']}</td>"; # Print mac address icon! if (in_array('mac', $setFields)) { if (!empty($ipaddress['mac'])) {
} else { if ($line['state'] == "3") { $stateClass = "DHCP"; } } } // </eNovance> } //print table print '<tr class="ipSearch ' . $stateClass . '" id="' . $line['id'] . '" subnetId="' . $line['subnetId'] . '" sectionId="' . $subnet['sectionId'] . '" link="' . $section['name'] . '|' . $subnet['id'] . '">' . "\n"; // <eNovance> // Add a link to an ip address to GLPI if ($line['glpiId'] != '' and $line['glpiId'] != 0) { print " <td><a href=\"http://" . $glpiurl . "/glpi/front/computer.form.php?id=" . $line['glpiId'] . "\" target=\"_blank\">" . Transform2long($line['ip_addr']) . "</a>"; } else { print " <td>" . Transform2long($line['ip_addr']); } // </eNovance> if (in_array('state', $setFields)) { print reformatIPState($line['state']); } print ' </td>' . "\n"; print ' <td>' . $vlan['number'] . '</td>' . "\n"; print ' <td>' . ShortenText($line['description'], $chars = 50) . '</td>' . "\n"; print ' <td>' . $line['dns_name'] . '</td>' . "\n"; # mac if (in_array('mac', $setFields)) { print ' <td>' . "\n"; if (strlen($line['mac']) > 0) { print '<i class="icon-mac" rel="tooltip" title=""MAC: ' . $line['mac'] . '"></i>' . "\n"; }
# remove last or $query = substr($query, 0, -3); # get ony ip's with empty DNS if ($resCnf['emptyonly'] == 1) { $query .= ' and `dns_name` like "" '; } $query .= 'order by `ip_addr` ASC;'; } # fetch records $database = new database($db['host'], $db['user'], $db['pass'], $db['name']); $ipaddresses = $database->getArray($query); # try to update dns records foreach ($ipaddresses as $ip) { # try to resolve $hostname = gethostbyaddr(Transform2long($ip['ip_addr'])); if ($hostname != Transform2long($ip['ip_addr'])) { # update $query = 'update `ipaddresses` set `dns_name` = "' . $hostname . '" where `id` = "' . $ip['id'] . '"'; $database->executeQuery($query); # set text $res[] = 'updated ip address ' . Transform2long($ip['ip_addr']) . ' with hostname ' . $hostname; } } # if verbose print result so it can be emailed via cron! if ($resCnf['verbose'] == 1) { foreach ($res as $line) { print $line . "\n"; } } # close database $database->close();
print "\t\t<a class='\t\t\t\t btn btn-mini disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-gray icon-envelope'></i></a>"; print "\t\t<a class='delete_ipaddress btn btn-mini modIPaddr' data-action='delete' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' id2='" . Transform2long($ipaddress[$n]['ip_addr']) . "' rel='tooltip' title='" . _('Delete IP address') . "'>\t\t\t\t\t<i class='icon-gray icon-remove'> </i></a>"; } else { print "\t\t<a class='edit_ipaddress btn btn-mini modIPaddr' data-action='edit' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' \t\t\t\t\t\t\t\t\t\t\t rel='tooltip' title='" . _('Edit IP address details') . "'>\t\t\t\t\t\t<i class='icon-gray icon-pencil'> </i></a>"; print "\t\t<a class='ping_ipaddress btn btn-mini' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' \t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t\trel='tooltip' title='" . _('Check avalibility') . "'>\t\t\t\t\t\t\t<i class='icon-gray icon-retweet'> </i></a>"; print "\t\t<a class='search_ipaddress btn btn-mini "; if (strlen($dnsResolved['name']) == 0) { print "disabled"; } print "' href='tools/search/{$dnsResolved['name']}' "; if (strlen($dnsResolved['name']) != 0) { print "rel='tooltip' title='" . _('Search same hostnames in db') . "'"; } print ">\t<i class='icon-gray icon-search'></i></a>"; print "\t\t<a class='mail_ipaddress btn btn-mini ' href='#' data-id='" . $ipaddress[$n]['id'] . "' rel='tooltip' title='" . _('Send mail notification') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-gray icon-envelope'></i></a>"; print "\t\t<a class='delete_ipaddress btn btn-mini modIPaddr' data-action='delete' data-subnetId='" . $ipaddress[$n]['subnetId'] . "' data-id='" . $ipaddress[$n]['id'] . "' href='#' id2='" . Transform2long($ipaddress[$n]['ip_addr']) . "' rel='tooltip' title='" . _('Delete IP address') . "'>\t\t\t\t\t<i class='icon-gray icon-remove'> </i></a>"; } } else { if ($ipaddress[$n]['class'] == "range-dhcp") { print "\t\t<a class='edit_ipaddress btn btn-mini disabled' rel='tooltip' title='" . _('Edit IP address details (disabled)') . "'>\t<i class='icon-gray icon-pencil'> </i></a>"; print "\t\t<a class='\t\t\t\t btn btn-mini disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-gray icon-retweet'> </i></a>"; print "\t\t<a class='\t\t\t\t btn btn-mini disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-gray icon-search'></i></a>"; print "\t\t<a class='\t\t\t\t btn btn-mini disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='icon-gray icon-envelope'></i></a>"; print "\t\t<a class='delete_ipaddress btn btn-mini disabled' rel='tooltip' title='" . _('Delete IP address (disabled)') . "'>\t\t\t<i class='icon-gray icon-remove'> </i></a>"; } else { print "\t\t<a class='edit_ipaddress btn btn-mini disabled' rel='tooltip' title='" . _('Edit IP address details (disabled)') . "'>\t\t\t\t\t\t\t<i class='icon-gray icon-pencil'> </i></a>"; print "\t\t<a class='\t\t\t\t btn btn-mini disabled' data-id='" . $ipaddress[$n]['id'] . "' href='#' rel='tooltip' title='" . _('Check avalibility') . "'>\t\t<i class='icon-gray icon-retweet'> </i></a>"; print "\t\t<a class='search_ipaddress btn btn-mini "; if (strlen($dnsResolved['name']) == 0) { print "disabled"; }
/** * print breadcrumbs */ function printBreadcrumbs($req) { # subnets if (isset($req['ipaddrid'])) { if (isset($req['subnetId'])) { # get all parents $parents = getAllParents($req['subnetId']); print "<ul class='breadcrumb'>"; # remove root - 0 array_shift($parents); # section details if (is_numeric($req['section'])) { $section = getSectionDetailsById($req['section']); } else { $section = getSectionDetailsByName($req['section']); } # if name is provided print "\t<li><a href='subnets/{$section['id']}/'>{$section['name']}</a> <span class='divider'></span></li>"; # section name foreach ($parents as $parent) { $subnet = getSubnetDetailsById($parent); if ($subnet['isFolder'] == 1) { print "\t<li><a href='subnets/{$section['id']}/{$parent}/'><i class='icon-folder-open icon-gray'></i> {$subnet['description']}</a> <span class='divider'></span></li>"; # subnets in between } else { print "\t<li><a href='subnets/{$section['id']}/{$parent}/'>{$subnet['description']} (" . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ")</a> <span class='divider'></span></li>"; # subnets in between } } # parent subnet $subnet = getSubnetDetailsById($req['subnetId']); print "\t<li><a href='subnets/{$section['id']}/{$subnet['id']}/'>{$subnet['description']} (" . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ")</a> <span class='divider'></span></li>"; # active subnet # ip $ip = getIpAddrDetailsById($req['ipaddrid']); print "\t<li class='active'>{$ip['ip_addr']}</li>"; # IP address print "</ul>"; } } elseif ($req['page'] == "subnets") { if (isset($req['subnetId'])) { # get all parents $parents = getAllParents($req['subnetId']); print "<ul class='breadcrumb'>"; # remove root - 0 array_shift($parents); # section details if (is_numeric($req['section'])) { $section = getSectionDetailsById($req['section']); } else { $section = getSectionDetailsByName($req['section']); } # if name is provided print "\t<li><a href='subnets/{$section['id']}/'>{$section['name']}</a> <span class='divider'></span></li>"; # section name foreach ($parents as $parent) { $subnet = getSubnetDetailsById($parent); if ($subnet['isFolder'] == 1) { print "\t<li><a href='subnets/{$section['id']}/{$parent}/'><i class='icon-folder-open icon-gray'></i> {$subnet['description']}</a> <span class='divider'></span></li>"; # subnets in between } else { print "\t<li><a href='subnets/{$section['id']}/{$parent}/'>{$subnet['description']} (" . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ")</a> <span class='divider'></span></li>"; # subnets in between } } $subnet = getSubnetDetailsById($req['subnetId']); print "\t<li class='active'>{$subnet['description']} (" . Transform2long($subnet['subnet']) . '/' . $subnet['mask'] . ")</li>"; # active subnet print "</ul>"; } } # subnets if ($req['page'] == "folder") { if (isset($req['subnetId'])) { # get all parents $parents = getAllParents($req['subnetId']); print "<ul class='breadcrumb'>"; # remove root - 0 array_shift($parents); # section details if (is_numeric($req['section'])) { $section = getSectionDetailsById($req['section']); } else { $section = getSectionDetailsByName($req['section']); } # if name is provided print "\t<li><a href='subnets/{$section['id']}/'>{$section['name']}</a> <span class='divider'></span></li>"; # section name foreach ($parents as $parent) { $subnet = getSubnetDetailsById($parent); print "\t<li><a href='subnets/{$section['id']}/{$parent}/'><i class='icon-folder-open icon-gray'></i> {$subnet['description']}</a> <span class='divider'></span></li>"; # subnets in between } $subnet = getSubnetDetailsById($req['subnetId']); print "\t<li class='active'>{$subnet['description']}</li>"; # active subnet print "</ul>"; } } else { if ($req['page'] == "admin") { } else { if ($req['page'] == "tools") { if (isset($req['tpage'])) { print "<ul class='breadcrumb'>"; print "\t<li><a href='tools/'>" . _('Tools') . "</a> <span class='divider'></span></li>"; print "\t<li class='active'>{$req['tpage']}></li>"; print "</ul>"; } } } } }
$html[] = "<tr>"; $html[] = "\t<th style='padding:3px 8px;border:1px solid silver;border-bottom:2px solid gray;'>IP</th>"; $html[] = "\t<th style='padding:3px 8px;border:1px solid silver;border-bottom:2px solid gray;'>Hostname</th>"; $html[] = "\t<th style='padding:3px 8px;border:1px solid silver;border-bottom:2px solid gray;'>Subnet</th>"; $html[] = "\t<th style='padding:3px 8px;border:1px solid silver;border-bottom:2px solid gray;'>Section</th>"; $html[] = "</tr>"; //Changes foreach ($addresses as $change) { //set subnet $subnet = getSubnetDetails($change['subnetId']); $subnetPrint = Transform2long($subnet['subnet']) . "/" . $subnet['mask'] . " - " . $subnet['description']; //set section $section = getSectionDetailsById($subnet['sectionId']); $sectionPrint = $section['name'] . " (" . $section['description'] . ")"; $html[] = "<tr>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'>" . Transform2long($change['ip_addr']) . "</td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'>{$change['dns_name']}</td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'><a href='{$settings['siteURL']}" . create_link("subnets", $section['id'], $subnet['id']) . "'>{$subnetPrint}</a></td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'><a href='{$settings['siteURL']}" . create_link("subnets", $section['id']) . "'>{$sectionPrint}</a></td>"; $html[] = "</tr>"; } $html[] = "</table>"; //footer //end $html[] = "</body>"; $html[] = "</html>"; //save to array $mail['content'] = implode("\n", $html); //send to all admins sendStatusUpdateMail($mail['content'], $mail['subject']); }
$addresses = explode(";", $argv[1]); // get size of addresses to ping $size = sizeof($addresses); $z = 0; //addresses array index // run per MAX_THREADS for ($m = 0; $m <= $size; $m += $MAX_THREADS) { // create threads $threads = array(); // fork processes for ($i = 0; $i <= $MAX_THREADS && $i <= $size; $i++) { //only if index exists! if (isset($addresses[$z])) { //start new thread $threads[$z] = new Thread('pingHost'); $threads[$z]->start(Transform2long($addresses[$z]), $count, true); $z++; //next index } } // wait for all the threads to finish while (!empty($threads)) { foreach ($threads as $index => $thread) { if (!$thread->isAlive()) { //get exit code $exitCode = $thread->getExitCode(); //online, save to array if ($exitCode == 0) { $alive[] = $addresses[$index]; } else { $dead[] = $addresses[$index];
print "\t\t<a class='\t\t\t\t btn btn-default btn-xs disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-envelope-o'></i></a>"; print "\t\t<a class='delete_ipaddress btn btn-default btn-xs modIPaddr' data-action='delete' data-subnetId='" . $ip['subnetId'] . "' data-id='" . $ip['id'] . "' href='#' id2='" . Transform2long($ip['ip_addr']) . "' rel='tooltip' data-container='body' title='" . _('Delete IP address') . "'>\t\t<i class='fa fa-gray fa-times'> </i></a>"; } else { print "\t\t<a class='edit_ipaddress btn btn-default btn-xs modIPaddr' data-action='edit' data-subnetId='" . $ip['subnetId'] . "' data-id='" . $ip['id'] . "' href='#' \t\t\t\t\t\t\t\t\t\t\t rel='tooltip' data-container='body' title='" . _('Edit IP address details') . "'>\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-pencil'></i></a>"; print "\t\t<a class='ping_ipaddress btn btn-default btn-xs' data-subnetId='" . $ip['subnetId'] . "' data-id='" . $ip['id'] . "' href='#' \t\t\t\t\t\t \t\t\t\t\t\t\t\t\t\t\t\t\trel='tooltip' data-container='body' title='" . _('Check avalibility') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-cogs'></i></a>"; print "\t\t<a class='search_ipaddress btn btn-default btn-xs "; if (strlen($dnsResolved['name']) == 0) { print "disabled"; } print "' href='" . create_link("tools", "search", $dnsResolved['name']) . "' "; if (strlen($dnsResolved['name']) != 0) { print "rel='tooltip' data-container='body' title='" . _('Search same hostnames in db') . "'"; } print ">\t<i class='fa fa-gray fa-search'></i></a>"; print "\t\t<a class='mail_ipaddress btn btn-default btn-xs ' href='#' data-id='" . $ip['id'] . "' rel='tooltip' data-container='body' title='" . _('Send mail notification') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-envelope-o'></i></a>"; print "\t\t<a class='delete_ipaddress btn btn-default btn-xs modIPaddr' data-action='delete' data-subnetId='" . $ip['subnetId'] . "' data-id='" . $ip['id'] . "' href='#' id2='" . Transform2long($ip['ip_addr']) . "' rel='tooltip' data-container='body' title='" . _('Delete IP address') . "'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-times'></i></a>"; } } else { if ($ip['class'] == "range-dhcp") { print "\t\t<a class='edit_ipaddress btn btn-default btn-xs disabled' rel='tooltip' data-container='body' title='" . _('Edit IP address details (disabled)') . "'>\t<i class='fa fa-gray fa-pencil'> </i></a>"; print "\t\t<a class='\t\t\t\t btn btn-default btn-xs disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-retweet'> </i></a>"; print "\t\t<a class='\t\t\t\t btn btn-default btn-xs disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-search'></i></a>"; print "\t\t<a class='\t\t\t\t btn btn-default btn-xs disabled' href='#'>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class='fa fa-gray fa-envelope'></i></a>"; print "\t\t<a class='delete_ipaddress btn btn-default btn-xs disabled' rel='tooltip' data-container='body' title='" . _('Delete IP address (disabled)') . "'>\t\t\t<i class='fa fa-gray fa-times'> </i></a>"; } else { print "\t\t<a class='edit_ipaddress btn btn-default btn-xs disabled' rel='tooltip' data-container='body' title='" . _('Edit IP address details (disabled)') . "'>\t\t\t\t\t\t\t<i class='fa fa-gray fa-pencil'> </i></a>"; print "\t\t<a class='\t\t\t\t btn btn-default btn-xs disabled' data-id='" . $ip['id'] . "' href='#' rel='tooltip' data-container='body' title='" . _('Check avalibility') . "'>\t\t<i class='fa fa-gray fa-retweet'> </i></a>"; print "\t\t<a class='search_ipaddress btn btn-default btn-xs "; if (strlen($dnsResolved['name']) == 0) { print "disabled"; }
*/ /* functions */ if (!function_exists("getSubnetDetailsById")) { require_once '../../functions/functions.php'; } /* @mail functions ------------------- */ include_once '../../functions/functions-mail.php'; # First chech referer and requested with CheckReferrer(); /* get all posted variables */ $request = $_POST; /* first get subnet details */ $subnet = getSubnetDetailsById($request['subnetId']); $subnet2 = $subnet; //for later check $subnet['subnet'] = Transform2long($subnet['subnet']); $subnet = $subnet['subnet'] . "/" . $subnet['mask']; /* verify email */ if (!checkEmail($request['requester'])) { die('<div class="alert alert-danger alert-nomargin alert-norounded">' . _('Please provide valid email address') . '! (' . _('requester') . ': <del>' . $request['requester'] . '</del>)</div>'); } if (addNewRequest($request)) { print '<div class="alert alert-success alert-nomargin alert-norounded">' . _('Request submitted successfully') . '!</div>'; # send mail if (!sendIPReqEmail($request)) { print '<div class="alert alert-danger alert-nomargin alert-norounded">' . _('Sending mail for new IP request failed') . '!</div>'; } else { print '<div class="alert alert-success alert-nomargin alert-norounded">' . _('Sending mail for IP request succeeded') . '!</div>'; } } else { print '<div class="alert alert-danger alert-nomargin alert-norounded">' . _('Error submitting new IP address request') . '!</div>';
<tr> <td><?php print _('Select new subnet'); ?> :</td> <td> <select name="newSubnet" class="ip_addr form-control input-sm input-w-auto"> <?php /* get ALL slave subnets, then remove all subnets and IP addresses */ global $removeSlaves; getAllSlaves($subnetId); $removeSlaves = array_unique($removeSlaves); foreach ($removeSlaves as $subnetId) { $subnet = getSubnetDetailsById($subnetId); print "<option value='{$subnet['id']}'>{$subnet['description']} (" . Transform2long($subnet['subnet']) . "/{$subnet['mask']})</option>"; } ?> </select> </td> </tr> </table> <!-- end edit ip address table --> </form> <!-- end IP address edit form --> </div>
} } $addresses = $addresses2; // get size of addresses to ping $size = sizeof($addresses); // run per MAX_THREADS for ($m = 0; $m <= $size; $m += $MAX_THREADS) { // create threads $threads = array(); // fork processes for ($i = 0; $i <= $MAX_THREADS && $i <= $size; $i++) { //only if index exists! if (isset($addresses[$z])) { //start new thread $threads[$z] = new Thread('telnetHost'); $threads[$z]->start(Transform2long($addresses[$z]['ip']), $addresses[$z]['port'], $timeout, true); $z++; //next index } } // wait for all the threads to finish while (!empty($threads)) { foreach ($threads as $index => $thread) { if (!$thread->isAlive()) { //get exit code $exitCode = $thread->getExitCode(); //online, save to array if ($exitCode == 0) { $out['alive'][$addresses[$index]['ip']][] = $addresses[$index]['port']; } else { $out['dead'][$addresses[$index]['ip']][] = $addresses[$index]['port'];
} //set subnet $subnet = getSubnetDetails($change['subnetId']); $subnetPrint = Transform2long($subnet['subnet']) . "/" . $subnet['mask'] . " - " . $subnet['description']; //set section $section = getSectionDetailsById($subnet['sectionId']); $sectionPrint = $section['name'] . " (" . $section['description'] . ")"; //ago if (is_null($change['lastSeen']) || $change['lastSeen'] == "0000-00-00 00:00:00") { $ago = "never"; } else { $timeDiff = $sTime - strtotime($change['lastSeen']); $ago = $change['lastSeen'] . " (" . sec2hms($timeDiff) . " ago)"; } $html[] = "<tr>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'><a href='{$settings['siteURL']}subnets/{$section['id']}/{$subnet['id']}/'>" . Transform2long($change['ip_addr']) . "</a></td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'>{$change['description']}</td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'><a href='{$settings['siteURL']}subnets/{$section['id']}/{$subnet['id']}/'>{$subnetPrint}</a></td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'><a href='{$settings['siteURL']}subnets/{$section['id']}/'>{$sectionPrint}</a></td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'>{$ago}</td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'>{$oldStatus}</td>"; $html[] = "\t<td style='padding:3px 8px;border:1px solid silver;'>{$newStatus}</td>"; $html[] = "</tr>"; } $html[] = "</table>"; //footer //end $html[] = "</body>"; $html[] = "</html>"; //save to array $mail['content'] = implode("\n", $html);