diff options
Diffstat (limited to 'android/lib')
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() +} |
