';
$count_boxes = 0;
// Device down boxes
if (is_admin() === true || is_read() === true) {
$sql = "SELECT * FROM `devices` WHERE `status` = '0' AND `ignore` = '0' LIMIT " . $config['front_page_down_box_limit'];
} else {
$sql = "SELECT * FROM `devices` AS D, devices_perms AS P WHERE D.device_id = P.device_id AND P.user_id = '" . $_SESSION['user_id'] . "' AND D.status = '0' AND D.ignore = '0' LIMIT" . $config['front_page_down_box_limit'];
}
foreach (dbFetchRows($sql) as $device) {
generate_front_box(
'device-down',
generate_device_link($device, shorthost($device['hostname'])) . '
Device Down
' . truncate($device['location'], 20) . ''
);
++$count_boxes;
}
if (is_admin() === true || is_read() === true) {
$sql = "SELECT * FROM `ports` AS I, `devices` AS D WHERE I.device_id = D.device_id AND ifOperStatus = 'down' AND ifAdminStatus = 'up' AND D.ignore = '0' AND I.ignore = '0' AND `D`.`status` = '1' LIMIT " . $config['front_page_down_box_limit'];
} else {
$sql = "SELECT * FROM `ports` AS I, `devices` AS D, devices_perms AS P WHERE D.device_id = P.device_id AND P.user_id = '" . $_SESSION['user_id'] . "' AND I.device_id = D.device_id AND ifOperStatus = 'down' AND ifAdminStatus = 'up' AND D.ignore = '0' AND I.ignore = '0' AND `D`.`status` = '1' LIMIT " . $config['front_page_down_box_limit'];
}
// These things need to become more generic, and more manageable across different frontpages... rewrite inc :>
// Port down boxes
if ($config['warn']['ifdown']) {
foreach (dbFetchRows($sql) as $interface) {
if (!$interface['deleted']) {
$interface = ifNameDescr($interface);
generate_front_box(
'alert alert-danger',
generate_device_link($interface, shorthost($interface['hostname'])) . "
Port Down
" . generate_port_link($interface, substr(makeshortif($interface['label']), 0, 13)) . '
' . ($interface['ifAlias'] ? '
' . substr($interface['ifAlias'], 0, 20) . '' : '')
);
++$count_boxes;
}
}
}
/*
FIXME service permissions? seem nonexisting now.. */
// Service down boxes
if (is_admin() === true || is_read() === true) {
$sql = "SELECT * FROM `services` AS S, `devices` AS D WHERE S.device_id = D.device_id AND service_status = '2' AND D.ignore = '0' AND S.service_ignore = '0' LIMIT " . $config['front_page_down_box_limit'];
$param[] = '';
} else {
$sql = "SELECT * FROM services AS S, devices AS D, devices_perms AS P WHERE P.`user_id` = ? AND P.`device_id` = D.`device_id` AND S.`device_id` = D.`device_id` AND S.`service_ignore` = '0' AND S.`service_disabled` = '0' AND S.`service_status` = '2' LIMIT " . $config['front_page_down_box_limit'];
$param[] = $_SESSION['user_id'];
}
foreach (dbFetchRows($sql, $param) as $service) {
generate_front_box(
'service-down',
generate_device_link($service, shorthost($service['hostname'])) . '
Service Down
' . $service['service_type'] . '
' . truncate($interface['ifAlias'], 20) . ''
);
++$count_boxes;
}
// BGP neighbour down boxes
if (isset($config['enable_bgp']) && $config['enable_bgp']) {
if (is_admin() === true || is_read() === true) {
$sql = "SELECT * FROM `devices` AS D, bgpPeers AS B WHERE bgpPeerAdminStatus != 'start' AND bgpPeerState != 'established' AND bgpPeerState != '' AND B.device_id = D.device_id AND D.ignore = 0 AND `D`.`status` = '1' LIMIT " . $config['front_page_down_box_limit'];
} else {
$sql = "SELECT * FROM `devices` AS D, bgpPeers AS B, devices_perms AS P WHERE D.device_id = P.device_id AND P.user_id = '" . $_SESSION['user_id'] . "' AND bgpPeerAdminStatus != 'start' AND bgpPeerState != 'established' AND bgpPeerState != '' AND B.device_id = D.device_id AND D.ignore = 0 AND `D`.`status` = '1' LIMIT " . $config['front_page_down_box_limit'];
}
foreach (dbFetchRows($sql) as $peer) {
generate_front_box(
'bgp-down',
generate_device_link($peer, shorthost($peer['hostname'])) . "
BGP Down
" . $peer['bgpPeerIdentifier'] . '
AS' . substr($peer['bgpPeerRemoteAs'] . ' ' . $peer['astext'], 0, 14) . ''
);
++$count_boxes;
}
}
// Device rebooted boxes
if (filter_var($config['uptime_warning'], FILTER_VALIDATE_FLOAT) !== false && $config['uptime_warning'] > 0 && $config['os'][$device['os']]['bad_uptime'] !== true) {
if (is_admin() === true || is_read() === true) {
$sql = "SELECT * FROM `devices` AS D WHERE D.status = '1' AND D.uptime > 0 AND D.uptime < '" . $config['uptime_warning'] . "' AND D.ignore = 0 LIMIT " . $config['front_page_down_box_limit'];
} else {
$sql = "SELECT * FROM `devices` AS D, devices_perms AS P WHERE D.device_id = P.device_id AND P.user_id = '" . $_SESSION['user_id'] . "' AND D.status = '1' AND D.uptime > 0 AND D.uptime < '" . $config['uptime_warning'] . "' AND D.ignore = 0 LIMIT " . $config['front_page_down_box_limit'];
}
foreach (dbFetchRows($sql) as $device) {
generate_front_box(
'device-rebooted',
generate_device_link($device, shorthost($device['hostname'])) . '
Device Rebooted
' . formatUptime($device['uptime'], 'short') . ''
);
++$count_boxes;
}
}
if ($count_boxes == 0) {
echo "
Nothing here yet
This is where status notifications about devices and services would normally go. You might have none
because you run such a great network, or perhaps you've just started using " . $config['project_name'] . ". If you're new to " . $config['project_name'] . ', you might
want to start by adding one or more devices in the Devices menu.
';
}
echo '