From 3e7889a2073f085d89fef0d543f3ca2b4573a392 Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 10 Feb 2024 22:08:04 +0100 Subject: [PATCH] implement list network links --- src/api/network.rs | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/api/network.rs b/src/api/network.rs index d3b8f7b..0d7ed39 100644 --- a/src/api/network.rs +++ b/src/api/network.rs @@ -8,6 +8,7 @@ use crate::{ update_thing_by_index, update_thing_by_name, }; use jsonrpsee::{types::Params, RpcModule}; +use std::process::Command; pub fn register_methods(module: &mut RpcModule) { module @@ -85,7 +86,24 @@ pub fn register_methods(module: &mut RpcModule) { } pub fn list_network_links(_: Params, _state: &RpcState) -> Result, ApiError> { - Ok(vec![Link { - name: "test1".to_string(), - }]) + match Command::new("ls") + .arg("-w") + .arg("1") + .arg("/sys/class/net") + .output() + { + Ok(out) => { + let mut links = vec![]; + let output = String::from_utf8_lossy(&out.stdout).to_string(); + + for l in output.split("\n") { + links.push(Link { + name: l.to_string(), + }) + } + + Ok(links) + } + Err(err) => Err(ApiError::IOError(err)), + } }