fixed minor issues with passing configuration as environment variables.

This commit is contained in:
Gianluca Brigandi 2025-06-18 08:16:23 -07:00
parent d86a4e1136
commit 2fd14a0063
3 changed files with 47 additions and 44 deletions

View File

@ -90,44 +90,43 @@ impl WazuhToolsServer {
fn new() -> Result<Self, anyhow::Error> { fn new() -> Result<Self, anyhow::Error> {
dotenv().ok(); dotenv().ok();
let wazuh_host = env::var("WAZUH_HOST").unwrap_or_else(|_| "localhost".to_string()); let api_host = env::var("WAZUH_API_HOST").unwrap_or_else(|_| "localhost".to_string());
let wazuh_api_port = env::var("WAZUH_API_PORT") let api_port: u16 = env::var("WAZUH_API_PORT")
.unwrap_or_else(|_| "55000".to_string()) .unwrap_or_else(|_| "55000".to_string())
.parse::<u16>() .parse()
.map_err(|e| anyhow::anyhow!("Invalid WAZUH_API_PORT: {}", e))?; .unwrap_or(55000);
let wazuh_indexer_port = env::var("WAZUH_INDEXER_PORT") let api_username = env::var("WAZUH_API_USERNAME").unwrap_or_else(|_| "wazuh".to_string());
.unwrap_or_else(|_| "9200".to_string()) let api_password = env::var("WAZUH_API_PASSWORD").unwrap_or_else(|_| "wazuh".to_string());
.parse::<u16>()
.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::<u16>().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 protocol = env::var("WAZUH_TEST_PROTOCOL").unwrap_or_else(|_| "https".to_string()); let indexer_host = env::var("WAZUH_INDEXER_HOST").unwrap_or_else(|_| "localhost".to_string());
tracing::debug!(?protocol, "Using Wazuh protocol for client from WAZUH_TEST_PROTOCOL or default"); 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( let verify_ssl = env::var("WAZUH_VERIFY_SSL")
wazuh_host.clone(), .unwrap_or_else(|_| "false".to_string())
wazuh_api_port, .parse()
wazuh_user.clone(), .unwrap_or(false);
wazuh_pass.clone(),
wazuh_host, let test_protocol = env::var("WAZUH_TEST_PROTOCOL")
wazuh_port, .ok().or_else(|| Some("https".to_string()));
wazuh_user,
wazuh_pass, let wazuh_factory = WazuhClientFactory::new(
verify_ssl, api_host,
Some(protocol), 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_indexer_client = wazuh_factory.create_indexer_client();
let wazuh_rules_client = wazuh_factory.create_rules_client(); let wazuh_rules_client = wazuh_factory.create_rules_client();

View File

@ -19,10 +19,14 @@ impl McpStdioClient {
fn start() -> Result<Self, Box<dyn std::error::Error>> { fn start() -> Result<Self, Box<dyn std::error::Error>> {
let mut child = Command::new("cargo") let mut child = Command::new("cargo")
.args(["run", "--bin", "mcp-server-wazuh"]) .args(["run", "--bin", "mcp-server-wazuh"])
.env("WAZUH_HOST", "nonexistent.example.com") // Use non-existent host .env("WAZUH_API_HOST", "nonexistent.example.com") // Use non-existent host
.env("WAZUH_PORT", "9999") .env("WAZUH_API_PORT", "9999")
.env("WAZUH_USER", "test") .env("WAZUH_API_USER", "test")
.env("WAZUH_PASS", "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("VERIFY_SSL", "false")
.env("RUST_LOG", "error") // Minimize logging noise .env("RUST_LOG", "error") // Minimize logging noise
.stdin(Stdio::piped()) .stdin(Stdio::piped())

View File

@ -26,10 +26,10 @@ impl McpServerProcess {
fn start_with_mock_wazuh(mock_server: &MockWazuhServer) -> Result<Self, Box<dyn std::error::Error>> { fn start_with_mock_wazuh(mock_server: &MockWazuhServer) -> Result<Self, Box<dyn std::error::Error>> {
let mut child = Command::new("cargo") let mut child = Command::new("cargo")
.args(["run", "--bin", "mcp-server-wazuh"]) .args(["run", "--bin", "mcp-server-wazuh"])
.env("WAZUH_HOST", mock_server.host()) .env("WAZUH_INDEXER_HOST", mock_server.host())
.env("WAZUH_PORT", mock_server.port().to_string()) .env("WAZUH_INDEXER_PORT", mock_server.port().to_string())
.env("WAZUH_USER", "admin") .env("WAZUH_INDEXER_USER", "admin")
.env("WAZUH_PASS", "admin") .env("WAZUH_INDEXER_PASS", "admin")
.env("VERIFY_SSL", "false") .env("VERIFY_SSL", "false")
.env("WAZUH_TEST_PROTOCOL", "http") .env("WAZUH_TEST_PROTOCOL", "http")
.env("RUST_LOG", "warn") // Reduce noise in tests .env("RUST_LOG", "warn") // Reduce noise in tests