summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-20 15:51:21 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-24 11:35:21 +0000
commit9d05edfe05d330e4fc8d2967fe3e31a0d3307991 (patch)
treef61dfa0e3c87d87f8f8e85f7af909877df0a669d
parent3c6e1e4a68e67587e7620a8e90770d94591f2d29 (diff)
downloadmullvadvpn-9d05edfe05d330e4fc8d2967fe3e31a0d3307991.tar.xz
mullvadvpn-9d05edfe05d330e4fc8d2967fe3e31a0d3307991.zip
Implement `MullvadProblemReport::collectReport`
-rw-r--r--Cargo.lock1
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt6
-rw-r--r--mullvad-jni/Cargo.toml1
-rw-r--r--mullvad-jni/src/lib.rs29
4 files changed, 36 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock
index d467747533..5aab93823a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1174,6 +1174,7 @@ dependencies = [
"log-panics 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"mullvad-daemon 2019.5.0",
"mullvad-paths 0.1.0",
+ "mullvad-problem-report 2019.5.0",
"mullvad-types 0.1.0",
"parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"talpid-core 0.1.0",
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
index 56334eca42..502a57c93c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
@@ -5,4 +5,10 @@ const val PROBLEM_REPORT_PATH = "/data/data/net.mullvad.mullvadvpn/problem_repor
class MullvadProblemReport {
var userEmail = ""
var userMessage = ""
+
+ init {
+ System.loadLibrary("mullvad_jni")
+ }
+
+ private external fun collectReport(reportPath: String): Boolean
}
diff --git a/mullvad-jni/Cargo.toml b/mullvad-jni/Cargo.toml
index 5792fe27d1..21b1d15ba3 100644
--- a/mullvad-jni/Cargo.toml
+++ b/mullvad-jni/Cargo.toml
@@ -22,6 +22,7 @@ parking_lot = "0.8"
mullvad-daemon = { path = "../mullvad-daemon" }
mullvad-paths = { path = "../mullvad-paths" }
+mullvad-problem-report = { path = "../mullvad-problem-report" }
mullvad-types = { path = "../mullvad-types" }
talpid-core = { path = "../talpid-core" }
talpid-types = { path = "../talpid-types" }
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 276d49af4d..67a0fd54e2 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -19,7 +19,12 @@ use jni::{
use lazy_static::lazy_static;
use mullvad_daemon::{logging, version, Daemon, DaemonCommandSender};
use parking_lot::RwLock;
-use std::{collections::HashMap, path::PathBuf, sync::mpsc, thread};
+use std::{
+ collections::HashMap,
+ path::{Path, PathBuf},
+ sync::mpsc,
+ thread,
+};
use talpid_types::ErrorExt;
const LOG_FILENAME: &str = "daemon.log";
@@ -366,3 +371,25 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_updateRelaySett
);
}
}
+
+#[no_mangle]
+#[allow(non_snake_case)]
+pub extern "system" fn Java_net_mullvad_mullvadvpn_dataproxy_MullvadProblemReport_collectReport(
+ env: JNIEnv,
+ _: JObject,
+ outputPath: JString,
+) -> jboolean {
+ let output_path_string = String::from_java(&env, outputPath);
+ let output_path = Path::new(&output_path_string);
+
+ match mullvad_problem_report::collect_report(&[], output_path, Vec::new()) {
+ Ok(()) => JNI_TRUE,
+ Err(error) => {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg("Failed to collect problem report")
+ );
+ JNI_FALSE
+ }
+ }
+}