CONFIG_PATH für yaml Datei

This commit is contained in:
Eric Neuber 2026-03-23 22:01:44 +01:00
parent 89f02422e7
commit 9d33984c97

View File

@ -16,6 +16,10 @@ use crate::config::{AppConfig, ModbusValueMaps};
use crate::modbus_types::{ModbusInputRegisterConfig, ModbusHoldingRegisterConfig, ModbusCoilsConfig}; use crate::modbus_types::{ModbusInputRegisterConfig, ModbusHoldingRegisterConfig, ModbusCoilsConfig};
use crate::app_state::AppState; use crate::app_state::AppState;
fn get_config_path() -> String {
std::env::var("CONFIG_PATH").unwrap_or_else(|_| "paramod.yaml".to_string())
}
async fn index(data: web::Data<AppState>) -> Result<HttpResponse> { async fn index(data: web::Data<AppState>) -> Result<HttpResponse> {
let config = data.config.lock().unwrap(); let config = data.config.lock().unwrap();
let value_maps = data.value_maps.lock().unwrap(); let value_maps = data.value_maps.lock().unwrap();
@ -138,7 +142,7 @@ async fn save_table(
req: web::Json<SaveTableRequest>, req: web::Json<SaveTableRequest>,
) -> Result<HttpResponse> { ) -> Result<HttpResponse> {
let mut config = data.config.lock().unwrap(); let mut config = data.config.lock().unwrap();
let conf_path = "paramod.yaml"; let conf_path = get_config_path();
match req.table_id.as_str() { match req.table_id.as_str() {
"modbus_input_register" => { "modbus_input_register" => {
let rows: Vec<HashMap<String, ModbusInputRegisterConfig>> = let rows: Vec<HashMap<String, ModbusInputRegisterConfig>> =
@ -170,7 +174,7 @@ async fn save_table(
Ok(s) => s, Ok(s) => s,
Err(e) => return Ok(HttpResponse::InternalServerError().body(format!("Serialisierungsfehler: {}", e))), Err(e) => return Ok(HttpResponse::InternalServerError().body(format!("Serialisierungsfehler: {}", e))),
}; };
if let Err(e) = fs::write(conf_path, yaml_str) { if let Err(e) = fs::write(&conf_path, yaml_str) {
return Ok(HttpResponse::InternalServerError().body(format!("Fehler beim Schreiben: {}", e))); return Ok(HttpResponse::InternalServerError().body(format!("Fehler beim Schreiben: {}", e)));
} }
Ok(HttpResponse::Ok().body("success")) Ok(HttpResponse::Ok().body("success"))
@ -195,16 +199,16 @@ async fn save_settings(
// Value-Maps neu initialisieren // Value-Maps neu initialisieren
let mut value_maps = data.value_maps.lock().unwrap(); let mut value_maps = data.value_maps.lock().unwrap();
*value_maps = ModbusValueMaps::from_config(&new_config); *value_maps = ModbusValueMaps::from_config(&new_config);
let conf_path = "paramod.yaml"; let conf_path = get_config_path();
let yaml_str = match serde_yaml::to_string(&new_config) { let yaml_str = match serde_yaml::to_string(&new_config) {
Ok(s) => s, Ok(s) => s,
Err(e) => return Ok(HttpResponse::InternalServerError().body(format!("Serialisierungsfehler: {}", e))), Err(e) => return Ok(HttpResponse::InternalServerError().body(format!("Serialisierungsfehler: {}", e))),
}; };
if let Err(e) = fs::write(conf_path, yaml_str) { if let Err(e) = fs::write(&conf_path, yaml_str) {
return Ok(HttpResponse::InternalServerError().body(format!("Fehler beim Schreiben: {}", e))); return Ok(HttpResponse::InternalServerError().body(format!("Fehler beim Schreiben: {}", e)));
} }
// Reload config from file // Reload config from file
let conf_str = match std::fs::read_to_string(conf_path) { let conf_str = match std::fs::read_to_string(&conf_path) {
Ok(s) => s, Ok(s) => s,
Err(e) => return Ok(HttpResponse::InternalServerError().body(format!("Fehler beim Lesen: {}", e))), Err(e) => return Ok(HttpResponse::InternalServerError().body(format!("Fehler beim Lesen: {}", e))),
}; };
@ -226,9 +230,8 @@ async fn get_config(data: web::Data<AppState>) -> HttpResponse {
#[actix_web::main] #[actix_web::main]
async fn main() -> std::io::Result<()> { async fn main() -> std::io::Result<()> {
let config_path = get_config_path();
let config_path = "paramod.yaml"; let app_state = web::Data::new(AppState::load_from_conf(&config_path));
let app_state = web::Data::new(AppState::load_from_conf(config_path));
// Starte Modbus-Polling-Thread // Starte Modbus-Polling-Thread
{ {