2015-04-08 21:17:48 +01:00
< ? php
$where = 1 ;
$param = array ();
2015-07-13 20:10:26 +02:00
$sql = ' FROM `devices`' ;
2015-05-05 11:29:59 +01:00
2015-07-13 20:10:26 +02:00
if ( is_admin () === false && is_read () === false ) {
$sql .= ' LEFT JOIN `devices_perms` AS `DP` ON `devices`.`device_id` = `DP`.`device_id`' ;
$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
2015-07-13 20:10:26 +02:00
if ( ! empty ( $_POST [ 'hostname' ])) {
$sql .= ' AND hostname LIKE ?' ;
$param [] = '%' . $_POST [ 'hostname' ] . '%' ;
2015-04-08 21:17:48 +01:00
}
2015-07-13 20:10:26 +02:00
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' ];
}
}
2015-04-08 21:17:48 +01:00
if ( ! empty ( $_POST [ 'state' ])) {
2015-07-13 20:10:26 +02:00
$sql .= ' AND status= ?' ;
if ( is_numeric ( $_POST [ 'state' ])) {
2015-05-27 16:06:47 +00:00
$param [] = $_POST [ 'state' ];
}
2015-07-13 20:10:26 +02:00
else {
$param [] = str_replace ( array ( 'up' , 'down' ), array ( 1 , 0 ), $_POST [ 'state' ]);
}
}
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-04-08 21:17:48 +01:00
}
2015-07-13 20:10:26 +02:00
2015-05-05 11:29:59 +01:00
if ( ! empty ( $_POST [ 'location' ])) {
2015-07-20 16:52:33 +01:00
$sql .= " AND `location` = ? " ;
2015-08-09 21:17:54 +00:00
$param [] = $_POST [ 'location' ];
2015-05-05 11:29:59 +01:00
}
2015-07-13 20:10:26 +02:00
if ( ! empty ( $_POST [ 'group' ])) {
include_once '../includes/device-groups.inc.php' ;
$sql .= ' AND ( ' ;
foreach ( GetDevicesFromGroup ( $_POST [ 'group' ]) as $dev ) {
$sql .= '`devices`.`device_id` = ? OR ' ;
2015-04-08 21:17:48 +01:00
$param [] = $dev [ 'device_id' ];
}
2015-07-13 20:10:26 +02:00
$sql = substr ( $sql , 0 , ( strlen ( $sql ) - 3 ));
$sql .= ' )' ;
2015-04-08 21:17:48 +01:00
}
2015-05-05 11:29:59 +01:00
$count_sql = " SELECT COUNT(`devices`.`device_id`) $sql " ;
2015-04-08 21:17:48 +01:00
2015-07-13 20:10:26 +02: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 )) {
2015-07-13 20:10:26 +02:00
$limit_low = (( $current * $rowCount ) - ( $rowCount ));
2015-04-08 21:17:48 +01:00
$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' ])) {
2015-07-13 20:10:26 +02:00
$_POST [ 'format' ] = 'list_detail' ;
2015-04-08 21:17:48 +01:00
}
2015-07-13 20:10:26 +02:00
list ( $format , $subformat ) = explode ( '_' , $_POST [ 'format' ]);
2015-04-08 21:17:48 +01:00
foreach ( dbFetchRows ( $sql , $param ) as $device ) {
2015-07-13 20:10:26 +02:00
if ( isset ( $bg ) && $bg == $list_colour_b ) {
$bg = $list_colour_a ;
}
else {
$bg = $list_colour_b ;
}
if ( $device [ 'status' ] == '0' ) {
$extra = 'danger' ;
$msg = $device [ 'status_reason' ];
}
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' ]));
2015-10-11 14:29:08 +02:00
$actions = ( '<div class="container-fluid"><div class="row">
2015-07-13 20:10:26 +02:00
<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>
2015-10-11 14:29:08 +02:00
</div></div>' );
2015-07-13 20:10:26 +02:00
$hostname = generate_device_link ( $device );
$platform = $device [ 'hardware' ] . '<br />' . $device [ 'features' ];
$os = $device [ 'os_text' ] . '<br />' . $device [ 'version' ];
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 ;
if ( $subformat == 'detail' ) {
$hostname .= '<br />' . $device [ 'sysName' ];
2015-08-07 08:24:53 +00:00
if ( empty ( $port_count )) {
$port_count = 0 ;
2016-04-11 13:45:58 -07:00
$col_port = '' ;
2015-08-07 08:24:53 +00:00
}
2015-07-13 20:10:26 +02:00
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 ,
);
} //end foreach
$output = array (
'current' => $current ,
'rowCount' => $rowCount ,
'rows' => $response ,
'total' => $total ,
);
2015-04-08 21:17:48 +01:00
echo _json_encode ( $output );