summaryrefslogtreecommitdiffhomepage
path: root/mullvad-management-interface
diff options
context:
space:
mode:
authorMarkus Pettersson <markus.pettersson@mullvad.net>2023-10-27 15:01:58 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2023-11-06 09:01:41 +0100
commitd1ac9a5cb37f59b4cb08999cbe5b75bd9e422cda (patch)
tree2ce1839e492a121b63aa812fc1f114b05358c59c /mullvad-management-interface
parent7c34fa4e1ac211f04f403b1dd90e8085cb711a52 (diff)
downloadmullvadvpn-d1ac9a5cb37f59b4cb08999cbe5b75bd9e422cda.tar.xz
mullvadvpn-d1ac9a5cb37f59b4cb08999cbe5b75bd9e422cda.zip
Remove `from_args` constructors for `access_methods` datatypes
In particular, `access_methods::Socks5Local`, `access_methods::Socks5Remote` & `access_methods::Shadowsocks` have got new constructors which are all infallible.
Diffstat (limited to 'mullvad-management-interface')
-rw-r--r--mullvad-management-interface/src/types/conversions/access_method.rs54
1 files changed, 31 insertions, 23 deletions
diff --git a/mullvad-management-interface/src/types/conversions/access_method.rs b/mullvad-management-interface/src/types/conversions/access_method.rs
index 40a9629070..b4a4547fdf 100644
--- a/mullvad-management-interface/src/types/conversions/access_method.rs
+++ b/mullvad-management-interface/src/types/conversions/access_method.rs
@@ -42,6 +42,8 @@ mod settings {
/// [`crate::types::proto::ApiAccessMethod`] type to the internal
/// [`mullvad_types::access_method::AccessMethodSetting`] data type.
mod data {
+ use std::net::Ipv4Addr;
+
use crate::types::{proto, FromProtobufTypeError};
use mullvad_types::access_method::{
AccessMethod, AccessMethodSetting, BuiltInAccessMethod, CustomAccessMethod, Id,
@@ -142,15 +144,15 @@ mod data {
type Error = FromProtobufTypeError;
fn try_from(value: proto::access_method::Socks5Local) -> Result<Self, Self::Error> {
- Socks5Local::from_args(
- value.remote_ip,
- value.remote_port as u16,
+ let remote_ip = value.remote_ip.parse::<Ipv4Addr>().map_err(|_| {
+ FromProtobufTypeError::InvalidArgument(
+ "Could not parse Socks5 (local) message from protobuf",
+ )
+ })?;
+ Ok(AccessMethod::from(Socks5Local::new(
+ (remote_ip, value.remote_port as u16),
value.local_port as u16,
- )
- .ok_or(FromProtobufTypeError::InvalidArgument(
- "Could not parse Socks5 (local) message from protobuf",
- ))
- .map(AccessMethod::from)
+ )))
}
}
@@ -163,19 +165,19 @@ mod data {
port,
authentication,
} = value;
- let port = port as u16;
- match authentication.map(SocksAuth::from) {
- Some(SocksAuth { username, password }) => {
- Socks5Remote::from_args_with_password(ip, port, username, password)
- }
- None => Socks5Remote::from_args(ip, port),
- }
- .ok_or({
+ let ip = ip.parse::<Ipv4Addr>().map_err(|_| {
FromProtobufTypeError::InvalidArgument(
"Could not parse Socks5 (remote) message from protobuf",
)
- })
- .map(AccessMethod::from)
+ })?;
+ let port = port as u16;
+
+ Ok(AccessMethod::from(
+ match authentication.map(SocksAuth::from) {
+ Some(auth) => Socks5Remote::new_with_authentication((ip, port), auth),
+ None => Socks5Remote::new((ip, port)),
+ },
+ ))
}
}
@@ -183,11 +185,17 @@ mod data {
type Error = FromProtobufTypeError;
fn try_from(value: proto::access_method::Shadowsocks) -> Result<Self, Self::Error> {
- Shadowsocks::from_args(value.ip, value.port as u16, value.cipher, value.password)
- .ok_or(FromProtobufTypeError::InvalidArgument(
- "Could not parse Shadowsocks message from protobuf",
- ))
- .map(AccessMethod::from)
+ let ip = value.ip.parse::<Ipv4Addr>().map_err(|_| {
+ FromProtobufTypeError::InvalidArgument(
+ "Could not parse Socks5 (remote) message from protobuf",
+ )
+ })?;
+
+ Ok(AccessMethod::from(Shadowsocks::new(
+ (ip, value.port as u16),
+ value.cipher,
+ value.password,
+ )))
}
}