Add TRAP_ENABLED env var to conditionally enable trap listener

This commit is contained in:
Graham McIntire 2026-01-31 14:39:24 -06:00
parent 89adc3a6b3
commit 4cd357777f
No known key found for this signature in database
2 changed files with 25 additions and 15 deletions

View file

@ -18,7 +18,11 @@ services:
# Default: info # Default: info
- LOG_LEVEL=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 # Default: 162
- TRAP_PORT=162 - TRAP_PORT=162

View file

@ -183,6 +183,10 @@ struct Args {
/// UDP port for SNMP trap listener /// UDP port for SNMP trap listener
#[arg(long, env = "TRAP_PORT", default_value_t = snmp::DEFAULT_TRAP_PORT)] #[arg(long, env = "TRAP_PORT", default_value_t = snmp::DEFAULT_TRAP_PORT)]
trap_port: u16, trap_port: u16,
/// Enable SNMP trap listener
#[arg(long, env = "TRAP_ENABLED", default_value_t = false)]
trap_enabled: bool,
} }
#[tokio::main] #[tokio::main]
@ -197,22 +201,24 @@ async fn main() {
// Check for newer Docker image version // Check for newer Docker image version
version::check_for_updates(); version::check_for_updates();
// Start SNMP trap listener // Start SNMP trap listener if enabled
let trap_port = args.trap_port; if args.trap_enabled {
tokio::spawn(async move { let trap_port = args.trap_port;
let (trap_tx, mut trap_rx) = tokio::sync::mpsc::channel::<snmp::SnmpTrap>(100);
let trap_listener = snmp::TrapListener::new(trap_port);
// Spawn the listener
tokio::spawn(async move { tokio::spawn(async move {
trap_listener.run(trap_tx).await; let (trap_tx, mut trap_rx) = tokio::sync::mpsc::channel::<snmp::SnmpTrap>(100);
}); let trap_listener = snmp::TrapListener::new(trap_port);
// Log received traps // Spawn the listener
while let Some(trap) = trap_rx.recv().await { tokio::spawn(async move {
log_info!("{}", trap); 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 // Convert HTTP(S) URL to WebSocket URL
let ws_url = convert_to_websocket_url(&args.api_url); let ws_url = convert_to_websocket_url(&args.api_url);