} else { $hStatus = "hidden"; $hTooltip = ""; } // gateway $gw = $addresses[$n]->is_gateway == 1 ? "gateway" : ""; print "\t<td class='ipaddress {$gw}'><span class='status status-{$hStatus}' {$hTooltip}></span><a href='" . create_link("subnets", $subnet['sectionId'], $_REQUEST['subnetId'], "address-details", $addresses[$n]->id) . "'>" . $Subnets->transform_to_dotted($addresses[$n]->ip_addr); if ($addresses[$n]->is_gateway == 1) { print " <i class='fa fa-info-circle fa-gateway' rel='tooltip' title='" . _('Address is marked as gateway') . "'></i>"; } if (in_array('state', $selected_ip_fields)) { print $Addresses->address_type_format_tag($addresses[$n]->state); } print "</td>"; # resolve dns name $resolve = $DNS->resolve_address($addresses[$n]); print "<td class='{$resolve['class']} hostname'>{$resolve['name']}</td>"; # print description - mandatory print "<td class='description'>" . $addresses[$n]->description . "</td>"; # Print mac address icon! if (in_array('mac', $selected_ip_fields)) { if (!empty($addresses[$n]->mac)) { print "<td class='narrow'><i class='info fa fa-gray fa-sitemap' rel='tooltip' data-container='body' title='" . _('MAC') . ": " . $addresses[$n]->mac . "'></i></td>"; } else { print "<td class='narrow'></td>"; } } # print info button for hover if (in_array('note', $selected_ip_fields)) { if (!empty($addresses[$n]->note)) { print "<td class='narrow'><i class='fa fa-gray fa-comment-o' rel='tooltip' data-container='body' data-html='true' title='" . str_replace("\n", "<br>", $addresses[$n]->note) . "'></td>";
$Addresses = new Addresses($Database); $Subnets = new Subnets($Database); $DNS = new DNS($Database); $Scan = new Scan($Database); $Result = new Result(); # insert to database $discovered = 0; //for mailing foreach ($scan_subnets as $s) { if (sizeof(@$s->discovered) > 0) { foreach ($s->discovered as $ip) { // fetch subnet $subnet = $Subnets->fetch_subnet("id", $s->id); $nsid = $subnet === false ? false : $subnet->nameserverId; // try to resolve hostname $hostname = $DNS->resolve_address($ip, false, true, $nsid); //set update query $values = array("subnetId" => $s->id, "ip_addr" => $Subnets->transform_address($ip, "decimal"), "dns_name" => $hostname['name'], "description" => "-- autodiscovered --", "note" => "This host was autodiscovered on " . $nowdate, "lastSeen" => $nowdate, "state" => "2", "action" => "add"); //insert $Addresses->modify_address($values); //set discovered $discovered++; } } } # update scan time $Scan->ping_update_scanagent_checktime(1, $nowdate); # send mail if ($discovered > 0 && $send_mail) { # check for recipients foreach ($Admin->fetch_multiple_objects("users", "role", "Administrator") as $admin) {
$statuses = explode(";", $User->settings->pingStatus); # permissions $subnet_permission = $Subnets->check_permission($User->user, $subnet['id']); $section_permission = $Sections->check_permission($User->user, $subnet['sectionId']); # checks if (sizeof($subnet) == 0) { $Result->show("danger", _('Subnet does not exist'), true); } //subnet doesnt exist if ($subnet_permission == 0) { $Result->show("danger", _('You do not have permission to access this network'), true); } //not allowed to access # resolve dns name $DNS = new DNS($Database); $resolve = $DNS->resolve_address($address['ip_addr'], $address['dns_name'], false, $subnet['nameserverId']); # reformat empty fields $address = $Addresses->reformat_empty_array_fields($address, "<span class='text-muted'>/</span>"); #header print "<h4>" . _('IP address details') . "</h4><hr>"; # back print "<a class='btn btn-default btn-sm btn-default' href='" . create_link("subnets", $subnet['sectionId'], $subnet['id']) . "'><i class='fa fa-chevron-left'></i> " . _('Back to subnet') . "</a>"; # check if it exists, otherwise print error if (sizeof($address) > 1) { # table - details print "<table class='ipaddress_subnet table table-noborder table-condensed' style='margin-top:10px;'>"; # ip print "<tr>"; print "\t<th>" . _('IP address') . "</th>"; print "\t<td><strong>{$address['ip']}</strong></td>"; print "</tr>";
# reinitialize objects $Database = new Database_PDO(); $Admin = new Admin($Database, false); $Subnets = new Subnets($Database); $DNS = new DNS($Database); $Result = new Result(); # insert to database $discovered = 0; //for mailing foreach ($scan_subnets as $s) { if (sizeof(@$s->discovered) > 0) { foreach ($s->discovered as $ip) { // try to resolve hostname $tmp = new stdClass(); $tmp->ip_addr = $ip; $hostname = $DNS->resolve_address($tmp, true); //set update query $values = array("subnetId" => $s->id, "ip_addr" => $Subnets->transform_address($ip, "decimal"), "dns_name" => $hostname['name'], "description" => "-- autodiscovered --", "note" => "This host was autodiscovered on " . date("Y-m-d H:i:s"), "lastSeen" => date("Y-m-d H:i:s")); $Admin->object_modify("ipaddresses", "add", "id", $values); //set discovered $discovered++; } } } # send mail if ($discovered > 0 && $send_mail) { # check for recipients foreach ($Admin->fetch_multiple_objects("users", "role", "Administrator") as $admin) { if ($admin->mailNotify == "Yes") { $recepients[] = array("name" => $admin->real_name, "email" => $admin->email); }
if ($resolve_config['emptyonly'] == 1) { $query[] = ' and `dns_name` like "" '; } $query[] = 'order by `ip_addr` ASC;'; //join $query = implode("\n", $query); } # fetch records $ipaddresses = $Database->getObjectsQuery($query); # try to update dns records foreach ($ipaddresses as $ip) { # fetch subnet $subnet = $Subnets->fetch_subnet("id", $ip->subnetId); $nsid = $subnet === false ? false : $subnet->nameserverId; # try to resolve $hostname = $DNS->resolve_address($ip->ip_addr, null, true, $nsid); # update if change if ($hostname['name'] != $Subnets->transform_to_dotted($ip->ip_addr)) { # values $values = array("dns_name" => $hostname['name'], "id" => $ip->id); # execute if (!$Admin->object_modify("ipaddresses", "edit", "id", $values)) { $Result->show_cli("Failed to update address " . $Subnets->transform_to_dotted($ip->ip_addr)); } # set text $res[] = 'updated ip address ' . $Subnets->transform_to_dotted($ip->ip_addr) . ' with hostname ' . $hostname['name']; } } # if verbose print result so it can be emailed via cron! if ($resolve_config['verbose'] == 1) { foreach ($res as $line) {
} } else { $dns_records = ""; $button = ""; } // add button if ($User->settings->enablePowerDNS == 1) { // add new button if ($Subnets->validate_hostname($addresses[$n]->dns_name) && ($User->isadmin || @$User->user->pdns == "Yes")) { $button = "<i class='fa fa-plus-circle fa-gray fa-href editRecord' data-action='add' data-id='" . $Addresses->transform_address($addresses[$n]->ip_addr, "dotted") . "' data-domain_id='" . $addresses[$n]->dns_name . "'></i>"; } else { $button = ""; } } # resolve dns name $resolve = $DNS->resolve_address($addresses[$n]->ip_addr, $addresses[$n]->dns_name, false, $subnet['nameserverId']); print "<td class='{$resolve['class']} hostname'>{$resolve['name']} {$button} {$dns_records}</td>"; # print firewall address object - mandatory if enabled if (in_array('firewallAddressObject', $selected_ip_fields) && $zone) { print "<td class='fwzone'>" . $addresses[$n]->firewallAddressObject . "</td>"; } # print description - mandatory print "<td class='description'>" . $addresses[$n]->description . "</td>"; # Print mac address icon! if (in_array('mac', $selected_ip_fields)) { if (!empty($addresses[$n]->mac)) { print "<td class='narrow'><i class='info fa fa-gray fa-sitemap' rel='tooltip' data-container='body' title='" . _('MAC') . ": " . $addresses[$n]->mac . "'></i></td>"; } else { print "<td class='narrow'></td>"; } }
$statuses = explode(";", $User->settings->pingStatus); # permissions $subnet_permission = $Subnets->check_permission($User->user, $subnet['id']); $section_permission = $Sections->check_permission($User->user, $subnet['sectionId']); # checks if (sizeof($subnet) == 0) { $Result->show("danger", _('Subnet does not exist'), true); } //subnet doesnt exist if ($subnet_permission == 0) { $Result->show("danger", _('You do not have permission to access this network'), true); } //not allowed to access # resolve dns name $DNS = new DNS($Database); $resolve = $DNS->resolve_address((object) $address); # reformat empty fields $address = $Addresses->reformat_empty_array_fields($address, "<span class='text-muted'>/</span>"); #header print "<h4>" . _('IP address details') . "</h4><hr>"; # back print "<a class='btn btn-default btn-sm btn-default' href='" . create_link("subnets", $subnet['sectionId'], $subnet['id']) . "'><i class='fa fa-chevron-left'></i> " . _('Back to subnet') . "</a>"; # check if it exists, otherwise print error if (sizeof($address) > 1) { # table - details print "<table class='ipaddress_subnet table table-noborder table-condensed' style='margin-top:10px;'>"; # ip print "<tr>"; print "\t<th>" . _('IP address') . "</th>"; print "\t<td><strong>{$address['ip']}</strong></td>"; print "</tr>";
<?php /** * Script that resolved hostname from IP address */ # include required scripts require dirname(__FILE__) . '/../../../functions/functions.php'; # initialize required objects $Database = new Database_PDO(); $User = new User($Database); $Subnets = new Subnets($Database); $DNS = new DNS($Database); # verify that user is logged in $User->check_user_session(); # fetch subnet $subnet = $Subnets->fetch_subnet("id", $_POST['subnetId']); $nsid = $subnet === false ? false : $subnet->nameserverId; # resolve $hostname = $DNS->resolve_address($_POST['ipaddress'], false, true, 0); # print result print $hostname['name'];
<?php /** * Script that resolved hostname from IP address */ # include required scripts require dirname(__FILE__) . '/../../../functions/functions.php'; # initialize required objects $Database = new Database_PDO(); $User = new User($Database); $DNS = new DNS($Database); # verify that user is logged in $User->check_user_session(); # create object $address = new StdClass(); $address->ip_addr = $_POST['ipaddress']; $address->dns_name = null; # resolve $hostname = $DNS->resolve_address($address, true); # print result print $hostname['name'];