diff options
| author | David Lönnhager <david.l@mullvad.net> | 2024-10-23 18:27:41 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-10-29 16:33:14 +0100 |
| commit | 0b277b75a46d5601647da422d8f0d92f8db11ecc (patch) | |
| tree | 9bbca96013f8dc3eb9300ce23a7171917cc25449 | |
| parent | f0d3b9c97f1f6e784b1011db7b407d2633596626 (diff) | |
| download | mullvadvpn-0b277b75a46d5601647da422d8f0d92f8db11ecc.tar.xz mullvadvpn-0b277b75a46d5601647da422d8f0d92f8db11ecc.zip | |
Add RPC for checking if TCC approval is needed
| -rw-r--r-- | mullvad-daemon/src/management_interface.rs | 12 | ||||
| -rw-r--r-- | mullvad-management-interface/proto/management_interface.proto | 3 |
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) {} |
