diff --git a/Cargo.toml b/Cargo.toml index d7abe8c..6c59858 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "prometheus_wireguard_exporter" -version = "3.2.3" +version = "3.2.4" authors = ["Francesco Cogno "] description = "Prometheus WireGuard Exporter" edition = "2018" @@ -25,5 +25,5 @@ failure = "0.1.5" hyper = { version = "0.13.0-alpha.4" , features = ["unstable-stream"] } http = "0.1.17" tokio = "0.2.0-alpha.6" -prometheus_exporter_base = { version = "0.30.1" } +prometheus_exporter_base = { version = "0.30.2" } regex = "1.3.1" diff --git a/README.md b/README.md index 5b91db6..4ddf7f6 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ [![Crate](https://img.shields.io/crates/v/prometheus_wireguard_exporter.svg)](https://crates.io/crates/prometheus_wireguard_exporter) [![cratedown](https://img.shields.io/crates/d/prometheus_wireguard_exporter.svg)](https://crates.io/crates/prometheus_wireguard_exporter) [![cratelastdown](https://img.shields.io/crates/dv/prometheus_wireguard_exporter.svg)](https://crates.io/crates/prometheus_wireguard_exporter) -[![release](https://img.shields.io/github/release/MindFlavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.3) -[![tag](https://img.shields.io/github/tag/mindflavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.3) +[![release](https://img.shields.io/github/release/MindFlavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.4) +[![tag](https://img.shields.io/github/tag/mindflavor/prometheus_wireguard_exporter.svg)](https://github.com/MindFlavor/prometheus_wireguard_exporter/tree/3.2.4) [![Build Status](https://travis-ci.org/MindFlavor/prometheus_wireguard_exporter.svg?branch=master)](https://travis-ci.org/MindFlavor/prometheus_wireguard_exporter) -[![commitssince](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.3.svg)](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.3.svg) +[![commitssince](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.4.svg)](https://img.shields.io/github/commits-since/mindflavor/prometheus_wireguard_exporter/3.2.4.svg) ## Intro diff --git a/src/main.rs b/src/main.rs index a88e969..5b60e04 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,13 +23,13 @@ use std::sync::Arc; fn wg_with_text( wg_config_str: &str, - wg_output_str: &str, + wg_output_stdout_str: &str, options: Arc, ) -> Result { let pehm = peer_entry_hashmap_try_from(wg_config_str)?; trace!("pehm == {:?}", pehm); - let wg = WireGuard::try_from(wg_output_str)?; + let wg = WireGuard::try_from(wg_output_stdout_str)?; Ok(wg.render_with_names( Some(&pehm), options.separate_allowed_ips, @@ -61,30 +61,40 @@ async fn perform_request( .arg(&interface_str) .arg("dump") .output()?; - let output_str = String::from_utf8(output.stdout)?; - trace!("wg show output == {}", output_str); + let output_stdout_str = String::from_utf8(output.stdout)?; + trace!( + "wg show {} dump stdout == {}", + interface_str, + output_stdout_str + ); + let output_stderr_str = String::from_utf8(output.stderr)?; + trace!( + "wg show {} dump stderr == {}", + interface_str, + output_stderr_str + ); // the output of wg show is different if we use all or we specify an interface. // In the first case the first column will be the interface name. In the second case // the interface name will be omitted. We need to compensate for the skew somehow (one // column less in the second case). We solve this prepending the interface name in every // line so the output of the second case will be equal to the first case. - let output_str = if interface_str != "all" { + let output_stdout_str = if interface_str != "all" { debug!("injecting {} to the wg show output", interface_str); let mut result = String::new(); - for s in output_str.lines() { + for s in output_stdout_str.lines() { result.push_str(&format!("{}\t{}\n", interface_str, s)); } result } else { - output_str + output_stdout_str }; if let Some(extract_names_config_file) = &options.extract_names_config_file { let wg_config_string = ::std::fs::read_to_string(extract_names_config_file)?; - wg_with_text(&wg_config_string as &str, &output_str, options) + wg_with_text(&wg_config_string as &str, &output_stdout_str, options) } else { - let wg = WireGuard::try_from(&output_str as &str)?; + let wg = WireGuard::try_from(&output_stdout_str as &str)?; Ok(wg.render_with_names( None, options.separate_allowed_ips,