summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2019-04-23 16:26:34 +0200
committerLinus Färnstrand <linus@mullvad.net>2019-04-24 11:38:24 +0200
commitcbad139a45bcd30d7fb84b2bc17e6898027c609d (patch)
tree9660b43d7c3faf28851497c43a56f2312293fa09
parent1fdced0547575690ca7edb5b0aeecb0699a22328 (diff)
downloadmullvadvpn-cbad139a45bcd30d7fb84b2bc17e6898027c609d.tar.xz
mullvadvpn-cbad139a45bcd30d7fb84b2bc17e6898027c609d.zip
Make validate_proxy_settings a free standing function
-rw-r--r--mullvad-cli/src/cmds/tunnel.rs6
-rw-r--r--mullvad-types/src/settings.rs3
-rw-r--r--talpid-types/src/net/openvpn.rs74
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(())
}