summaryrefslogtreecommitdiffhomepage
path: root/android/lib
diff options
context:
space:
mode:
Diffstat (limited to 'android/lib')
-rw-r--r--android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Event.kt5
-rw-r--r--android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Request.kt9
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayOverride.kt12
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt3
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SettingsPatchError.kt24
5 files changed, 52 insertions, 1 deletions
diff --git a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Event.kt b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Event.kt
index cce2ab1f87..36ea17036e 100644
--- a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Event.kt
+++ b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Event.kt
@@ -14,6 +14,7 @@ import net.mullvad.mullvadvpn.model.PlayPurchaseVerifyResult
import net.mullvad.mullvadvpn.model.RelayList
import net.mullvad.mullvadvpn.model.RemoveDeviceResult
import net.mullvad.mullvadvpn.model.Settings
+import net.mullvad.mullvadvpn.model.SettingsPatchError
import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.model.UpdateCustomListResult
@@ -71,6 +72,10 @@ sealed class Event : Message.EventMessage() {
@Parcelize data class UpdateCustomListResultEvent(val result: UpdateCustomListResult) : Event()
+ @Parcelize data class ExportJsonSettingsResult(val json: String) : Event()
+
+ @Parcelize data class ApplyJsonSettingsResult(val error: SettingsPatchError?) : Event()
+
companion object {
private const val MESSAGE_KEY = "event"
diff --git a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Request.kt b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Request.kt
index fe9d3b46d9..4bcf871acc 100644
--- a/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Request.kt
+++ b/android/lib/ipc/src/main/kotlin/net/mullvad/mullvadvpn/lib/ipc/Request.kt
@@ -13,6 +13,7 @@ import net.mullvad.mullvadvpn.model.Ownership
import net.mullvad.mullvadvpn.model.PlayPurchase
import net.mullvad.mullvadvpn.model.Providers
import net.mullvad.mullvadvpn.model.QuantumResistantState
+import net.mullvad.mullvadvpn.model.RelayOverride
import net.mullvad.mullvadvpn.model.WireguardConstraints
// Requests that the service can handle
@@ -117,6 +118,14 @@ sealed class Request : Message.RequestMessage() {
@Parcelize data class UpdateCustomList(val customList: CustomList) : Request()
+ @Parcelize data object ClearAllRelayOverrides : Request()
+
+ @Parcelize data class ApplyJsonSettings(val json: String) : Request()
+
+ @Parcelize data object ExportJsonSettings : Request()
+
+ @Parcelize data class SetRelayOverride(val override: RelayOverride) : Request()
+
companion object {
private const val MESSAGE_KEY = "request"
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayOverride.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayOverride.kt
new file mode 100644
index 0000000000..f738218ee7
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/RelayOverride.kt
@@ -0,0 +1,12 @@
+package net.mullvad.mullvadvpn.model
+
+import android.os.Parcelable
+import java.net.InetAddress
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+data class RelayOverride(
+ val hostname: String,
+ val ipv4AddressIn: InetAddress?,
+ val ipv6AddressIn: InetAddress?
+) : Parcelable
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt
index 304edc404a..847b80cd70 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt
@@ -11,5 +11,6 @@ data class Settings(
val allowLan: Boolean,
val autoConnect: Boolean,
val tunnelOptions: TunnelOptions,
- val showBetaReleases: Boolean
+ val relayOverrides: ArrayList<RelayOverride>,
+ val showBetaReleases: Boolean,
) : Parcelable
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SettingsPatchError.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SettingsPatchError.kt
new file mode 100644
index 0000000000..5e3cb29911
--- /dev/null
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/model/SettingsPatchError.kt
@@ -0,0 +1,24 @@
+package net.mullvad.mullvadvpn.model
+
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+
+@Parcelize
+sealed class SettingsPatchError : Parcelable {
+ // E.g hostname is number instead of String
+ data class InvalidOrMissingValue(val value: String) : SettingsPatchError()
+
+ // E.g. Unexpected top-level key?
+ data class UnknownOrProhibitedKey(val value: String) : SettingsPatchError()
+
+ // Bad JSON
+ data object ParsePatch : SettingsPatchError()
+
+ data object RecursionLimit : SettingsPatchError()
+
+ // Patch was deserialized but was not valid domain data?
+ data object DeserializePatched : SettingsPatchError()
+
+ // Failed to apply patch
+ data object ApplyPatch : SettingsPatchError()
+}