diff --git a/html/api_v0.php b/html/api_v0.php index 883b4609d..3ca6dc0ad 100644 --- a/html/api_v0.php +++ b/html/api_v0.php @@ -48,6 +48,7 @@ $app->group( $app->get('/:hostname/graphs', 'authToken', 'get_graphs')->name('get_graphs'); // api/v0/devices/$hostname/graphs $app->get('/:hostname/ports', 'authToken', 'get_port_graphs')->name('get_port_graphs'); + $app->get('/:hostname/port_stack', 'authToken', 'get_port_stack')->name('get_port_stack'); // api/v0/devices/$hostname/ports $app->get('/:hostname/components', 'authToken', 'get_components')->name('get_components'); $app->post('/:hostname/components/:type', 'authToken', 'add_components')->name('add_components'); diff --git a/html/includes/api_functions.inc.php b/html/includes/api_functions.inc.php index 834904fff..004138f16 100644 --- a/html/includes/api_functions.inc.php +++ b/html/includes/api_functions.inc.php @@ -721,6 +721,27 @@ function get_port_graphs() { } +function get_port_stack() { + global $config; + $app = \Slim\Slim::getInstance(); + $router = $app->router()->getCurrentRoute()->getParams(); + $hostname = $router['hostname']; + + // use hostname as device_id if it's all digits + $device_id = ctype_digit($hostname) ? $hostname : getidbyname($hostname); + $mappings = dbFetchRows("SELECT * FROM `ports_stack` WHERE `device_id` = ? AND `ifStackStatus` = 'active' ORDER BY `port_id_high` ASC", array($device_id)); + $total_mappings = count($mappings); + $output = array( + 'status' => 'ok', + 'err-msg' => '', + 'count' => $total_mappings, + 'mappings' => $mappings, + ); + $app->response->setStatus('200'); + $app->response->headers->set('Content-Type', 'application/json'); + echo _json_encode($output); +} + function list_alert_rules() { global $config; $app = \Slim\Slim::getInstance();