Example #1
0
function print_mempool_table($vars)
{
    global $cache;
    $sql = build_mempool_query($vars);
    $mempools = array();
    foreach (dbFetchRows($sql) as $mempool) {
        if (isset($cache['devices']['id'][$mempool['device_id']])) {
            $mempool['hostname'] = $cache['devices']['id'][$mempool['device_id']]['hostname'];
            $mempool['html_row_class'] = $cache['devices']['id'][$mempool['device_id']]['html_row_class'];
            $mempools[] = $mempool;
        }
    }
    // Sorting
    // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'usage':
            $mempools = array_sort_by($mempools, 'mempool_perc', $sort_neg, SORT_NUMERIC);
            break;
        case 'used':
            $mempools = array_sort_by($mempools, 'mempool_' . $vars['sort'], $sort_neg, SORT_NUMERIC);
            break;
        default:
            $mempools = array_sort_by($mempools, 'hostname', $sort_order, SORT_STRING, 'mempool_descr', $sort_order, SORT_STRING);
            break;
    }
    $mempools_count = count($mempools);
    // Pagination
    $pagination_html = pagination($vars, $mempools_count);
    echo $pagination_html;
    if ($vars['pageno']) {
        $mempools = array_chunk($mempools, $vars['pagesize']);
        $mempools = $mempools[$vars['pageno'] - 1];
    }
    // End Pagination
    echo generate_box_open();
    print_mempool_table_header($vars);
    foreach ($mempools as $mempool) {
        print_mempool_row($mempool, $vars);
    }
    echo "</tbody></table>";
    echo generate_box_close();
    echo $pagination_html;
}
function print_printersupplies_table($vars)
{
    $supplies = array();
    foreach (dbFetchRows(build_printersupplies_query($vars)) as $supply) {
        global $cache;
        if (isset($cache['devices']['id'][$supply['device_id']])) {
            $supply['hostname'] = $cache['devices']['id'][$supply['device_id']]['hostname'];
            $supply['html_row_class'] = $cache['devices']['id'][$supply['device_id']]['html_row_class'];
            $supplies[] = $supply;
        }
    }
    $supplies = array_sort_by($supplies, 'hostname', SORT_ASC, SORT_STRING, 'supply_descr', SORT_ASC, SORT_STRING);
    $supplies_count = count($supplies);
    echo generate_box_open();
    // Pagination
    $pagination_html = pagination($vars, $supplies_count);
    echo $pagination_html;
    if ($vars['pageno']) {
        $supplies = array_chunk($supplies, $vars['pagesize']);
        $supplies = $supplies[$vars['pageno'] - 1];
    }
    // End Pagination
    if ($vars['view'] == "graphs") {
        $stripe_class = "table-striped-two";
    } else {
        $stripe_class = "table-striped";
    }
    // Allow the table to be printed headerless for use in some places.
    if ($vars['headerless'] != TRUE) {
        echo '<table class="table ' . $stripe_class . '  table-condensed">';
        echo '  <thead>';
        echo '<tr class="strong">';
        echo '<th class="state-marker"></th>';
        echo '<th></th>';
        if ($vars['page'] != "device" && $vars['popup'] != TRUE) {
            echo '      <th style="width: 250px;">Device</th>';
        }
        echo '<th>Toner</th>';
        if (!isset($vars['supply'])) {
            echo '<th>Type</th>';
        }
        echo '<th></th>';
        echo '<th>Level</th>';
        echo '<th>Remaining</th>';
        echo '</tr>';
        echo '</thead>';
    }
    foreach ($supplies as $supply) {
        print_printersupplies_row($supply, $vars);
    }
    echo "</table>";
    echo generate_box_close();
    echo $pagination_html;
}
Example #3
0
 * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited
 *
 */
$graph_array['to'] = $config['time']['now'];
$graph_array['from'] = $config['time']['day'];
//$graph_array_zoom           = $graph_array;
//$graph_array_zoom['height'] = "150";
//$graph_array_zoom['width']  = "400";
//$graph_array['legend']      = "no";
$app_devices = array();
foreach (dbFetchRows("SELECT * FROM `applications` WHERE `app_type` = ? " . $GLOBALS['cache']['where']['devices_permitted'], array($vars['app'])) as $app) {
    if (isset($cache['devices']['id'][$app['device_id']])) {
        $app_devices[] = array_merge($app, $cache['devices']['id'][$app['device_id']]);
    }
}
$app_devices = array_sort_by($app_devices, 'hostname', SORT_ASC, SORT_STRING);
//echo generate_box_open();
//echo '<table class="table table-hover table-condensed table-striped ">';
foreach ($app_devices as $app_device) {
    echo generate_box_open();
    echo '<table class="table table-hover table-condensed table-striped ">';
    print_device_row($app_device, NULL, array('tab' => 'apps', 'app' => $app['app_type']));
    echo '<tr><td colspan="6">';
    $graph_array['id'] = $app_device['app_id'];
    $graph_array['types'] = array();
    $graph_array['legend'] = "no";
    foreach ($config['app'][$vars['app']]['top'] as $graph_type) {
        $graph_array['types'][] = "application_" . $vars['app'] . "_" . $graph_type;
    }
    print_graph_summary_row($graph_array);
    /*
$sql .= " LEFT JOIN `sensors-state` ON `sensors`.`sensor_id` = `sensors-state`.`sensor_id`";
$sql .= " WHERE `sensors`.`sensor_class` = ?" . generate_query_permitted(array('device'));
// Groups
if (isset($vars['group'])) {
    $values = get_group_entities($vars['group']);
    $sql .= generate_query_values($values, 'sensors.sensor_id');
}
$sensors = array();
foreach (dbFetchRows($sql, array($sensor_type)) as $sensor) {
    if (isset($cache['devices']['id'][$sensor['device_id']])) {
        $sensor['hostname'] = $cache['devices']['id'][$sensor['device_id']]['hostname'];
        $sensor['html_row_class'] = $cache['devices']['id'][$sensor['device_id']]['html_row_class'];
        $sensors[] = $sensor;
    }
}
$sensors = array_sort_by($sensors, 'hostname', SORT_ASC, SORT_STRING, 'sensor_descr', SORT_ASC, SORT_STRING);
$sensors_count = count($sensors);
// Pagination
$pagination_html = pagination($vars, $sensors_count);
echo $pagination_html;
if ($vars['pageno']) {
    $sensors = array_chunk($sensors, $vars['pagesize']);
    $sensors = $sensors[$vars['pageno'] - 1];
}
// End Pagination
if ($vars['view'] == "graphs") {
    $stripe_class = "table-striped-two";
} else {
    $stripe_class = "table-striped";
}
echo '<table class="table ' . $stripe_class . ' table-condensed table-bordered">';
Example #5
0
function print_status_table($vars)
{
    $sql = generate_status_query($vars);
    $status_list = array();
    foreach (dbFetchRows($sql) as $status) {
        if (isset($GLOBALS['cache']['devices']['id'][$status['device_id']])) {
            $status['hostname'] = $GLOBALS['cache']['devices']['id'][$status['device_id']]['hostname'];
            $status_list[] = $status;
        }
    }
    // Sorting
    // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'device':
            $status_list = array_sort_by($status_list, 'hostname', $sort_order, SORT_STRING);
            break;
        case 'descr':
            $status_list = array_sort_by($status_list, 'status_descr', $sort_order, SORT_STRING);
            break;
        case 'class':
            $status_list = array_sort_by($status_list, 'entPhysicalClass', $sort_order, SORT_STRING);
            break;
        case 'event':
            $status_list = array_sort_by($status_list, 'status_event', $sort_order, SORT_STRING);
            break;
        case 'status':
            $status_list = array_sort_by($status_list, 'status_name', $sort_order, SORT_STRING);
            break;
        case 'last_change':
            $status_list = array_sort_by($status_list, 'status_last_change', $sort_neg, SORT_NUMERIC);
            break;
        default:
            $status_list = array_sort_by($status_list, 'hostname', $sort_order, SORT_STRING, 'status_descr', $sort_order, SORT_STRING);
    }
    $status_count = count($status_list);
    // Pagination
    $pagination_html = pagination($vars, $status_count);
    echo $pagination_html;
    if ($vars['pageno']) {
        $status_list = array_chunk($status_list, $vars['pagesize']);
        $status_list = $status_list[$vars['pageno'] - 1];
    }
    // End Pagination
    echo generate_box_open();
    print_status_table_header($vars);
    foreach ($status_list as $status) {
        print_status_row($status, $vars);
    }
    echo "</tbody></table>";
    echo generate_box_close();
    echo $pagination_html;
}
Example #6
0
 * Observium Network Management and Monitoring System
 * Copyright (C) 2006-2015, Adam Armstrong - http://www.observium.org
 *
 * @package    observium
 * @subpackage webui
 * @author     Adam Armstrong <*****@*****.**>
 * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited
 *
 */
$graph_type = "storage_usage";
$sql = "SELECT * FROM `storage`";
$sql .= " LEFT JOIN `storage-state` USING(`storage_id`)";
$sql .= " WHERE `device_id` = ?";
$drives = dbFetchRows($sql, array($device['device_id']));
if (count($drives)) {
    $drives = array_sort_by($drives, 'storage_descr', SORT_ASC, SORT_STRING);
    $box_args = array('title' => 'Storage', 'url' => generate_url(array('page' => 'device', 'device' => $device['device_id'], 'tab' => 'health', 'metric' => 'storage')), 'icon' => 'oicon-drive');
    echo generate_box_open($box_args);
    echo '<table class="table table-condensed table-striped">';
    foreach ($drives as $drive) {
        $skipdrive = FALSE;
        if ($device["os"] == "junos") {
            foreach ($config['ignore_junos_os_drives'] as $jdrive) {
                if (preg_match($jdrive, $drive["storage_descr"])) {
                    $skipdrive = TRUE;
                }
            }
            $drive["storage_descr"] = preg_replace("/.*mounted on: (.*)/", "\\1", $drive["storage_descr"]);
        }
        if ($device['os'] == "freebsd") {
            foreach ($config['ignore_bsd_os_drives'] as $jdrive) {
Example #7
0
$sql .= ' LEFT JOIN `mempools-state` ON `mempools`.`mempool_id` = `mempools-state`.`mempool_id`';
$sql .= ' WHERE 1' . generate_query_permitted(array('device'));
// Groups
if (isset($vars['group'])) {
    $values = get_group_entities($vars['group']);
    $sql .= generate_query_values($values, 'mempools.mempool_id');
}
$mempools = array();
foreach (dbFetchRows($sql) as $mempool) {
    if (isset($cache['devices']['id'][$mempool['device_id']])) {
        $mempool['hostname'] = $cache['devices']['id'][$mempool['device_id']]['hostname'];
        $mempool['html_row_class'] = $cache['devices']['id'][$mempool['device_id']]['html_row_class'];
        $mempools[] = $mempool;
    }
}
$mempools = array_sort_by($mempools, 'hostname', SORT_ASC, SORT_STRING, 'mempool_descr', SORT_ASC, SORT_STRING);
$mempools_count = count($mempools);
// Pagination
$pagination_html = pagination($vars, $mempools_count);
echo $pagination_html;
if ($vars['pageno']) {
    $mempools = array_chunk($mempools, $vars['pagesize']);
    $mempools = $mempools[$vars['pageno'] - 1];
}
// End Pagination
if ($vars['view'] == "graphs") {
    $stripe_class = "table-striped-two";
} else {
    $stripe_class = "table-striped";
}
echo '<table class="table ' . $stripe_class . ' table-bordered table-condensed">';
Example #8
0
$sql .= " LEFT JOIN  `processors-state` ON `processors`.`processor_id` = `processors-state`.`processor_id`";
$sql .= ' WHERE 1' . generate_query_permitted(array('device'));
// Groups
if (isset($vars['group'])) {
    $values = get_group_entities($vars['group']);
    $sql .= generate_query_values($values, 'processors.processor_id');
}
$processors = array();
foreach (dbFetchRows($sql) as $proc) {
    if (isset($cache['devices']['id'][$proc['device_id']])) {
        $proc['hostname'] = $cache['devices']['id'][$proc['device_id']]['hostname'];
        $proc['html_row_class'] = $cache['devices']['id'][$proc['device_id']]['html_row_class'];
        $processors[] = $proc;
    }
}
$processors = array_sort_by($processors, 'hostname', SORT_ASC, SORT_STRING, 'processor_descr', SORT_ASC, SORT_STRING);
$processors_count = count($processors);
// Pagination
$pagination_html = pagination($vars, $processors_count);
echo $pagination_html;
if ($vars['pageno']) {
    $processors = array_chunk($processors, $vars['pagesize']);
    $processors = $processors[$vars['pageno'] - 1];
}
// End Pagination
if ($vars['view'] == "graphs") {
    $stripe_class = "table-striped-two";
} else {
    $stripe_class = "table-striped";
}
echo '<table class="table ' . $stripe_class . ' table-condensed table-bordered">';
        continue;
    }
    // Find max poller/discovery times
    if ($device['last_polled_timetaken'] > $proc['max']['poller']) {
        $proc['max']['poller'] = $device['last_polled_timetaken'];
    }
    if ($device['last_discovered_timetaken'] > $proc['max']['discovery']) {
        $proc['max']['discovery'] = $device['last_discovered_timetaken'];
    }
    $proc['avg2']['poller'] += pow($device['last_polled_timetaken'], 2);
    $proc['avg2']['discovery'] += pow($device['last_discovered_timetaken'], 2);
    $poller_table[] = array('html_row_class' => $device['html_row_class'], 'html_tab_colour' => $device['html_tab_colour'], 'device_hostname' => $device['hostname'], 'device_link' => generate_device_link($device), 'last_polled_timetaken' => $device['last_polled_timetaken'], 'last_polled' => $device['last_polled'], 'last_discovered_timetaken' => $device['last_discovered_timetaken'], 'last_discovered' => $device['last_discovered']);
}
// Sort poller table
// sort order: $polled > $discovered > $hostname
$poller_table = array_sort_by($poller_table, 'last_polled_timetaken', SORT_DESC, SORT_NUMERIC, 'last_discovered_timetaken', SORT_DESC, SORT_NUMERIC, 'device_hostname', SORT_ASC, SORT_STRING);
// Print poller table
foreach ($poller_table as $row) {
    $proc['time']['poller'] = round($row['last_polled_timetaken'] * 100 / $proc['max']['poller']);
    $proc['color']['poller'] = "success";
    if ($row['last_polled_timetaken'] > $proc['max']['poller'] * 0.75) {
        $proc['color']['poller'] = "danger";
    } elseif ($row['last_polled_timetaken'] > $proc['max']['poller'] * 0.5) {
        $proc['color']['poller'] = "warning";
    } elseif ($row['last_polled_timetaken'] >= $proc['max']['poller'] * 0.25) {
        $proc['color']['poller'] = "info";
    }
    $proc['time']['discovery'] = round($row['last_discovered_timetaken'] * 100 / $proc['max']['discovery']);
    $proc['color']['discovery'] = "success";
    if ($row['last_discovered_timetaken'] > $proc['max']['discovery'] * 0.75) {
        $proc['color']['discovery'] = "danger";
Example #10
0
         }
         $i--;
     }
     if (!is_numeric($label_nums[3])) {
         $label_nums[3] = 0;
     }
     $ports_links[$data['human_type']][$data['ifIndex']] = array('label' => $data['port_label'], 'label_base' => $data['port_label_base'], 'label_num0' => $label_nums[0], 'label_num1' => $label_nums[1], 'label_num2' => $label_nums[2], 'label_num3' => $label_nums[3], 'link' => generate_port_link($data, $data['port_label_short']));
 }
 // First sort iteration (by port type)
 $all_links = array();
 foreach ($port_types as $port_type) {
     if (!isset($ports_links[$port_type])) {
         continue;
     }
     // Second sort iteration (by port label base name and port numbers)
     $ports_links[$port_type] = array_sort_by($ports_links[$port_type], 'label_base', SORT_DESC, SORT_STRING, 'label_num0', SORT_ASC, SORT_NUMERIC, 'label_num1', SORT_ASC, SORT_NUMERIC, 'label_num2', SORT_ASC, SORT_NUMERIC, 'label_num3', SORT_ASC, SORT_NUMERIC);
     /* FIXME. This part not completed, wait ;)
         if ($port_type == 'Ethernet')
         {
           // Try to use ports template div
           $hw = strtolower(safename($device['hardware']));
           if (is_file('ports/'.$device['os'].'_'.$hw.'.inc.php'))
           {
             print_debug('Include ports template for device: ports/'.$device['os'].'_'.$hw.'.inc.php');
     
             include('ports/'.$device['os'].'_'.$hw.'.inc.php');
           }
           else if (is_file('ports/'.$device['os'].'_generic.inc.php'))
           {
             print_debug('Include ports template for device: ports/'.$device['os'].'_generic.inc.php');
     
$sql = "SELECT *, `status`.`status_id` AS `status_id` FROM `status`";
$sql .= " LEFT JOIN `status-state` ON `status`.`status_id` = `status-state`.`status_id`";
$sql .= " WHERE 1" . generate_query_permitted(array('device'));
// Groups
if (isset($vars['group'])) {
    $values = get_group_entities($vars['group']);
    $sql .= generate_query_values($values, 'status.status_id');
}
$status_list = array();
foreach (dbFetchRows($sql) as $status) {
    if (isset($cache['devices']['id'][$status['device_id']])) {
        $status['hostname'] = $cache['devices']['id'][$status['device_id']]['hostname'];
        $status_list[] = $status;
    }
}
$status_list = array_sort_by($status_list, 'hostname', SORT_ASC, SORT_STRING, 'status_descr', SORT_ASC, SORT_STRING);
$status_count = count($status_list);
// Pagination
$pagination_html = pagination($vars, $status_count);
echo $pagination_html;
if ($vars['pageno']) {
    $status_list = array_chunk($status_list, $vars['pagesize']);
    $status_list = $status_list[$vars['pageno'] - 1];
}
// End Pagination
if ($vars['view'] == "graphs") {
    $stripe_class = "table-striped-two";
} else {
    $stripe_class = "table-striped";
}
echo '<table class="table ' . $stripe_class . ' table-condensed table-bordered">' . PHP_EOL;
 /**
  * Sorts the listeners by priority.
  *
  * @param array $listeners
  *
  * @return array
  */
 private function sortListeners($listeners)
 {
     return array_sort_by($listeners, function ($a, $b) {
         return $a['priority'] <=> $b['priority'];
     });
 }
Example #13
0
}
include $config['html_dir'] . "/pages/usermenu.inc.php";
// Load JS entity picker
register_html_resource('js', 'tw-sack.js');
register_html_resource('js', 'observium-entities.js');
?>

<form method="post" action="" class="form form-inline">
<div class="navbar navbar-narrow">
  <div class="navbar-inner">
    <div class="container">
      <a class="brand">Edit User</a>
      <ul class="nav">

<?php 
$user_list_sort = array_sort_by(auth_user_list(), 'level', SORT_DESC, SORT_NUMERIC, 'username', SORT_ASC, SORT_STRING);
$user_list = array();
foreach ($user_list_sort as $entry) {
    humanize_user($entry);
    $user_list[$entry['user_id']] = $entry;
    $user_list[$entry['user_id']]['name'] = escape_html($entry['username']);
    if ($entry['row_class']) {
        $user_list[$entry['user_id']]['class'] = 'bg-' . $entry['row_class'];
    }
    $user_list[$entry['user_id']]['group'] = $entry['level_label'];
    $user_list[$entry['user_id']]['subtext'] = $entry['realname'];
}
//r($user_list);
unset($user_list_sort);
echo '<li>';
$item = array('id' => 'page', 'value' => 'edituser');
Example #14
0
 * @subpackage webui
 * @copyright  (C) 2006-2014 Adam Armstrong
 *
 */
$graph_type = "toner_usage";
$sql = 'SELECT * FROM `toner`';
$sql .= ' WHERE 1' . generate_query_permitted(array('device'));
$toners = array();
foreach (dbFetchRows($sql) as $toner) {
    if (isset($cache['devices']['id'][$toner['device_id']])) {
        $toner['hostname'] = $cache['devices']['id'][$toner['device_id']]['hostname'];
        $toner['html_row_class'] = $cache['devices']['id'][$toner['device_id']]['html_row_class'];
        $toners[] = $toner;
    }
}
$toners = array_sort_by($toners, 'hostname', SORT_ASC, SORT_STRING, 'toner_descr', SORT_ASC, SORT_STRING);
$toners_count = count($toners);
// Pagination
$pagination_html = pagination($vars, $toners_count);
echo $pagination_html;
if ($vars['pageno']) {
    $toners = array_chunk($toners, $vars['pagesize']);
    $toners = $toners[$vars['pageno'] - 1];
}
// End Pagination
if ($vars['view'] == "graphs") {
    $stripe_class = "table-striped-two";
} else {
    $stripe_class = "table-striped";
}
echo '<table class="table ' . $stripe_class . ' table-bordered table-condensed">';
Example #15
0
    }
}
switch ($vars['sort']) {
    case 'usage':
        $storages = array_sort_by($storages, 'storage_perc', SORT_DESC, SORT_NUMERIC, 'hostname', SORT_ASC, SORT_STRING);
        break;
    case 'mountpoint':
        $storages = array_sort_by($storages, 'storage_descr', SORT_DESC, SORT_STRING, 'hostname', SORT_ASC, SORT_STRING);
        break;
    case 'size':
    case 'free':
    case 'used':
        $storages = array_sort_by($storages, 'storage_' . $vars['sort'], SORT_DESC, SORT_NUMERIC, 'hostname', SORT_ASC, SORT_STRING);
        break;
    default:
        $storages = array_sort_by($storages, 'hostname', SORT_ASC, SORT_STRING, 'storage_descr', SORT_ASC, SORT_STRING);
        break;
}
$storages_count = count($storages);
// Pagination
$pagination_html = pagination($vars, $storages_count);
echo $pagination_html;
if ($vars['pageno']) {
    $storages = array_chunk($storages, $vars['pagesize']);
    $storages = $storages[$vars['pageno'] - 1];
}
// End Pagination
if ($vars['view'] == "graphs") {
    $stripe_class = "table-striped-two";
} else {
    $stripe_class = "table-striped";
Example #16
0
function print_sla_table($vars)
{
    $sql = generate_sla_query($vars);
    $slas = array();
    foreach (dbFetchRows($sql) as $sla) {
        if (isset($GLOBALS['cache']['devices']['id'][$sla['device_id']])) {
            $sla['hostname'] = $GLOBALS['cache']['devices']['id'][$sla['device_id']]['hostname'];
            $slas[] = $sla;
        }
    }
    // Sorting
    // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'device':
            $slas = array_sort_by($slas, 'hostname', $sort_order, SORT_STRING);
            break;
        case 'descr':
            $slas = array_sort_by($slas, 'sla_index', $sort_order, SORT_STRING, 'sla_tag', $sort_order, SORT_STRING);
            break;
        case 'owner':
            $slas = array_sort_by($slas, 'sla_owner', $sort_order, SORT_STRING);
            break;
        case 'type':
            $slas = array_sort_by($slas, 'rtt_type', $sort_order, SORT_STRING);
            break;
        case 'event':
            $slas = array_sort_by($slas, 'rtt_event', $sort_order, SORT_STRING);
            break;
        case 'sense':
            $slas = array_sort_by($slas, 'rtt_sense', $sort_order, SORT_STRING);
            break;
        case 'last_change':
            $slas = array_sort_by($slas, 'rtt_last_change', $sort_neg, SORT_NUMERIC);
            break;
        case 'rtt':
            $slas = array_sort_by($slas, 'rtt_value', $sort_order, SORT_NUMERIC);
            break;
        default:
            // Not sorted
    }
    $slas_count = count($slas);
    // Pagination
    $pagination_html = pagination($vars, $slas_count);
    echo $pagination_html;
    if ($vars['pageno']) {
        $slas = array_chunk($slas, $vars['pagesize']);
        $slas = $slas[$vars['pageno'] - 1];
    }
    // End Pagination
    echo generate_box_open();
    print_sla_table_header($vars);
    foreach ($slas as $sla) {
        print_sla_row($sla, $vars);
    }
    echo '</tbody></table>';
    echo generate_box_close();
    echo $pagination_html;
}
Example #17
0
    case 'packets':
        $ports = array_sort_by($ports, 'ifUcastPkts_rate', $sort_neg, SORT_NUMERIC);
        break;
    case 'packets_in':
        $ports = array_sort_by($ports, 'ifInUcastPkts_rate', $sort_neg, SORT_NUMERIC);
        break;
    case 'packets_out':
        $ports = array_sort_by($ports, 'ifOutUcastPkts_rate', $sort_neg, SORT_NUMERIC);
        break;
    case 'errors':
        $ports = array_sort_by($ports, 'ifErrors_rate', $sort_neg, SORT_NUMERIC);
        break;
    case 'speed':
        $ports = array_sort_by($ports, 'ifSpeed', $sort_neg, SORT_NUMERIC);
        break;
    case 'port':
        $ports = array_sort_by($ports, 'ifDescr', $sort_order, SORT_STRING);
        break;
    case 'media':
        $ports = array_sort_by($ports, 'ifType', $sort_order, SORT_STRING);
        break;
    case 'descr':
        $ports = array_sort_by($ports, 'ifAlias', $sort_order, SORT_STRING);
        break;
    case 'mac':
        $ports = array_sort_by($ports, 'ifPhysAddress', $sort_neg, SORT_STRING);
        break;
    default:
        $ports = array_sort_by($ports, 'hostname', $sort_order, SORT_STRING, 'ifIndex', $sort_order, SORT_NUMERIC);
}
// EOF
function print_vm_table($vars)
{
    $sql = generate_vm_query($vars);
    $vms = array();
    foreach (dbFetchRows($sql) as $vm) {
        if (isset($GLOBALS['cache']['devices']['id'][$vm['device_id']])) {
            $vm['hostname'] = $GLOBALS['cache']['devices']['id'][$vm['device_id']]['hostname'];
            $vms[] = $vm;
        }
    }
    // Sorting
    // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'name':
            $vms = array_sort_by($vms, 'vm_name', $sort_order, SORT_STRING);
            break;
        case 'os':
            $vms = array_sort_by($vms, 'vm_os', $sort_order, SORT_STRING);
            break;
        case 'state':
            $vms = array_sort_by($vms, 'vm_state', $sort_order, SORT_STRING);
            break;
        case 'memory':
            $vms = array_sort_by($vms, 'vm_memory', $sort_order, SORT_NUMERIC);
            break;
        case 'cpu':
            $vms = array_sort_by($vms, 'vm_cpucount', $sort_order, SORT_NUMERIC);
            break;
        default:
            // Not sorted
    }
    $vms_count = count($vms);
    // Pagination
    $pagination_html = pagination($vars, $vms_count);
    echo $pagination_html;
    if ($vars['pageno']) {
        $vms = array_chunk($vms, $vars['pagesize']);
        $vms = $vms[$vars['pageno'] - 1];
    }
    // End Pagination
    echo generate_box_open();
    print_vm_table_header($vars);
    foreach ($vms as $vm) {
        print_vm_row($vm, $vars);
    }
    echo '</tbody></table>';
    echo generate_box_close();
    echo $pagination_html;
}
Example #19
0
function get_pseudowire_table($vars)
{
    $sql = generate_pseudowire_query($vars);
    $entries = array();
    foreach (dbFetchRows($sql) as $entry) {
        if (!isset($GLOBALS['cache']['devices']['id'][$entry['device_id']])) {
            continue;
        }
        // Device hostname
        $entry['hostname'] = $GLOBALS['cache']['devices']['id'][$entry['device_id']]['hostname'];
        // Remote Peer
        $peer_addr = $entry['peer_addr'];
        $peer_addr_type = get_ip_version($peer_addr);
        if ($peer_addr_type && $entry['peer_device_id']) {
            if ($peer_addr_type == 6) {
                $peer_addr = Net_IPv6::uncompress($peer_addr, TRUE);
            }
            $peer_addr_type = 'ipv' . $peer_addr_type;
            //$entry['peer_addr']      = $peer_addr;
            //$entry['peer_addr_type'] = $peer_addr_type;
            if (!is_array($cache_pseudowires['ips'][$peer_addr])) {
                $cache_pseudowires['ips'][$peer_addr]['port_id'] = dbFetchCell('SELECT `port_id` FROM `' . $peer_addr_type . '_addresses` WHERE `' . $peer_addr_type . '_address` = ? ' . generate_query_values($GLOBALS['cache']['ports']['pseudowires'], 'port_id') . ' LIMIT 1;', array($peer_addr));
                if (!is_numeric($cache_pseudowires['ips'][$peer_addr]['port_id'])) {
                    // Separate entry for find correct port
                    $cache_pseudowires['ips'][$peer_addr]['port_id_fix'] = dbFetchCell('SELECT `port_id` FROM `' . $peer_addr_type . '_addresses` WHERE `' . $peer_addr_type . '_address` = ? ' . $GLOBALS['cache']['where']['ports_permitted'] . ' LIMIT 1;', array($peer_addr));
                }
                //$cache_pseudowires['ips'][$peer_addr]['host'] = $entry['reverse_dns'];
            }
            $entry['peer_port_id'] = $cache_pseudowires['ips'][$peer_addr]['port_id'];
            if (is_numeric($cache_pseudowires['ips'][$peer_addr]['port_id_fix'])) {
                // If we found port on remote device, than both devices in DB and will try to fix real port
                $peer_port_tmp = get_port_by_id_cache($cache_pseudowires['ips'][$peer_addr]['port_id_fix']);
                $peer_port_fix = dbFetchCell('SELECT `port_id` FROM `pseudowires` WHERE `device_id` = ? AND `pwID` = ? LIMIT 1;', array($peer_port_tmp['device_id'], $entry['pwID']));
                if (is_numeric($peer_port_fix)) {
                    $entry['peer_port_id'] = $peer_port_fix;
                } else {
                    $entry['peer_port_id'] = $cache_pseudowires['ips'][$peer_addr]['port_id_fix'];
                }
            }
            //r($entry['peer_port_id']);
            if ($entry['peer_port_id']) {
                $entry['peer_port'] = get_port_by_id_cache($entry['peer_port_id']);
                //r($entry['peer_port']);
                $entry['peer_device_id'] = $entry['peer_port']['device_id'];
                //r($entry['peer_device_id']);
                $entry['peer_device'] = device_by_id_cache($entry['peer_device_id']);
            }
        }
        $entry['hostname'] = $GLOBALS['cache']['devices']['id'][$entry['device_id']]['hostname'];
        // Attach hostname for sorting
        $entries[] = $entry;
    }
    // Sorting
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'device':
            $entries = array_sort_by($entries, 'hostname', $sort_order, SORT_STRING);
            break;
        case 'pwid':
            $entries = array_sort_by($entries, 'pwID', $sort_order, SORT_NUMERIC);
            break;
        case 'pwtype':
            $entries = array_sort_by($entries, 'pwType', $sort_order, SORT_STRING, 'pwPsnType', $sort_order, SORT_STRING);
            //$pws = array_sort_by($pws, 'pwType',  $sort_order, SORT_STRING);
            break;
        case 'peer_addr':
            $entries = array_sort_by($entries, 'peer_addr', $sort_order, SORT_NUMERIC);
            break;
        case 'event':
            $entries = array_sort_by($entries, 'event', $sort_order, SORT_STRING);
            break;
        case 'uptime':
            $entries = array_sort_by($entries, 'pwUptime', $sort_order, SORT_NUMERIC);
            break;
        case 'last_change':
            $entries = array_sort_by($entries, 'last_change', $sort_neg, SORT_NUMERIC);
            break;
        case 'status':
            $entries = array_sort_by($entries, 'pwOperStatus', $sort_order, SORT_STRING);
            break;
        default:
            // Not sorted
    }
    return $entries;
}
Example #20
0
/**
 * Params:
 *
 * pagination, pageno, pagesize
 * device, port
 */
function get_neighbours_array(&$vars)
{
    $array = array();
    // With pagination? (display page numbers in header)
    $array['pagination'] = isset($vars['pagination']) && $vars['pagination'];
    pagination($vars, 0, TRUE);
    // Get default pagesize/pageno
    $array['pageno'] = $vars['pageno'];
    $array['pagesize'] = $vars['pagesize'];
    $start = $array['pagesize'] * $array['pageno'] - $array['pagesize'];
    $pagesize = $array['pagesize'];
    // Begin query generate
    $param = array();
    $where = ' WHERE `active` = 1 ';
    foreach ($vars as $var => $value) {
        if ($value != '') {
            switch ($var) {
                case 'device':
                case 'device_a':
                    $where .= generate_query_values($value, 'device_id');
                    break;
                case 'port':
                case 'port_a':
                    $where .= generate_query_values($value, 'port_id');
                    break;
                case 'device_b':
                    $where .= generate_query_values($value, 'remote_hostname');
                    break;
                case 'port_b':
                    $where .= generate_query_values($value, 'remote_port');
                    break;
                case 'protocol':
                    $where .= generate_query_values($value, 'protocol');
                    break;
                case 'platform':
                    $where .= generate_query_values($value, 'remote_platform');
                    break;
                case 'version':
                    $where .= generate_query_values($value, 'remote_version');
                    break;
                case 'remote_port_id':
                    if ($value != 0) {
                        $where .= ' AND `remote_port_id` != 0';
                    } else {
                        $where .= generate_query_values($value, 'remote_port_id');
                    }
                    break;
            }
        }
    }
    // Show neighbours only for permitted devices and ports
    $query_permitted = $GLOBALS['cache']['where']['ports_permitted'];
    $query = 'FROM `neighbours` LEFT JOIN `ports` USING(`port_id`) ';
    $query .= $where . $query_permitted;
    //$query_count = 'SELECT COUNT(*) '.$query;
    $query = 'SELECT * ' . $query;
    //$query .= ' ORDER BY `event_id` DESC ';
    //$query .= " LIMIT $start,$pagesize";
    // Query neighbours
    $array['entries'] = dbFetchRows($query, $param);
    foreach ($array['entries'] as &$entry) {
        $device =& $GLOBALS['cache']['devices']['id'][$entry['device_id']];
        if (isset($device['status']) && !$device['status']) {
            $entry['row_class'] = 'error';
        } else {
            if (isset($device['disabled']) && $device['disabled']) {
                $entry['row_class'] = 'ignore';
            }
        }
        $entry['hostname'] = $device['hostname'];
        //$entry['row_class'] = $device['row_class'];
    }
    // Sorting
    // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'device_a':
            $array['entries'] = array_sort_by($array['entries'], 'hostname', $sort_order, SORT_STRING);
            break;
        case 'port_a':
            $array['entries'] = array_sort_by($array['entries'], 'port_label', $sort_order, SORT_STRING);
            break;
        case 'device_b':
            $array['entries'] = array_sort_by($array['entries'], 'remote_hostname', $sort_order, SORT_STRING);
            break;
        case 'port_b':
            $array['entries'] = array_sort_by($array['entries'], 'remote_port', $sort_order, SORT_STRING);
            break;
        case 'protocol':
            $array['entries'] = array_sort_by($array['entries'], 'protocol', $sort_order, SORT_STRING);
            break;
        default:
            // Not sorted
    }
    // Query neighbours count
    $array['count'] = count($array['entries']);
    if ($array['pagination']) {
        $array['pagination_html'] = pagination($vars, $array['count']);
        $array['entries'] = array_chunk($array['entries'], $vars['pagesize']);
        $array['entries'] = $array['entries'][$vars['pageno'] - 1];
    }
    // Query for last timestamp
    //$array['updated'] = dbFetchCell($query_updated, $param);
    return $array;
}
Example #21
0
/**
 * Observium
 *
 *   This file is part of Observium.
 *
 * @package    observium
 * @subpackage web
 * @copyright  (C) 2006-2013 Adam Armstrong, (C) 2013-2016 Observium Limited
 *
 */
function print_storage_table($vars)
{
    global $cache, $config;
    $graph_type = "storage_usage";
    $sql = "SELECT *, `storage`.`storage_id` AS `storage_id` FROM `storage`";
    $sql .= " LEFT JOIN `storage-state` USING(`storage_id`)";
    $sql .= ' WHERE 1' . generate_query_permitted(array('device'));
    // Build query
    if (!isset($vars['ignored'])) {
        $vars['ignored'] = 0;
    }
    foreach ($vars as $var => $value) {
        switch ($var) {
            case "group":
            case "group_id":
                $values = get_group_entities($value);
                $sql .= generate_query_values($values, 'storage.storage_id');
                break;
            case "device":
            case "device_id":
                $sql .= generate_query_values($value, 'storage.device_id');
                break;
            case 'ignored':
                $sql .= generate_query_values($value, 'storage.storage_ignore');
                break;
        }
    }
    $storages = array();
    foreach (dbFetchRows($sql) as $storage) {
        if (isset($cache['devices']['id'][$storage['device_id']])) {
            $storage['hostname'] = $cache['devices']['id'][$storage['device_id']]['hostname'];
            $storage['html_row_class'] = $cache['devices']['id'][$storage['device_id']]['html_row_class'];
            $storages[] = $storage;
        }
    }
    // Sorting
    // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db
    switch ($vars['sort_order']) {
        case 'desc':
            $sort_order = SORT_DESC;
            $sort_neg = SORT_ASC;
            break;
        case 'reset':
            unset($vars['sort'], $vars['sort_order']);
            // no break here
        // no break here
        default:
            $sort_order = SORT_ASC;
            $sort_neg = SORT_DESC;
    }
    switch ($vars['sort']) {
        case 'usage':
            $storages = array_sort_by($storages, 'storage_perc', $sort_neg, SORT_NUMERIC);
            break;
        case 'mountpoint':
            $storages = array_sort_by($storages, 'storage_descr', $sort_order, SORT_STRING);
            break;
        case 'size':
        case 'free':
        case 'used':
            $storages = array_sort_by($storages, 'storage_' . $vars['sort'], $sort_neg, SORT_NUMERIC);
            break;
        default:
            $storages = array_sort_by($storages, 'hostname', $sort_order, SORT_STRING, 'storage_descr', $sort_order, SORT_STRING);
            break;
    }
    $storages_count = count($storages);
    // Pagination
    $pagination_html = pagination($vars, $storages_count);
    echo $pagination_html;
    if ($vars['pageno']) {
        $storages = array_chunk($storages, $vars['pagesize']);
        $storages = $storages[$vars['pageno'] - 1];
    }
    // End Pagination
    echo generate_box_open();
    print_storage_table_header($vars);
    foreach ($storages as $storage) {
        print_storage_row($storage, $vars);
    }
    echo "</tbody></table>";
    echo generate_box_close();
    echo $pagination_html;
}