summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2021-01-04 11:18:06 +0100
committerOskar Nyberg <oskar@mullvad.net>2021-01-05 17:32:02 +0100
commit579edf2849156c82346f55100073991150f8edb0 (patch)
treee4f7f13e757094d78d8ac26b925f13d32cfb7881
parent0ec3be2109055ce99001739c0c2ea9fbd20c8e51 (diff)
downloadmullvadvpn-579edf2849156c82346f55100073991150f8edb0.tar.xz
mullvadvpn-579edf2849156c82346f55100073991150f8edb0.zip
Add getter for redacted OS version and use it in version check header
-rw-r--r--mullvad-daemon/src/version_check.rs2
-rw-r--r--mullvad-platform-metadata/src/lib.rs65
2 files changed, 48 insertions, 19 deletions
diff --git a/mullvad-daemon/src/version_check.rs b/mullvad-daemon/src/version_check.rs
index a3733daa19..8f52f5694a 100644
--- a/mullvad-daemon/src/version_check.rs
+++ b/mullvad-daemon/src/version_check.rs
@@ -117,7 +117,7 @@ impl VersionUpdater {
let version_proxy = AppVersionProxy::new(rpc_handle);
let cache_path = cache_dir.join(VERSION_INFO_FILENAME);
let (tx, rx) = mpsc::channel(1);
- let platform_version = mullvad_platform_metadata::version();
+ let platform_version = mullvad_platform_metadata::short_version();
(
Self {
diff --git a/mullvad-platform-metadata/src/lib.rs b/mullvad-platform-metadata/src/lib.rs
index bcdc640ee6..c52d76bb4b 100644
--- a/mullvad-platform-metadata/src/lib.rs
+++ b/mullvad-platform-metadata/src/lib.rs
@@ -18,6 +18,10 @@ mod imp {
format!("Linux {}", version)
}
+ pub fn short_version() -> String {
+ version()
+ }
+
fn read_os_release_file() -> Result<String, Option<String>> {
let mut os_release_info = rs_release::get_os_release().map_err(|_| None)?;
let os_name = os_release_info.remove("NAME");
@@ -69,6 +73,10 @@ mod imp {
)
}
+ pub fn short_version() -> String {
+ version()
+ }
+
pub fn extra_metadata() -> impl Iterator<Item = (String, String)> {
std::iter::empty()
}
@@ -76,30 +84,47 @@ mod imp {
#[cfg(windows)]
mod imp {
+ use std::collections::HashMap;
+
pub fn version() -> String {
- let system_info =
- super::command_stdout_lossy("systeminfo", &["/FO", "LIST"]).unwrap_or_else(String::new);
+ let system_info = system_info();
+ let os_name = system_info.get("OS Name");
+ let os_version = system_info.get("OS Version");
+ let version = os_name.map(parse_version).unwrap_or(String::from("N/A"));
+ let full_version = os_version.map(parse_full_version).unwrap_or(String::from("N/A"));
+ format!("Windows {} ({})", version, full_version)
+ }
- let mut version = None;
- let mut full_version = None;
+ pub fn short_version() -> String {
+ let system_info = system_info();
+ let os_name = system_info.get("OS Name");
+ let version = os_name.map(parse_version).unwrap_or(String::from("N/A"));
+ format!("Windows {}", version)
+ }
- for info_line in system_info.lines() {
- let mut info_parts = info_line.split(":");
+ fn system_info() -> HashMap<String, String> {
+ let system_info =
+ super::command_stdout_lossy("systeminfo", &["/FO", "LIST"]).unwrap_or_else(String::new);
- match info_parts.next() {
- Some("OS Name") => {
- version = info_parts
- .next()
- .map(|s| s.trim().trim_start_matches("Microsoft Windows "))
+ let mut info_map = HashMap::new();
+ system_info.lines().for_each(|line| {
+ let mut split = line.split(":");
+ if let Some(key) = split.next() {
+ if let Some(value) = split.next() {
+ info_map.insert(key.to_owned(), value.to_owned());
}
- Some("OS Version") => full_version = info_parts.next().map(str::trim),
- _ => {}
}
- }
+ });
- let version = version.unwrap_or("N/A");
- let full_version = full_version.unwrap_or("N/A");
- format!("Windows {} ({})", version, full_version)
+ info_map
+ }
+
+ fn parse_version(os_name: &String) -> String {
+ os_name.trim().trim_start_matches("Microsoft Windows ").to_owned()
+ }
+
+ fn parse_full_version(os_version: &String) -> String {
+ os_version.trim().to_owned()
}
pub fn extra_metadata() -> impl Iterator<Item = (String, String)> {
@@ -125,6 +150,10 @@ mod imp {
)
}
+ pub fn short_version() -> String {
+ version()
+ }
+
pub fn extra_metadata() -> HashMap<String, String> {
let mut metadata = HashMap::new();
metadata.insert(
@@ -148,4 +177,4 @@ fn command_stdout_lossy(cmd: &str, args: &[&str]) -> Option<String> {
.ok()
}
-pub use imp::{extra_metadata, version};
+pub use imp::{extra_metadata, short_version, version};