2017-06-26 07:58:17 -05:00
< ? php
$param = array ();
2017-06-29 15:03:56 -05:00
$sql = ' FROM `ports_fdb` AS `F`' ;
2017-06-26 07:58:17 -05:00
if ( is_admin () === false && is_read () === false ) {
$sql .= ' LEFT JOIN `devices_perms` AS `DP` ON `D`.`device_id` = `DP`.`device_id`' ;
$where .= ' AND `DP`.`user_id`=?' ;
$param [] = $_SESSION [ 'user_id' ];
}
2017-06-29 15:03:56 -05:00
$sql .= " LEFT JOIN `ports` AS `P` ON `F`.`port_id`=`P`.`port_id` " ;
$sql .= " LEFT JOIN `devices` AS `D` ON `F`.`device_id`=`D`.`device_id` " ;
$sql .= " LEFT JOIN `vlans` AS `V` ON `F`.`vlan_id`=`V`.`vlan_id` " ;
$sql .= " LEFT JOIN `ipv4_mac` ON `F`.`mac_address`=`ipv4_mac`.`mac_address` " ;
2017-06-26 07:58:17 -05:00
2017-06-29 15:03:56 -05:00
$sql .= " WHERE 1 " ;
2017-06-26 07:58:17 -05:00
if ( is_numeric ( $_POST [ 'device_id' ])) {
2017-06-29 15:03:56 -05:00
$sql .= ' AND `F`.`device_id`=?' ;
2017-06-26 07:58:17 -05:00
$param [] = $_POST [ 'device_id' ];
}
if ( is_numeric ( $_POST [ 'port_id' ])) {
2017-06-29 15:03:56 -05:00
$sql .= ' AND `F`.`port_id`=?' ;
2017-06-26 07:58:17 -05:00
$param [] = $_POST [ 'port_id' ];
}
if ( isset ( $_POST [ 'searchPhrase' ]) && ! empty ( $_POST [ 'searchPhrase' ])) {
$vlan_search = mres ( trim ( $_POST [ 'searchPhrase' ]));
$mac_search = '%' . str_replace ( array ( ':' , ' ' , '-' , '.' , '0x' ), '' , mres ( $_POST [ 'searchPhrase' ])) . '%' ;
if ( isset ( $_POST [ 'searchby' ]) && $_POST [ 'searchby' ] == 'vlan' ) {
2017-06-29 15:03:56 -05:00
$sql .= ' AND `V`.`vlan_vlan` = ?' ;
2017-06-26 07:58:17 -05:00
$param [] = $vlan_search ;
} elseif ( isset ( $_POST [ 'searchby' ]) && $_POST [ 'searchby' ] == 'mac' ) {
2017-06-29 15:03:56 -05:00
$sql .= ' AND `F`.`mac_address` LIKE ?' ;
2017-06-26 07:58:17 -05:00
$param [] = $mac_search ;
} else {
2017-06-29 15:03:56 -05:00
$sql .= ' AND (`V`.`vlan_vlan` = ? OR `F`.`mac_address` LIKE ?)' ;
2017-06-26 07:58:17 -05:00
$param [] = $vlan_search ;
$param [] = $mac_search ;
}
}
$count_sql = " SELECT COUNT(`F`.`port_id`) $sql " ;
$total = dbFetchCell ( $count_sql , $param );
if ( empty ( $total )) {
$total = 0 ;
}
if ( ! isset ( $sort ) || empty ( $sort )) {
2017-06-29 15:03:56 -05:00
$sort = '`F`.`port_id` ASC' ;
2017-06-26 07:58:17 -05:00
}
$sql .= " ORDER BY $sort " ;
if ( isset ( $current )) {
$limit_low = (( $current * $rowCount ) - ( $rowCount ));
$limit_high = $rowCount ;
}
if ( $rowCount != - 1 ) {
$sql .= " LIMIT $limit_low , $limit_high " ;
}
2017-06-29 15:03:56 -05:00
$sql = " SELECT `P`.*, `ifDescr` AS `interface`, `F`.`mac_address`, `ipv4_mac`.`ipv4_address`, `V`.`vlan_vlan` as `vlan`, `D`.`hostname` AS `device` $sql " ;
2017-06-26 07:58:17 -05:00
foreach ( dbFetchRows ( $sql , $param ) as $entry ) {
$entry = cleanPort ( $entry );
if ( ! $ignore ) {
if ( $entry [ 'ifInErrors' ] > 0 || $entry [ 'ifOutErrors' ] > 0 ) {
2017-06-29 15:03:56 -05:00
$error_img = generate_port_link ( $entry , " <i class='fa fa-flag fa-lg' style='color:red' aria-hidden='true'></i> " , 'port_errors' );
2017-06-26 07:58:17 -05:00
} else {
$error_img = '' ;
}
$response [] = array (
2017-06-29 15:03:56 -05:00
'device' => generate_device_link ( device_by_id_cache ( $entry [ 'device_id' ])),
2017-06-26 07:58:17 -05:00
'mac_address' => formatMac ( $entry [ 'mac_address' ]),
2017-06-29 15:03:56 -05:00
'ipv4_address' => $entry [ 'ipv4_address' ],
2017-06-26 07:58:17 -05:00
'interface' => generate_port_link ( $entry , makeshortif ( fixifname ( cleanPort ( $entry [ 'label' ])))) . ' ' . $error_img ,
2017-06-29 15:03:56 -05:00
'vlan' => $entry [ 'vlan' ],
2017-06-26 07:58:17 -05:00
);
} //end if
unset ( $ignore );
} //end foreach
$output = array (
'current' => $current ,
'rowCount' => $rowCount ,
'rows' => $response ,
'total' => $total ,
);
echo _json_encode ( $output );