diff --git a/Cargo.toml b/Cargo.toml index aeeb8fc..929cdcf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,15 +10,23 @@ repository = "https://github.com/aramperes/onetun" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +# Required dependencies (bin and lib) boringtun = { version = "0.4.0", default-features = false } -clap = { version = "2.33", default-features = false, features = ["suggestions"] } log = "0.4" -pretty_env_logger = "0.4" anyhow = "1" -smoltcp = { version = "0.8.0", default-features = false, features = ["std", "log", "medium-ip", "proto-ipv4", "proto-ipv6", "socket-udp", "socket-tcp"] } tokio = { version = "1", features = ["full"] } futures = "0.3.17" rand = "0.8.4" nom = "7" async-trait = "0.1.51" priority-queue = "1.2.0" +smoltcp = { version = "0.8.0", default-features = false, features = ["std", "log", "medium-ip", "proto-ipv4", "proto-ipv6", "socket-udp", "socket-tcp"] } + +# bin-only dependencies +clap = { version = "2.33", default-features = false, features = ["suggestions"], optional = true } +pretty_env_logger = { version = "0.4", optional = true } + +[features] +pcap = [] +default = [ "bin" ] +bin = [ "clap", "pretty_env_logger", "pcap" ] diff --git a/src/config.rs b/src/config.rs index ccae551..e055466 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,7 +7,6 @@ use std::sync::Arc; use anyhow::Context; use boringtun::crypto::{X25519PublicKey, X25519SecretKey}; -use clap::{App, Arg}; const DEFAULT_PORT_FORWARD_SOURCE: &str = "127.0.0.1"; @@ -29,7 +28,10 @@ pub struct Config { } impl Config { + #[cfg(feature = "bin")] pub fn from_args() -> anyhow::Result { + use clap::{App, Arg}; + let mut warnings = vec![]; let matches = App::new("onetun") diff --git a/src/main.rs b/src/main.rs index 879b45e..c9ad9ce 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,12 +17,14 @@ use crate::wg::WireGuardTunnel; pub mod config; pub mod events; +#[cfg(feature = "pcap")] pub mod pcap; pub mod tunnel; pub mod virtual_device; pub mod virtual_iface; pub mod wg; +#[cfg(feature = "bin")] #[tokio::main] async fn main() -> anyhow::Result<()> { let config = Config::from_args().with_context(|| "Failed to read config")?; @@ -126,6 +128,7 @@ async fn main() -> anyhow::Result<()> { futures::future::pending().await } +#[cfg(feature = "bin")] fn init_logger(config: &Config) -> anyhow::Result<()> { let mut builder = pretty_env_logger::formatted_timed_builder(); builder.parse_filters(&config.log);