summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-04-03 12:44:33 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2025-04-03 12:44:33 +0200
commit261888bc17023095fea48aa27543748449864436 (patch)
tree9ea978db2abe8c55fc3f5201974f9f006eca6c1a
parentf2da8107901d1ffcd703901a4a5523ba7578c24f (diff)
parent0a59263d2cb00e79a206bf267c7c9c271e9fcf03 (diff)
downloadmullvadvpn-261888bc17023095fea48aa27543748449864436.tar.xz
mullvadvpn-261888bc17023095fea48aa27543748449864436.zip
Merge branch 'add-flavor-information-to-the-log-droid-1899'
-rw-r--r--Cargo.lock5
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt1
-rw-r--r--mullvad-jni/Cargo.toml1
-rw-r--r--mullvad-jni/src/classes.rs1
-rw-r--r--mullvad-jni/src/lib.rs4
-rw-r--r--talpid-core/Cargo.toml2
-rw-r--r--talpid-platform-metadata/src/android.rs20
-rw-r--r--talpid-platform-metadata/src/lib.rs2
9 files changed, 31 insertions, 7 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 43d8a8624f..ba0020c920 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2198,9 +2198,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
[[package]]
name = "jnix"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "542b2072131a62ec940ee161ff0a01e7a1c2a129796b30143efc952cb6e0f28f"
+checksum = "63c460f1b7afbfcb0810208d3b0efc6ac1d7574f5e379fa2c19fb957bb57678a"
dependencies = [
"jni",
"jnix-macros",
@@ -2783,6 +2783,7 @@ dependencies = [
"mullvad-types",
"nix 0.23.2",
"rand 0.8.5",
+ "talpid-platform-metadata",
"talpid-tunnel",
"talpid-types",
"thiserror 2.0.9",
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
index d95892305b..f08b3fd4d6 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt
@@ -7,12 +7,14 @@ object MullvadDaemon {
System.loadLibrary("mullvad_jni")
}
+ @Suppress("LongParameterList")
external fun initialize(
vpnService: MullvadVpnService,
rpcSocketPath: String,
filesDirectory: String,
cacheDirectory: String,
apiEndpointOverride: ApiEndpointOverride?,
+ extraMetadata: Map<String, String>,
)
external fun shutdown()
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 3c26ad89de..44e256cdb5 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -170,6 +170,7 @@ class MullvadVpnService : TalpidVpnService() {
filesDirectory = filesDir.absolutePath,
cacheDirectory = cacheDir.absolutePath,
apiEndpointOverride = apiEndpointOverride,
+ extraMetadata = mapOf("flavor" to BuildConfig.FLAVOR),
)
Logger.i("MullvadVpnService: Daemon initialized")
}
diff --git a/mullvad-jni/Cargo.toml b/mullvad-jni/Cargo.toml
index 65e47b26d9..3919719a82 100644
--- a/mullvad-jni/Cargo.toml
+++ b/mullvad-jni/Cargo.toml
@@ -35,3 +35,4 @@ mullvad-problem-report = { path = "../mullvad-problem-report" }
mullvad-types = { path = "../mullvad-types" }
talpid-tunnel = { path = "../talpid-tunnel" }
talpid-types = { path = "../talpid-types" }
+talpid-platform-metadata = { path = "../talpid-platform-metadata" }
diff --git a/mullvad-jni/src/classes.rs b/mullvad-jni/src/classes.rs
index 780fcc9724..53af058a86 100644
--- a/mullvad-jni/src/classes.rs
+++ b/mullvad-jni/src/classes.rs
@@ -3,6 +3,7 @@ pub const CLASSES: &[&str] = &[
"java/net/InetAddress",
"java/net/InetSocketAddress",
"java/util/ArrayList",
+ "java/util/HashMap",
"net/mullvad/mullvadvpn/service/MullvadDaemon",
"net/mullvad/mullvadvpn/service/MullvadVpnService",
"net/mullvad/talpid/model/InetNetwork",
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index a82acd3628..389323ce38 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -16,6 +16,7 @@ use mullvad_daemon::{
cleanup_old_rpc_socket, exception_logging, logging, runtime::new_multi_thread, version, Daemon,
DaemonCommandChannel, DaemonCommandSender, DaemonConfig,
};
+use std::collections::HashMap;
use std::{
ffi::CString,
io,
@@ -84,6 +85,7 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_initial
files_directory: JObject<'_>,
cache_directory: JObject<'_>,
api_endpoint: JObject<'_>,
+ extra_metadata: JObject<'_>,
) {
let mut ctx = DAEMON_CONTEXT.lock().unwrap();
assert!(ctx.is_none(), "multiple calls to MullvadDaemon.initialize");
@@ -99,6 +101,8 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_initial
LOAD_CLASSES.call_once(|| env.preload_classes(classes::CLASSES.iter().cloned()));
log::info!("Done loading classes");
+ talpid_platform_metadata::set_extra_metadata(HashMap::from_java(&env, extra_metadata));
+
let rpc_socket = pathbuf_from_java(&env, rpc_socket_path);
let cache_dir = pathbuf_from_java(&env, cache_directory);
diff --git a/talpid-core/Cargo.toml b/talpid-core/Cargo.toml
index 4daf4814ca..f22cdc50fa 100644
--- a/talpid-core/Cargo.toml
+++ b/talpid-core/Cargo.toml
@@ -104,4 +104,4 @@ tonic-build = { workspace = true, default-features = false, features = ["transpo
[dev-dependencies]
-tokio = { workspace = true, features = [ "io-util", "test-util", "time" ] }
+tokio = { workspace = true, features = ["io-util", "test-util", "time"] }
diff --git a/talpid-platform-metadata/src/android.rs b/talpid-platform-metadata/src/android.rs
index 94a8e4e979..1709223aa4 100644
--- a/talpid-platform-metadata/src/android.rs
+++ b/talpid-platform-metadata/src/android.rs
@@ -1,4 +1,5 @@
-use std::collections::HashMap;
+use std::collections::{BTreeMap, HashMap};
+use std::sync::{LazyLock, RwLock};
mod command;
use command::command_stdout_lossy;
@@ -27,15 +28,26 @@ fn os_version() -> String {
get_prop("ro.build.version.release").unwrap_or_else(|| "N/A".to_owned())
}
-pub fn extra_metadata() -> HashMap<String, String> {
- let mut metadata = HashMap::new();
+pub fn extra_metadata() -> impl Iterator<Item = (String, String)> {
+ let mut metadata = BTreeMap::new();
metadata.insert(
"abi".to_owned(),
get_prop("ro.product.cpu.abilist").unwrap_or_else(|| "N/A".to_owned()),
);
- metadata
+ let extra = EXTRA_METADATA.read().unwrap();
+ for (k, v) in extra.iter() {
+ metadata.insert(k.clone(), v.clone());
+ }
+ metadata.into_iter()
}
fn get_prop(property: &str) -> Option<String> {
command_stdout_lossy("getprop", &[property]).ok()
}
+
+pub fn set_extra_metadata(extra: HashMap<String, String>) {
+ *EXTRA_METADATA.write().unwrap() = extra;
+}
+
+static EXTRA_METADATA: LazyLock<RwLock<HashMap<String, String>>> =
+ LazyLock::new(|| RwLock::new(HashMap::new()));
diff --git a/talpid-platform-metadata/src/lib.rs b/talpid-platform-metadata/src/lib.rs
index 98640fabef..913d98300c 100644
--- a/talpid-platform-metadata/src/lib.rs
+++ b/talpid-platform-metadata/src/lib.rs
@@ -15,6 +15,8 @@ mod imp;
#[path = "android.rs"]
mod imp;
+#[cfg(target_os = "android")]
+pub use self::imp::set_extra_metadata;
#[cfg(target_os = "macos")]
pub use self::imp::MacosVersion;
#[cfg(windows)]