diff --git a/Cargo.toml b/Cargo.toml index 0d849ff..a384408 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,8 +20,8 @@ base64 = "0.13.0" consulrs_derive = { version = "0.1.0", path = "consulrs_derive" } derive_builder = "0.10.2" http = "0.2.5" -reqwest = { version = "0.11.4", default-features = false, features = ["rustls-tls"] } -rustify = "0.5.2" +reqwest = { version = "0.11.4", default-features = false } +rustify = { version = "0.5.2", default-features = false } rustify_derive = "0.5.2" serde = "1.0.130" serde_json = "1.0.66" @@ -38,3 +38,7 @@ test-log = { version = "0.2.8", features = ["trace"] } tokio = { version = "1.12.0", features = ["full"] } tokio-test = "0.4.2" tracing-subscriber = {version = "0.2.17", default-features = false, features = ["env-filter", "fmt"]} + +[features] +default = ["reqwest/default-tls", "rustify/default"] +rustls-tls = ["reqwest/rustls-tls", "rustify/rustls-tls"] diff --git a/src/client.rs b/src/client.rs index 1dc6053..7b8813f 100644 --- a/src/client.rs +++ b/src/client.rs @@ -80,7 +80,8 @@ impl ConsulClient { http_client = http_client.add_root_certificate(cert); } - // Add client certificate + // Add support for client certificates if rustls-tls is enabled. + #[cfg(feature = "rustls-tls")] if let (Some(cert), Some(key)) = (&settings.client_cert, &settings.client_key) { let cert_content = std::fs::read_to_string(&cert).map_err(|e| ClientError::FileReadError { @@ -122,8 +123,8 @@ impl ConsulClient { /// /// * `address`: CONSUL_HTTP_ADDR /// * `ca_certs`: CONSUL_CACERT / CONSUL_CAPATH -/// * `client_cert`: CONSUL_CLIENT_CERT -/// * `client_key`: CONSUL_CLIENT_KEY +/// * `client_cert`: CONSUL_CLIENT_CERT, requires `rustls-tls` feature. +/// * `client_key`: CONSUL_CLIENT_KEY, requires `rustls-tls` feature. /// * `token`: CONSUL_HTTP_TOKEN /// * `verify`: CONSUL_HTTP_SSL_VERIFY /// @@ -136,8 +137,10 @@ pub struct ConsulClientSettings { pub address: String, #[builder(default = "self.default_ca_certs()")] pub ca_certs: Vec, + #[cfg(feature = "rustls-tls")] #[builder(default = "self.default_client_cert()")] pub client_cert: Option, + #[cfg(feature = "rustls-tls")] #[builder(default = "self.default_client_key()")] pub client_key: Option, #[builder(setter(into), default = "self.default_token()")] @@ -182,6 +185,7 @@ impl ConsulClientSettingsBuilder { paths } + #[cfg(feature = "rustls-tls")] fn default_client_cert(&self) -> Option { match env::var("CONSUL_CLIENT_CERT") { Ok(s) => { @@ -195,6 +199,7 @@ impl ConsulClientSettingsBuilder { } } + #[cfg(feature = "rustls-tls")] fn default_client_key(&self) -> Option { match env::var("CONSUL_CLIENT_KEY") { Ok(s) => {