mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
adding human readable version of /api/v0/fdb/{mac}/detail (#15045)
* adding human readable version of /api/v0/fdb/{mac}/detail * adding last seen field in human readable format * fixing styling issue * fixing another styling issue * removing stale variable * adding a limit to number of results returned in order to limit memory issues * adding the documentation for fdb_detail api * Wording fix * wording fix again. smh --------- Co-authored-by: Justin Lentz <monkeybrains7@gmail.com>
This commit is contained in:
@@ -234,3 +234,46 @@ Output:
|
|||||||
"count": 100
|
"count": 100
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### `list_fdb_detail`
|
||||||
|
|
||||||
|
Get a list of all ports FDB with human readable device and interface names.
|
||||||
|
|
||||||
|
Route: `/api/v0/resources/fdb/:mac/detail`
|
||||||
|
|
||||||
|
- mac is the specific MAC address you would like to query
|
||||||
|
|
||||||
|
Input:
|
||||||
|
|
||||||
|
-
|
||||||
|
|
||||||
|
Example:
|
||||||
|
```curl
|
||||||
|
curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://librenms.org/api/v0/resources/fdb/1aaa2bbb3ccc/detail
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
'count': 7,
|
||||||
|
'mac': '9c:93:aa:bb:cc:dd',
|
||||||
|
'mac_oui': 'Xerox Corporation',
|
||||||
|
'ports_fdb': [
|
||||||
|
{
|
||||||
|
'hostname': 'hq-core1',
|
||||||
|
'ifName': 'ae10',
|
||||||
|
'last_seen': '2 hours ago',
|
||||||
|
'updated_at': '2023-05-17 03:19:15'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'hostname': 'hq-sw1',
|
||||||
|
'ifName': 'ge-0/0/0',
|
||||||
|
'last_seen': '3 hours ago',
|
||||||
|
'updated_at': '2023-05-17 02:02:06'
|
||||||
|
},
|
||||||
|
...
|
||||||
|
],
|
||||||
|
'status': 'ok'
|
||||||
|
}
|
||||||
|
```
|
||||||
|
@@ -2424,12 +2424,51 @@ function list_fdb(Illuminate\Http\Request $request)
|
|||||||
->get();
|
->get();
|
||||||
|
|
||||||
if ($fdb->isEmpty()) {
|
if ($fdb->isEmpty()) {
|
||||||
return api_error(404, 'Fdb do not exist');
|
return api_error(404, 'Fdb entry does not exist');
|
||||||
}
|
}
|
||||||
|
|
||||||
return api_success($fdb, 'ports_fdb');
|
return api_success($fdb, 'ports_fdb');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function list_fdb_detail(Illuminate\Http\Request $request)
|
||||||
|
{
|
||||||
|
$macAddress = Rewrite::macToHex((string) $request->route('mac'));
|
||||||
|
|
||||||
|
$rules = [
|
||||||
|
'macAddress' => 'required|string|regex:/^[0-9a-fA-F]{12}$/',
|
||||||
|
];
|
||||||
|
|
||||||
|
$validate = Validator::make(['macAddress' => $macAddress], $rules);
|
||||||
|
if ($validate->fails()) {
|
||||||
|
return api_error(422, $validate->messages());
|
||||||
|
}
|
||||||
|
|
||||||
|
$extras = ['mac' => Rewrite::readableMac($macAddress), 'mac_oui' => Rewrite::readableOUI($macAddress)];
|
||||||
|
|
||||||
|
$fdb = PortsFdb::hasAccess(Auth::user())
|
||||||
|
->when(! empty($macAddress), function (Builder $query) use ($macAddress) {
|
||||||
|
return $query->leftJoin('ports', 'ports_fdb.port_id', 'ports.port_id')
|
||||||
|
->leftJoin('devices', 'ports_fdb.device_id', 'devices.device_id')
|
||||||
|
->where('mac_address', $macAddress)
|
||||||
|
->orderBy('ports_fdb.updated_at', 'desc')
|
||||||
|
->select('devices.hostname', 'ports.ifName', 'ports_fdb.updated_at');
|
||||||
|
})
|
||||||
|
->limit(1000)->get();
|
||||||
|
|
||||||
|
if (count($fdb) == 0) {
|
||||||
|
return api_error(404, 'Fdb entry does not exist');
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($fdb as $i => $fdb_entry) {
|
||||||
|
if ($fdb_entry['updated_at']) {
|
||||||
|
$fdb[$i]['last_seen'] = $fdb_entry['updated_at']->diffForHumans();
|
||||||
|
$fdb[$i]['updated_at'] = $fdb_entry['updated_at']->toDateTimeString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return api_success($fdb, 'ports_fdb', null, 200, count($fdb), $extras);
|
||||||
|
}
|
||||||
|
|
||||||
function list_sensors()
|
function list_sensors()
|
||||||
{
|
{
|
||||||
$sensors = Sensor::hasAccess(Auth::user())->get();
|
$sensors = Sensor::hasAccess(Auth::user())->get();
|
||||||
|
@@ -152,6 +152,7 @@ Route::prefix('v0')->namespace('\App\Api\Controllers')->group(function () {
|
|||||||
Route::prefix('resources')->group(function () {
|
Route::prefix('resources')->group(function () {
|
||||||
Route::get('fdb', 'LegacyApiController@list_fdb')->name('list_fdb');
|
Route::get('fdb', 'LegacyApiController@list_fdb')->name('list_fdb');
|
||||||
Route::get('fdb/{mac}', 'LegacyApiController@list_fdb')->name('list_fdb_mac');
|
Route::get('fdb/{mac}', 'LegacyApiController@list_fdb')->name('list_fdb_mac');
|
||||||
|
Route::get('fdb/{mac}/detail', 'LegacyApiController@list_fdb_detail')->name('list_fdb_detail');
|
||||||
Route::get('links', 'LegacyApiController@list_links')->name('list_links');
|
Route::get('links', 'LegacyApiController@list_links')->name('list_links');
|
||||||
Route::get('sensors', 'LegacyApiController@list_sensors')->name('list_sensors');
|
Route::get('sensors', 'LegacyApiController@list_sensors')->name('list_sensors');
|
||||||
Route::get('vlans', 'LegacyApiController@list_vlans')->name('list_vlans');
|
Route::get('vlans', 'LegacyApiController@list_vlans')->name('list_vlans');
|
||||||
|
Reference in New Issue
Block a user