From 8d17ca4e48a1fe9078666028629f865789f4931c Mon Sep 17 00:00:00 2001 From: Douile Date: Wed, 22 Nov 2023 02:23:32 +0000 Subject: [PATCH] cli: Add option to create a packet capture --- crates/cli/Cargo.toml | 3 ++- crates/cli/src/main.rs | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index d74c1d0..dd4ed97 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -11,8 +11,9 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -default = ["json"] +default = ["json", "packet_capture"] json = ["dep:serde", "dep:serde_json", "gamedig/serde"] +packet_capture = ["gamedig/packet_capture"] [dependencies] clap = { version = "4.1.11", features = ["derive"] } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 526f227..6a6c6d5 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -38,6 +38,10 @@ struct Cli { #[arg(short, long, default_value = "generic")] output_mode: OutputMode, + #[cfg(feature = "packet_capture")] + #[arg(short, long)] + capture: Option, + /// Optional timeout settings for the server query. #[command(flatten, next_help_heading = "Timeouts")] timeout_settings: Option, @@ -177,6 +181,11 @@ fn main() -> Result<()> { // Resolve the IP address let ip = resolve_ip_or_domain(&args.ip, &mut extra_options)?; + #[cfg(feature = "packet_capture")] + unsafe { + gamedig::capture::simple_setup_capture(args.capture.clone()); + } + // Query the server using game definition, parsed IP, and user command line // flags. let result = query_with_timeout_and_extra_settings(game, &ip, args.port, args.timeout_settings, extra_options)?;