diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2019-04-23 16:26:34 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2019-04-24 11:38:24 +0200 |
| commit | cbad139a45bcd30d7fb84b2bc17e6898027c609d (patch) | |
| tree | 9660b43d7c3faf28851497c43a56f2312293fa09 | |
| parent | 1fdced0547575690ca7edb5b0aeecb0699a22328 (diff) | |
| download | mullvadvpn-cbad139a45bcd30d7fb84b2bc17e6898027c609d.tar.xz mullvadvpn-cbad139a45bcd30d7fb84b2bc17e6898027c609d.zip | |
Make validate_proxy_settings a free standing function
| -rw-r--r-- | mullvad-cli/src/cmds/tunnel.rs | 6 | ||||
| -rw-r--r-- | mullvad-types/src/settings.rs | 3 | ||||
| -rw-r--r-- | talpid-types/src/net/openvpn.rs | 74 |
3 files changed, 39 insertions, 44 deletions
diff --git a/mullvad-cli/src/cmds/tunnel.rs b/mullvad-cli/src/cmds/tunnel.rs index 2521a06838..592aef74df 100644 --- a/mullvad-cli/src/cmds/tunnel.rs +++ b/mullvad-cli/src/cmds/tunnel.rs @@ -392,7 +392,7 @@ impl Tunnel { let packed_proxy = openvpn::ProxySettings::Local(proxy); - if let Err(error) = openvpn::ProxySettingsValidation::validate(&packed_proxy) { + if let Err(error) = openvpn::validate_proxy_settings(&packed_proxy) { panic!(error); } @@ -421,7 +421,7 @@ impl Tunnel { let packed_proxy = openvpn::ProxySettings::Remote(proxy); - if let Err(error) = openvpn::ProxySettingsValidation::validate(&packed_proxy) { + if let Err(error) = openvpn::validate_proxy_settings(&packed_proxy) { panic!(error); } @@ -443,7 +443,7 @@ impl Tunnel { let packed_proxy = openvpn::ProxySettings::Shadowsocks(proxy); - if let Err(error) = openvpn::ProxySettingsValidation::validate(&packed_proxy) { + if let Err(error) = openvpn::validate_proxy_settings(&packed_proxy) { panic!(error); } diff --git a/mullvad-types/src/settings.rs b/mullvad-types/src/settings.rs index 92b656bfa5..6a2d678db4 100644 --- a/mullvad-types/src/settings.rs +++ b/mullvad-types/src/settings.rs @@ -202,8 +202,7 @@ impl Settings { pub fn set_openvpn_proxy(&mut self, proxy: Option<openvpn::ProxySettings>) -> Result<bool> { if let Some(ref settings) = proxy { - openvpn::ProxySettingsValidation::validate(settings) - .map_err(Error::InvalidProxyData)?; + openvpn::validate_proxy_settings(settings).map_err(Error::InvalidProxyData)?; } if self.tunnel_options.openvpn.proxy != proxy { diff --git a/talpid-types/src/net/openvpn.rs b/talpid-types/src/net/openvpn.rs index 4c8622fbe6..4eaa2cb218 100644 --- a/talpid-types/src/net/openvpn.rs +++ b/talpid-types/src/net/openvpn.rs @@ -142,46 +142,42 @@ pub static SHADOWSOCKS_CIPHERS: &[&str] = &[ "aes-256-pmac-siv", ]; -pub struct ProxySettingsValidation; - -impl ProxySettingsValidation { - pub fn validate(proxy: &ProxySettings) -> Result<(), String> { - match proxy { - ProxySettings::Local(local) => { - if local.port == 0 { - return Err(String::from("Invalid local port number")); - } - if local.peer.ip().is_loopback() { - return Err(String::from( - "localhost is not a valid peer in this context", - )); - } - if local.peer.port() == 0 { - return Err(String::from("Invalid remote port number")); - } +pub fn validate_proxy_settings(proxy: &ProxySettings) -> Result<(), String> { + match proxy { + ProxySettings::Local(local) => { + if local.port == 0 { + return Err(String::from("Invalid local port number")); } - ProxySettings::Remote(remote) => { - if remote.address.port() == 0 { - return Err(String::from("Invalid port number")); - } - if remote.address.ip().is_loopback() { - return Err(String::from("localhost is not a valid remote server")); - } + if local.peer.ip().is_loopback() { + return Err(String::from( + "localhost is not a valid peer in this context", + )); } - ProxySettings::Shadowsocks(ss) => { - if ss.peer.ip().is_loopback() { - return Err(String::from( - "localhost is not a valid peer in this context", - )); - } - if ss.peer.port() == 0 { - return Err(String::from("Invalid remote port number")); - } - if !SHADOWSOCKS_CIPHERS.contains(&ss.cipher.as_str()) { - return Err(String::from("Invalid cipher")); - } + if local.peer.port() == 0 { + return Err(String::from("Invalid remote port number")); } - }; - Ok(()) - } + } + ProxySettings::Remote(remote) => { + if remote.address.port() == 0 { + return Err(String::from("Invalid port number")); + } + if remote.address.ip().is_loopback() { + return Err(String::from("localhost is not a valid remote server")); + } + } + ProxySettings::Shadowsocks(ss) => { + if ss.peer.ip().is_loopback() { + return Err(String::from( + "localhost is not a valid peer in this context", + )); + } + if ss.peer.port() == 0 { + return Err(String::from("Invalid remote port number")); + } + if !SHADOWSOCKS_CIPHERS.contains(&ss.cipher.as_str()) { + return Err(String::from("Invalid cipher")); + } + } + }; + Ok(()) } |
