summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2024-10-23 18:27:41 +0200
committerDavid Lönnhager <david.l@mullvad.net>2024-10-29 16:33:14 +0100
commit0b277b75a46d5601647da422d8f0d92f8db11ecc (patch)
tree9bbca96013f8dc3eb9300ce23a7171917cc25449
parentf0d3b9c97f1f6e784b1011db7b407d2633596626 (diff)
downloadmullvadvpn-0b277b75a46d5601647da422d8f0d92f8db11ecc.tar.xz
mullvadvpn-0b277b75a46d5601647da422d8f0d92f8db11ecc.zip
Add RPC for checking if TCC approval is needed
-rw-r--r--mullvad-daemon/src/management_interface.rs12
-rw-r--r--mullvad-management-interface/proto/management_interface.proto3
2 files changed, 15 insertions, 0 deletions
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs
index 6a11357d6b..817dc85200 100644
--- a/mullvad-daemon/src/management_interface.rs
+++ b/mullvad-daemon/src/management_interface.rs
@@ -979,6 +979,18 @@ impl ManagementService for ManagementServiceImpl {
}))
}
+ #[cfg(target_os = "macos")]
+ async fn need_full_disk_permissions(&self, _: Request<()>) -> ServiceResult<bool> {
+ log::debug!("need_full_disk_permissions");
+ let has_access = talpid_core::split_tunnel::has_full_disk_access().await;
+ Ok(Response::new(!has_access))
+ }
+
+ #[cfg(not(target_os = "macos"))]
+ async fn need_full_disk_permissions(&self, _: Request<()>) -> ServiceResult<bool> {
+ Ok(Response::new(false))
+ }
+
#[cfg(windows)]
async fn check_volumes(&self, _: Request<()>) -> ServiceResult<()> {
log::debug!("check_volumes");
diff --git a/mullvad-management-interface/proto/management_interface.proto b/mullvad-management-interface/proto/management_interface.proto
index 62740438fb..c71c35b17a 100644
--- a/mullvad-management-interface/proto/management_interface.proto
+++ b/mullvad-management-interface/proto/management_interface.proto
@@ -112,6 +112,9 @@ service ManagementService {
rpc InitPlayPurchase(google.protobuf.Empty) returns (PlayPurchasePaymentToken) {}
rpc VerifyPlayPurchase(PlayPurchase) returns (google.protobuf.Empty) {}
+ // Check whether the app needs TCC approval for split tunneling (macOS)
+ rpc NeedFullDiskPermissions(google.protobuf.Empty) returns (google.protobuf.BoolValue) {}
+
// Notify the split tunnel monitor that a volume was mounted or dismounted
// (Windows).
rpc CheckVolumes(google.protobuf.Empty) returns (google.protobuf.Empty) {}