Can edit more network settings
This commit is contained in:
@ -5,7 +5,7 @@ use crate::controllers::{HttpResult, LibVirtReq};
|
||||
use crate::extractors::local_auth_extractor::LocalAuthEnabled;
|
||||
use crate::libvirt_rest_structures::HypervisorInfo;
|
||||
use actix_web::{HttpResponse, Responder};
|
||||
use sysinfo::{System, SystemExt};
|
||||
use sysinfo::{NetworksExt, System, SystemExt};
|
||||
|
||||
pub async fn root_index() -> impl Responder {
|
||||
HttpResponse::Ok().body("Hello world!")
|
||||
@ -86,3 +86,16 @@ pub async fn server_info(client: LibVirtReq) -> HttpResult {
|
||||
system,
|
||||
}))
|
||||
}
|
||||
|
||||
pub async fn networks_list() -> HttpResult {
|
||||
let mut system = System::new();
|
||||
system.refresh_networks_list();
|
||||
|
||||
Ok(HttpResponse::Ok().json(
|
||||
system
|
||||
.networks()
|
||||
.iter()
|
||||
.map(|n| n.0.to_string())
|
||||
.collect::<Vec<_>>(),
|
||||
))
|
||||
}
|
||||
|
@ -229,10 +229,10 @@ pub struct NetworkForwardXML {
|
||||
pub mode: String,
|
||||
#[serde(
|
||||
default,
|
||||
rename(serialize = "@mode"),
|
||||
skip_serializing_if = "Option::is_none"
|
||||
rename(serialize = "@dev"),
|
||||
skip_serializing_if = "String::is_empty"
|
||||
)]
|
||||
pub dev: Option<String>,
|
||||
pub dev: String,
|
||||
}
|
||||
|
||||
/// Network DNS information
|
||||
|
@ -421,7 +421,7 @@ impl NetworkInfo {
|
||||
forward: match self.forward_mode {
|
||||
NetworkForwardMode::NAT => Some(NetworkForwardXML {
|
||||
mode: "nat".to_string(),
|
||||
dev: self.device,
|
||||
dev: self.device.unwrap_or_default(),
|
||||
}),
|
||||
NetworkForwardMode::Isolated => None,
|
||||
},
|
||||
@ -443,7 +443,13 @@ impl NetworkInfo {
|
||||
None => NetworkForwardMode::Isolated,
|
||||
Some(_) => NetworkForwardMode::NAT,
|
||||
},
|
||||
device: xml.forward.map(|f| f.dev).unwrap_or(None),
|
||||
device: xml
|
||||
.forward
|
||||
.map(|f| match f.dev.is_empty() {
|
||||
true => None,
|
||||
false => Some(f.dev),
|
||||
})
|
||||
.unwrap_or(None),
|
||||
dns_server: xml.dns.map(|d| d.forwarder.addr),
|
||||
domain: xml.domain.map(|d| d.name),
|
||||
ip_v4: xml
|
||||
|
@ -101,6 +101,10 @@ async fn main() -> std::io::Result<()> {
|
||||
"/api/server/info",
|
||||
web::get().to(server_controller::server_info),
|
||||
)
|
||||
.route(
|
||||
"/api/server/networks",
|
||||
web::get().to(server_controller::networks_list),
|
||||
)
|
||||
// Auth controller
|
||||
.route(
|
||||
"/api/auth/local",
|
||||
|
Reference in New Issue
Block a user