From 4cd357777fbc55ccccc81c71bee63c7fe83cc3f1 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 31 Jan 2026 14:39:24 -0600 Subject: [PATCH] Add TRAP_ENABLED env var to conditionally enable trap listener --- docker-compose.example.yml | 6 +++++- src/main.rs | 34 ++++++++++++++++++++-------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/docker-compose.example.yml b/docker-compose.example.yml index d9fc79b..21fe6b4 100644 --- a/docker-compose.example.yml +++ b/docker-compose.example.yml @@ -18,7 +18,11 @@ services: # Default: info - LOG_LEVEL=info - # Optional: SNMP trap listener port + # Optional: Enable SNMP trap listener + # Default: false + - TRAP_ENABLED=true + + # Optional: SNMP trap listener port (only used if TRAP_ENABLED=true) # Default: 162 - TRAP_PORT=162 diff --git a/src/main.rs b/src/main.rs index 4c0ceff..fc827b9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -183,6 +183,10 @@ struct Args { /// UDP port for SNMP trap listener #[arg(long, env = "TRAP_PORT", default_value_t = snmp::DEFAULT_TRAP_PORT)] trap_port: u16, + + /// Enable SNMP trap listener + #[arg(long, env = "TRAP_ENABLED", default_value_t = false)] + trap_enabled: bool, } #[tokio::main] @@ -197,22 +201,24 @@ async fn main() { // Check for newer Docker image version version::check_for_updates(); - // Start SNMP trap listener - let trap_port = args.trap_port; - tokio::spawn(async move { - let (trap_tx, mut trap_rx) = tokio::sync::mpsc::channel::(100); - let trap_listener = snmp::TrapListener::new(trap_port); - - // Spawn the listener + // Start SNMP trap listener if enabled + if args.trap_enabled { + let trap_port = args.trap_port; tokio::spawn(async move { - trap_listener.run(trap_tx).await; - }); + let (trap_tx, mut trap_rx) = tokio::sync::mpsc::channel::(100); + let trap_listener = snmp::TrapListener::new(trap_port); - // Log received traps - while let Some(trap) = trap_rx.recv().await { - log_info!("{}", trap); - } - }); + // Spawn the listener + tokio::spawn(async move { + trap_listener.run(trap_tx).await; + }); + + // Log received traps + while let Some(trap) = trap_rx.recv().await { + log_info!("{}", trap); + } + }); + } // Convert HTTP(S) URL to WebSocket URL let ws_url = convert_to_websocket_url(&args.api_url);