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