diff options
| author | David Lönnhager <david.l@mullvad.net> | 2024-02-06 11:06:49 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-02-07 17:34:19 +0100 |
| commit | f94d31a75bcfc0228dee7835cb8c1a992cf29f1a (patch) | |
| tree | 130a2229167c3920ca632c0f22a4e38024e0a652 /test/test-manager/src | |
| parent | 20d9c98f5ec44166b461730fec9ca292b622265f (diff) | |
| download | mullvadvpn-f94d31a75bcfc0228dee7835cb8c1a992cf29f1a.tar.xz mullvadvpn-f94d31a75bcfc0228dee7835cb8c1a992cf29f1a.zip | |
Add SOCKS5 server to test-manager
Diffstat (limited to 'test/test-manager/src')
| -rw-r--r-- | test/test-manager/src/main.rs | 31 | ||||
| -rw-r--r-- | test/test-manager/src/vm/network/mod.rs | 3 |
2 files changed, 34 insertions, 0 deletions
diff --git a/test/test-manager/src/main.rs b/test/test-manager/src/main.rs index f5e7a70d9f..a06b2f0257 100644 --- a/test/test-manager/src/main.rs +++ b/test/test-manager/src/main.rs @@ -14,6 +14,8 @@ use std::path::PathBuf; use anyhow::Context; use anyhow::Result; use clap::Parser; +use futures::StreamExt; +use std::net::SocketAddr; use tests::config::DEFAULT_MULLVAD_HOST; /// Test manager for Mullvad VPN app @@ -248,6 +250,34 @@ async fn main() -> Result<()> { .await .context("Failed to run provisioning for VM")?; + let socks_server: fast_socks5::server::Socks5Server = + fast_socks5::server::Socks5Server::bind(SocketAddr::new( + crate::vm::network::NON_TUN_GATEWAY.into(), + crate::vm::network::SOCKS5_PORT, + )) + .await + .context("Failed to start SOCKS5 server")?; + let socks_server = tokio::spawn(async move { + let mut incoming = socks_server.incoming(); + + while let Some(new_client) = incoming.next().await { + match new_client { + Ok(socket) => { + let fut = socket.upgrade_to_socks5(); + tokio::spawn(async move { + match fut.await { + Ok(_socket) => log::info!("socks client disconnected"), + Err(error) => log::error!("socks client failed: {error}"), + } + }); + } + Err(error) => { + log::error!("failed to accept socks client: {error}"); + } + } + } + }); + let skip_wait = vm_config.provisioner != config::Provisioner::Noop; let result = run_tests::run( @@ -291,6 +321,7 @@ async fn main() -> Result<()> { if display { instance.wait().await; } + socks_server.abort(); result } Commands::FormatTestReports { reports } => { diff --git a/test/test-manager/src/vm/network/mod.rs b/test/test-manager/src/vm/network/mod.rs index e12a95c713..944e241013 100644 --- a/test/test-manager/src/vm/network/mod.rs +++ b/test/test-manager/src/vm/network/mod.rs @@ -15,3 +15,6 @@ pub use platform::{ CUSTOM_TUN_REMOTE_REAL_PORT, CUSTOM_TUN_REMOTE_TUN_ADDR, DUMMY_LAN_INTERFACE_IP, NON_TUN_GATEWAY, }; + +/// Port on NON_TUN_GATEWAY that hosts a SOCKS5 server +pub const SOCKS5_PORT: u16 = 54321; |
