diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-11-29 15:54:51 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-12-22 10:35:59 +0100 |
| commit | c06e7a9def145e7fa20d5e93331fcc1dc5ae42ca (patch) | |
| tree | 6e510b1596d48cd37f9d0c4fe03967ca60a17b11 | |
| parent | 14ad5ac49ee0e6b8fc5982b9f9c8441ca9d5e74b (diff) | |
| download | mullvadvpn-c06e7a9def145e7fa20d5e93331fcc1dc5ae42ca.tar.xz mullvadvpn-c06e7a9def145e7fa20d5e93331fcc1dc5ae42ca.zip | |
Add conversion to gRPC type for RelaySettingsUpdate
| -rw-r--r-- | mullvad-management-interface/src/types/conversions/relay_constraints.rs | 75 |
1 files changed, 74 insertions, 1 deletions
diff --git a/mullvad-management-interface/src/types/conversions/relay_constraints.rs b/mullvad-management-interface/src/types/conversions/relay_constraints.rs index a402a058ed..04904e0191 100644 --- a/mullvad-management-interface/src/types/conversions/relay_constraints.rs +++ b/mullvad-management-interface/src/types/conversions/relay_constraints.rs @@ -1,5 +1,6 @@ use crate::types::{conversions::option_from_proto_string, proto, FromProtobufTypeError}; -use mullvad_types::relay_constraints::Constraint; +use mullvad_types::relay_constraints::{Constraint, RelaySettingsUpdate}; +use talpid_types::net::TunnelType; impl TryFrom<&proto::WireguardConstraints> for mullvad_types::relay_constraints::WireguardConstraints @@ -129,6 +130,78 @@ impl TryFrom<proto::RelaySettings> for mullvad_types::relay_constraints::RelaySe } } +impl From<RelaySettingsUpdate> for proto::RelaySettingsUpdate { + fn from(relay_settings_update: RelaySettingsUpdate) -> Self { + match relay_settings_update { + RelaySettingsUpdate::Normal(constraints) => proto::RelaySettingsUpdate { + r#type: Some(proto::relay_settings_update::Type::Normal( + proto::NormalRelaySettingsUpdate { + location: constraints.location.map(proto::RelayLocation::from), + providers: constraints + .providers + .map(|constraint| proto::ProviderUpdate { + providers: convert_providers_constraint(&constraint), + }), + ownership: constraints + .ownership + .map(|ownership| proto::OwnershipUpdate { + ownership: i32::from(convert_ownership_constraint(&ownership)), + }), + tunnel_type: constraints.tunnel_protocol.map(|protocol| { + proto::TunnelTypeUpdate { + tunnel_type: match protocol { + Constraint::Any => None, + Constraint::Only(protocol) => { + Some(proto::TunnelTypeConstraint { + tunnel_type: i32::from(match protocol { + TunnelType::Wireguard => { + proto::TunnelType::Wireguard + } + TunnelType::OpenVpn => proto::TunnelType::Openvpn, + }), + }) + } + }, + } + }), + wireguard_constraints: constraints.wireguard_constraints.map( + |wireguard_constraints| proto::WireguardConstraints { + port: u32::from(wireguard_constraints.port.unwrap_or(0)), + ip_version: wireguard_constraints + .ip_version + .option() + .map(proto::IpVersion::from) + .map(proto::IpVersionConstraint::from), + use_multihop: wireguard_constraints.use_multihop, + entry_location: wireguard_constraints + .entry_location + .option() + .map(proto::RelayLocation::from), + }, + ), + openvpn_constraints: constraints.openvpn_constraints.map( + |openvpn_constraints| proto::OpenvpnConstraints { + port: openvpn_constraints + .port + .option() + .map(proto::TransportPort::from), + }, + ), + }, + )), + }, + RelaySettingsUpdate::CustomTunnelEndpoint(endpoint) => proto::RelaySettingsUpdate { + r#type: Some(proto::relay_settings_update::Type::Custom( + proto::CustomRelaySettings { + host: endpoint.host.to_string(), + config: Some(proto::ConnectionConfig::from(endpoint.config)), + }, + )), + }, + } + } +} + impl TryFrom<proto::RelaySettingsUpdate> for mullvad_types::relay_constraints::RelaySettingsUpdate { type Error = FromProtobufTypeError; |
