diff options
| author | Markus Pettersson <markus.pettersson@mullvad.net> | 2023-08-08 16:12:57 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2023-10-09 14:39:54 +0200 |
| commit | 2796dda1376e0d7b78fc274ada988a8a371101a2 (patch) | |
| tree | a45b97d306f21ab78e459e9d7d4ee53c47a40a25 /mullvad-api/src/proxy.rs | |
| parent | 524a64d100693f3dc3c4b77c5c3b9d478dd6a4b9 (diff) | |
| download | mullvadvpn-2796dda1376e0d7b78fc274ada988a8a371101a2.tar.xz mullvadvpn-2796dda1376e0d7b78fc274ada988a8a371101a2.zip | |
Add `Socks5` as a Proxy setting
- Rename `InnerConnectionMode` variant `Proxied` to `Shadowsocks`
- Move proxy/socket connection logic to `InnerConnectMode` impl block
- Move `handle_x_connection` functions to `InnerConnectionMode` impl block
- These functions does not need to be visible in the entire module, really.
- Refactor some code into standalone functions
- Mostly for visibilities' sake, but it also helps `rustc` with inferring
the return type of each match arm inside of `stream_fut`.
Diffstat (limited to 'mullvad-api/src/proxy.rs')
| -rw-r--r-- | mullvad-api/src/proxy.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/mullvad-api/src/proxy.rs b/mullvad-api/src/proxy.rs index 1e6ab41f80..c5c2426933 100644 --- a/mullvad-api/src/proxy.rs +++ b/mullvad-api/src/proxy.rs @@ -8,7 +8,9 @@ use std::{ pin::Pin, task::{self, Poll}, }; -use talpid_types::{net::openvpn::ShadowsocksProxySettings, ErrorExt}; +use talpid_types::{ + net::openvpn::ShadowsocksProxySettings, net::openvpn::SocksProxySettings, ErrorExt, +}; use tokio::{ fs, io::{AsyncRead, AsyncWrite, AsyncWriteExt, ReadBuf}, @@ -36,6 +38,7 @@ impl fmt::Display for ApiConnectionMode { #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub enum ProxyConfig { Shadowsocks(ShadowsocksProxySettings), + Socks(SocksProxySettings), } impl fmt::Display for ProxyConfig { @@ -43,6 +46,7 @@ impl fmt::Display for ProxyConfig { match self { // TODO: Do not hardcode TCP ProxyConfig::Shadowsocks(ss) => write!(f, "Shadowsocks {}/TCP", ss.peer), + ProxyConfig::Socks(s) => write!(f, "Socks5 {}/TCP", s.peer), } } } @@ -110,8 +114,11 @@ impl ApiConnectionMode { /// Returns the remote address, or `None` for `ApiConnectionMode::Direct`. pub fn get_endpoint(&self) -> Option<SocketAddr> { match self { - ApiConnectionMode::Proxied(ProxyConfig::Shadowsocks(ss)) => Some(ss.peer), ApiConnectionMode::Direct => None, + ApiConnectionMode::Proxied(proxy_config) => match proxy_config { + ProxyConfig::Shadowsocks(ss) => Some(ss.peer), + ProxyConfig::Socks(s) => Some(s.peer), + }, } } |
