2015-04-08 21:17:48 +01:00
< ? php
$where = 1 ;
$param = array ();
2015-05-13 18:42:51 +01:00
$sql = " FROM `devices` " ;
2015-05-05 11:29:59 +01:00
2015-05-13 15:49:50 +01:00
if ( is_admin () === FALSE && is_read () === FALSE ) {
2015-05-13 18:42:51 +01:00
$sql .= " LEFT JOIN `devices_perms` AS `DP` ON `devices`.`device_id` = `DP`.`device_id` " ;
2015-05-13 18:58:15 +01:00
$where .= " AND `DP`.`user_id`=? " ;
2015-05-13 15:49:50 +01:00
$param [] = $_SESSION [ 'user_id' ];
}
2015-05-05 11:29:59 +01:00
2015-05-13 15:49:50 +01:00
if ( ! empty ( $_POST [ 'location' ])) {
2015-05-05 11:29:59 +01:00
$sql .= " LEFT JOIN `devices_attribs` AS `DB` ON `DB`.`device_id`=`devices`.`device_id` AND `DB`.`attrib_type`='override_sysLocation_bool' AND `DB`.`attrib_value`='1' LEFT JOIN `devices_attribs` AS `DA` ON `devices`.`device_id`=`DA`.`device_id` " ;
}
$sql .= " WHERE $where " ;
2015-04-08 21:17:48 +01:00
if ( ! empty ( $_POST [ 'hostname' ])) { $sql .= " AND hostname LIKE ? " ; $param [] = " % " . $_POST [ 'hostname' ] . " % " ; }
if ( ! empty ( $_POST [ 'os' ])) { $sql .= " AND os = ? " ; $param [] = $_POST [ 'os' ]; }
if ( ! empty ( $_POST [ 'version' ])) { $sql .= " AND version = ? " ; $param [] = $_POST [ 'version' ]; }
if ( ! empty ( $_POST [ 'hardware' ])) { $sql .= " AND hardware = ? " ; $param [] = $_POST [ 'hardware' ]; }
if ( ! empty ( $_POST [ 'features' ])) { $sql .= " AND features = ? " ; $param [] = $_POST [ 'features' ]; }
if ( ! empty ( $_POST [ 'type' ])) {
if ( $_POST [ 'type' ] == 'generic' ) {
$sql .= " AND ( type = ? OR type = '') " ; $param [] = $_POST [ 'type' ];
} else {
$sql .= " AND type = ? " ; $param [] = $_POST [ 'type' ];
}
}
if ( ! empty ( $_POST [ 'state' ])) {
2015-05-27 16:06:47 +00:00
$sql .= " AND status= ? " ;
if ( is_numeric ( $_POST [ 'state' ]) ) {
$param [] = $_POST [ 'state' ];
} else {
$param [] = str_replace ( array ( 'up' , 'down' ), array ( 1 , 0 ), $_POST [ 'state' ]);
}
2015-04-08 21:17:48 +01:00
}
if ( ! empty ( $_POST [ 'disabled' ])) { $sql .= " AND disabled= ? " ; $param [] = $_POST [ 'disabled' ]; }
if ( ! empty ( $_POST [ 'ignore' ])) { $sql .= " AND `ignore`= ? " ; $param [] = $_POST [ 'ignore' ]; }
if ( ! empty ( $_POST [ 'location' ]) && $_POST [ 'location' ] == " Unset " ) { $location_filter = '' ; }
2015-05-05 11:29:59 +01:00
if ( ! empty ( $_POST [ 'location' ])) {
2015-05-05 23:54:36 +01:00
$sql .= " AND (((`DB`.`attrib_value`='1' AND `DA`.`attrib_type`='override_sysLocation_string' AND `DA`.`attrib_value` = ?)) OR `location` = ?) " ;
2015-05-21 08:40:31 -07:00
$param [] = mres ( $_POST [ 'location' ]);
$param [] = mres ( $_POST [ 'location' ]);
2015-05-05 11:29:59 +01:00
}
2015-04-08 21:17:48 +01:00
if ( ! empty ( $_POST [ 'group' ]) ) {
require_once ( '../includes/device-groups.inc.php' );
$sql .= " AND ( " ;
foreach ( GetDevicesFromGroup ( $_POST [ 'group' ]) as $dev ) {
2015-05-05 12:54:25 +01:00
$sql .= " `devices`.`device_id` = ? OR " ;
2015-04-08 21:17:48 +01:00
$param [] = $dev [ 'device_id' ];
}
$sql = substr ( $sql , 0 , strlen ( $sql ) - 3 );
$sql .= " ) " ;
}
2015-05-05 11:29:59 +01:00
$count_sql = " SELECT COUNT(`devices`.`device_id`) $sql " ;
2015-04-08 21:17:48 +01:00
$total = dbFetchCell ( $count_sql , $param );
2015-04-12 11:47:21 +01:00
if ( empty ( $total )) {
$total = 0 ;
}
2015-04-08 21:17:48 +01:00
if ( ! isset ( $sort ) || empty ( $sort )) {
$sort = '`hostname` DESC' ;
}
$sql .= " ORDER BY $sort " ;
if ( isset ( $current )) {
$limit_low = ( $current * $rowCount ) - ( $rowCount );
$limit_high = $rowCount ;
}
if ( $rowCount != - 1 ) {
$sql .= " LIMIT $limit_low , $limit_high " ;
}
2015-05-05 23:54:36 +01:00
$sql = " SELECT DISTINCT(`devices`.`device_id`),`devices`.* $sql " ;
2015-04-08 21:17:48 +01:00
if ( ! isset ( $_POST [ 'format' ])) {
$_POST [ 'format' ] = " list_detail " ;
}
list ( $format , $subformat ) = explode ( " _ " , $_POST [ 'format' ]);
foreach ( dbFetchRows ( $sql , $param ) as $device ) {
if ( isset ( $bg ) && $bg == $list_colour_b ) {
$bg = $list_colour_a ;
} else {
$bg = $list_colour_b ;
}
if ( $device [ 'status' ] == '0' ) {
$extra = " danger " ;
2015-06-22 22:11:02 +01:00
$msg = $device [ 'status_reason' ];
2015-04-08 21:17:48 +01:00
} else {
$extra = " success " ;
$msg = " up " ;
}
if ( $device [ 'ignore' ] == '1' ) {
$extra = " default " ;
$msg = " ignored " ;
if ( $device [ 'status' ] == '1' ) {
$extra = " warning " ;
$msg = " ignored " ;
}
}
if ( $device [ 'disabled' ] == '1' ) {
$extra = " default " ;
$msg = " disabled " ;
}
$type = strtolower ( $device [ 'os' ]);
$image = getImage ( $device );
if ( $device [ 'os' ] == " ios " ) {
formatCiscoHardware ( $device , true );
}
$device [ 'os_text' ] = $config [ 'os' ][ $device [ 'os' ]][ 'text' ];
$port_count = dbFetchCell ( " SELECT COUNT(*) FROM `ports` WHERE `device_id` = ? " , array ( $device [ 'device_id' ]));
$sensor_count = dbFetchCell ( " SELECT COUNT(*) FROM `sensors` WHERE `device_id` = ? " , array ( $device [ 'device_id' ]));
if ( get_dev_attrib ( $device , 'override_sysLocation_bool' )) {
$device [ 'location' ] = get_dev_attrib ( $device , 'override_sysLocation_string' );
}
$actions = ( ' < div class = " row " >
< div class = " col-xs-1 " > ' );
$actions .= '<a href="' . generate_device_url ( $device ) . '"> <img src="images/16/server.png" border="0" align="absmiddle" alt="View device" title="View device" /></a> ' ;
$actions .= ( ' </ div >
< div class = " col-xs-1 " > ' );
$actions .= '<a href="' . generate_device_url ( $device , array ( 'tab' => 'alerts' )) . '"> <img src="images/16/bell.png" border="0" align="absmiddle" alt="View alerts" title="View alerts" /></a> ' ;
$actions .= '</div>' ;
if ( $_SESSION [ 'userlevel' ] >= " 7 " ) {
$actions .= ( ' < div class = " col-xs-1 " >
< a href = " '.generate_device_url( $device , array('tab' => 'edit')).' " > < img src = " images/16/wrench.png " border = " 0 " align = " absmiddle " alt = " Edit device " title = " Edit device " /></ a >
</ div > ' );
}
$actions .= ( ' </ div >
< div class = " row " >
< div class = " col-xs-1 " >
< a href = " telnet://' . $device['hostname'] . ' " >< img src = " images/16/telnet.png " alt = " telnet " title = " Telnet to ' . $device['hostname'] . ' " border = " 0 " width = " 16 " height = " 16 " ></ a >
</ div >
< div class = " col-xs-1 " >
< a href = " ssh://' . $device['hostname'] . ' " >< img src = " images/16/ssh.png " alt = " ssh " title = " SSH to ' . $device['hostname'] . ' " border = " 0 " width = " 16 " height = " 16 " ></ a >
</ div >
< div class = " col-xs-1 " >
< a href = " https://' . $device['hostname'] . ' " >< img src = " images/16/http.png " alt = " https " title = " Launch browser https://' . $device['hostname'] . ' " border = " 0 " width = " 16 " height = " 16 " target = " _blank " ></ a >
</ div >
</ div > ' );
$hostname = generate_device_link ( $device );
$platform = $device [ 'hardware' ] . '<br />' . $device [ 'features' ];
$os = $device [ 'os_text' ] . '<br />' . $device [ 'version' ];
2015-05-30 16:37:47 +02:00
if ( extension_loaded ( 'mbstring' )) {
$location = mb_substr ( $device [ 'location' ], 0 , 32 , 'utf8' );
} else {
$location = truncate ( $device [ 'location' ], 32 , '' );
}
$uptime = formatUptime ( $device [ 'uptime' ], 'short' ) . '<br />' . $location ;
2015-04-08 21:17:48 +01:00
if ( $subformat == " detail " ) {
$hostname .= '<br />' . $device [ 'sysName' ];
if ( $port_count ) {
$col_port = ' <img src="images/icons/port.png" align=absmiddle /> ' . $port_count . '<br />' ;
}
if ( $sensor_count ) {
$col_port .= ' <img src="images/icons/sensors.png" align=absmiddle /> ' . $sensor_count ;
}
} else {
}
$response [] = array ( 'extra' => $extra , 'msg' => $msg , 'icon' => $image , 'hostname' => $hostname , 'ports' => $col_port , 'hardware' => $platform , 'os' => $os , 'uptime' => $uptime , 'actions' => $actions );
}
$output = array ( 'current' => $current , 'rowCount' => $rowCount , 'rows' => $response , 'total' => $total );
echo _json_encode ( $output );