diff options
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 9 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 28 |
2 files changed, 37 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt index 593139a8a9..fbede31252 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -9,6 +9,7 @@ import net.mullvad.mullvadvpn.model.RelayList import net.mullvad.mullvadvpn.model.RelaySettingsUpdate import net.mullvad.mullvadvpn.model.Settings import net.mullvad.mullvadvpn.model.TunnelState +import net.mullvad.mullvadvpn.model.VoucherSubmission import net.mullvad.talpid.util.EventNotifier class MullvadDaemon(val vpnService: MullvadVpnService) { @@ -109,6 +110,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { shutdown(daemonInterfaceAddress) } + fun submitVoucher(voucher: String): VoucherSubmission? { + return submitVoucher(daemonInterfaceAddress, voucher) + } + fun updateRelaySettings(update: RelaySettingsUpdate) { updateRelaySettings(daemonInterfaceAddress, update) } @@ -147,6 +152,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { private external fun setAutoConnect(daemonInterfaceAddress: Long, alwaysOn: Boolean) private external fun setWireguardMtu(daemonInterfaceAddress: Long, wireguardMtu: Int?) private external fun shutdown(daemonInterfaceAddress: Long) + private external fun submitVoucher( + daemonInterfaceAddress: Long, + voucher: String + ): VoucherSubmission? private external fun updateRelaySettings( daemonInterfaceAddress: Long, update: RelaySettingsUpdate diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index c46c2ba99f..bedd1fa118 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -797,6 +797,34 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_shutdow #[no_mangle] #[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_submitVoucher<'env>( + env: JNIEnv<'env>, + _: JObject<'_>, + daemon_interface_address: jlong, + voucher: JString<'_>, +) -> JObject<'env> { + let env = JnixEnv::from(env); + + if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) { + let voucher = String::from_java(&env, voucher); + + match daemon_interface.submit_voucher(voucher) { + Ok(voucher_submission) => voucher_submission.into_java(&env).forget(), + Err(error) => { + log::error!( + "{}", + error.display_chain_with_msg("Failed to submit voucher") + ); + JObject::null() + } + } + } else { + JObject::null() + } +} + +#[no_mangle] +#[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_updateRelaySettings( env: JNIEnv<'_>, _: JObject<'_>, |
