From 2fd14a00633a9161e8406435a46154d486cd52f0 Mon Sep 17 00:00:00 2001 From: Gianluca Brigandi Date: Wed, 18 Jun 2025 08:16:23 -0700 Subject: [PATCH] fixed minor issues with passing configuration as environment variables. --- src/main.rs | 71 +++++++++++++++++----------------- tests/mcp_stdio_test.rs | 12 ++++-- tests/rmcp_integration_test.rs | 8 ++-- 3 files changed, 47 insertions(+), 44 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5069db9..e190bef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -90,44 +90,43 @@ impl WazuhToolsServer { fn new() -> Result { dotenv().ok(); - let wazuh_host = env::var("WAZUH_HOST").unwrap_or_else(|_| "localhost".to_string()); - let wazuh_api_port = env::var("WAZUH_API_PORT") - .unwrap_or_else(|_| "55000".to_string()) - .parse::() - .map_err(|e| anyhow::anyhow!("Invalid WAZUH_API_PORT: {}", e))?; - let wazuh_indexer_port = env::var("WAZUH_INDEXER_PORT") - .unwrap_or_else(|_| "9200".to_string()) - .parse::() - .map_err(|e| anyhow::anyhow!("Invalid WAZUH_INDEXER_PORT: {}", e))?; - - // For backward compatibility, also check WAZUH_PORT - let wazuh_port = env::var("WAZUH_PORT") - .ok() - .and_then(|p| p.parse::().ok()) - .unwrap_or(wazuh_indexer_port); - - let wazuh_user = env::var("WAZUH_USER").unwrap_or_else(|_| "admin".to_string()); - let wazuh_pass = env::var("WAZUH_PASS").unwrap_or_else(|_| "admin".to_string()); - let verify_ssl = env::var("VERIFY_SSL") - .unwrap_or_else(|_| "false".to_string()) - .to_lowercase() - == "true"; + let api_host = env::var("WAZUH_API_HOST").unwrap_or_else(|_| "localhost".to_string()); + let api_port: u16 = env::var("WAZUH_API_PORT") + .unwrap_or_else(|_| "55000".to_string()) + .parse() + .unwrap_or(55000); + let api_username = env::var("WAZUH_API_USERNAME").unwrap_or_else(|_| "wazuh".to_string()); + let api_password = env::var("WAZUH_API_PASSWORD").unwrap_or_else(|_| "wazuh".to_string()); - let protocol = env::var("WAZUH_TEST_PROTOCOL").unwrap_or_else(|_| "https".to_string()); - tracing::debug!(?protocol, "Using Wazuh protocol for client from WAZUH_TEST_PROTOCOL or default"); + let indexer_host = env::var("WAZUH_INDEXER_HOST").unwrap_or_else(|_| "localhost".to_string()); + let indexer_port: u16 = env::var("WAZUH_INDEXER_PORT") + .unwrap_or_else(|_| "9200".to_string()) + .parse() + .unwrap_or(9200); + let indexer_username = + env::var("WAZUH_INDEXER_USERNAME").unwrap_or_else(|_| "admin".to_string()); + let indexer_password = + env::var("WAZUH_INDEXER_PASSWORD").unwrap_or_else(|_| "admin".to_string()); - let wazuh_factory = WazuhClientFactory::new( - wazuh_host.clone(), - wazuh_api_port, - wazuh_user.clone(), - wazuh_pass.clone(), - wazuh_host, - wazuh_port, - wazuh_user, - wazuh_pass, - verify_ssl, - Some(protocol), - ); + let verify_ssl = env::var("WAZUH_VERIFY_SSL") + .unwrap_or_else(|_| "false".to_string()) + .parse() + .unwrap_or(false); + + let test_protocol = env::var("WAZUH_TEST_PROTOCOL") + .ok().or_else(|| Some("https".to_string())); + + let wazuh_factory = WazuhClientFactory::new( + api_host, + api_port, + api_username, + api_password, + indexer_host, + indexer_port, + indexer_username, + indexer_password, + verify_ssl, + test_protocol); let wazuh_indexer_client = wazuh_factory.create_indexer_client(); let wazuh_rules_client = wazuh_factory.create_rules_client(); diff --git a/tests/mcp_stdio_test.rs b/tests/mcp_stdio_test.rs index 1467022..b4e4b5c 100644 --- a/tests/mcp_stdio_test.rs +++ b/tests/mcp_stdio_test.rs @@ -19,10 +19,14 @@ impl McpStdioClient { fn start() -> Result> { let mut child = Command::new("cargo") .args(["run", "--bin", "mcp-server-wazuh"]) - .env("WAZUH_HOST", "nonexistent.example.com") // Use non-existent host - .env("WAZUH_PORT", "9999") - .env("WAZUH_USER", "test") - .env("WAZUH_PASS", "test") + .env("WAZUH_API_HOST", "nonexistent.example.com") // Use non-existent host + .env("WAZUH_API_PORT", "9999") + .env("WAZUH_API_USER", "test") + .env("WAZUH_API_PASS", "test") + .env("WAZUH_INDEXER_HOST", "nonexistent.example.com") // Use non-existent host + .env("WAZUH_INDEXER_PORT", "8888") + .env("WAZUH_INDEXER_USER", "test") + .env("WAZUH_INDEXER_PASS", "test") .env("VERIFY_SSL", "false") .env("RUST_LOG", "error") // Minimize logging noise .stdin(Stdio::piped()) diff --git a/tests/rmcp_integration_test.rs b/tests/rmcp_integration_test.rs index 0a829be..c8de7ce 100644 --- a/tests/rmcp_integration_test.rs +++ b/tests/rmcp_integration_test.rs @@ -26,10 +26,10 @@ impl McpServerProcess { fn start_with_mock_wazuh(mock_server: &MockWazuhServer) -> Result> { let mut child = Command::new("cargo") .args(["run", "--bin", "mcp-server-wazuh"]) - .env("WAZUH_HOST", mock_server.host()) - .env("WAZUH_PORT", mock_server.port().to_string()) - .env("WAZUH_USER", "admin") - .env("WAZUH_PASS", "admin") + .env("WAZUH_INDEXER_HOST", mock_server.host()) + .env("WAZUH_INDEXER_PORT", mock_server.port().to_string()) + .env("WAZUH_INDEXER_USER", "admin") + .env("WAZUH_INDEXER_PASS", "admin") .env("VERIFY_SSL", "false") .env("WAZUH_TEST_PROTOCOL", "http") .env("RUST_LOG", "warn") // Reduce noise in tests