mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-06-14 11:42:02 +08:00
feat: 实现 Redfish API 标准接口;支持通过前端开关控制 Redfish 服务
This commit is contained in:
@@ -6,6 +6,7 @@ mod audio;
|
||||
mod auth;
|
||||
mod hid;
|
||||
mod msd;
|
||||
mod redfish;
|
||||
mod rtsp;
|
||||
mod rustdesk;
|
||||
mod stream;
|
||||
@@ -17,6 +18,7 @@ pub use audio::{get_audio_config, update_audio_config};
|
||||
pub use auth::{get_auth_config, update_auth_config};
|
||||
pub use hid::{get_hid_config, update_hid_config};
|
||||
pub use msd::{get_msd_config, update_msd_config};
|
||||
pub use redfish::{get_redfish_config, update_redfish_config};
|
||||
pub use rtsp::{get_rtsp_config, get_rtsp_status, update_rtsp_config};
|
||||
pub use rustdesk::{
|
||||
get_device_password, get_rustdesk_config, get_rustdesk_status, regenerate_device_id,
|
||||
|
||||
29
src/web/handlers/config/redfish.rs
Normal file
29
src/web/handlers/config/redfish.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
use axum::{extract::State, Json};
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::error::Result;
|
||||
use crate::state::AppState;
|
||||
|
||||
use super::types::{RedfishConfigResponse, RedfishConfigUpdate};
|
||||
|
||||
pub async fn get_redfish_config(State(state): State<Arc<AppState>>) -> Json<RedfishConfigResponse> {
|
||||
Json(RedfishConfigResponse {
|
||||
enabled: state.config.get().redfish.enabled,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn update_redfish_config(
|
||||
State(state): State<Arc<AppState>>,
|
||||
Json(req): Json<RedfishConfigUpdate>,
|
||||
) -> Result<Json<RedfishConfigResponse>> {
|
||||
state
|
||||
.config
|
||||
.update(|config| {
|
||||
req.apply_to(&mut config.redfish);
|
||||
})
|
||||
.await?;
|
||||
|
||||
Ok(Json(RedfishConfigResponse {
|
||||
enabled: state.config.get().redfish.enabled,
|
||||
}))
|
||||
}
|
||||
@@ -1009,6 +1009,24 @@ impl WebConfigUpdate {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct RedfishConfigResponse {
|
||||
pub enabled: bool,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct RedfishConfigUpdate {
|
||||
pub enabled: Option<bool>,
|
||||
}
|
||||
|
||||
impl RedfishConfigUpdate {
|
||||
pub fn apply_to(&self, config: &mut crate::config::RedfishConfig) {
|
||||
if let Some(enabled) = self.enabled {
|
||||
config.enabled = enabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
Reference in New Issue
Block a user