From bd0d102358b1d0815a362071b577584ed84903b0 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Thu, 4 Feb 2021 21:19:05 +0100 Subject: [PATCH] Add configurable WS port --- src/config.rs | 8 +++++++- src/main.rs | 4 ++-- src/net.rs | 2 +- src/wsproxy.rs | 8 ++++---- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/config.rs b/src/config.rs index 011ddfd..13a8bfd 100644 --- a/src/config.rs +++ b/src/config.rs @@ -499,7 +499,13 @@ pub enum Command { #[structopt(name = "genkey", alias = "gen-key")] GenKey, - WsProxy, + /// Run a websocket proxy + #[structopt(alias = "wsproxy")] + WsProxy { + /// Websocket listen address IP:PORT + #[structopt(long, short, default_value="3210")] + listen: String + }, /// Migrate an old config file #[structopt(alias = "migrate")] diff --git a/src/main.rs b/src/main.rs index cb39a4e..62d658d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -268,8 +268,8 @@ fn main() { Args::clap().gen_completions_to(env!("CARGO_PKG_NAME"), shell, &mut io::stdout()); return } - Command::WsProxy => { - wsproxy::run_proxy(); + Command::WsProxy { listen } => { + try_fail!(wsproxy::run_proxy(&listen), "Failed to run websocket proxy: {:?}"); } } return diff --git a/src/net.rs b/src/net.rs index c2ac39f..d513edc 100644 --- a/src/net.rs +++ b/src/net.rs @@ -35,7 +35,7 @@ pub trait Socket: AsRawFd + Sized { fn create_port_forwarding(&self) -> Option; } -fn parse_listen(addr: &str) -> SocketAddr { +pub fn parse_listen(addr: &str) -> SocketAddr { if let Some(addr) = addr.strip_prefix("*:") { let port = try_fail!(addr.parse::(), "Invalid port: {}"); SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), port) diff --git a/src/wsproxy.rs b/src/wsproxy.rs index 18548d9..775059c 100644 --- a/src/wsproxy.rs +++ b/src/wsproxy.rs @@ -1,5 +1,5 @@ use super::{ - net::{mapped_addr, get_ip, Socket}, + net::{mapped_addr, get_ip, parse_listen, Socket}, poll::{WaitImpl, WaitResult}, port_forwarding::PortForwarding, util::MsgBuffer @@ -87,9 +87,9 @@ fn serve_proxy_connection(stream: TcpStream) -> Result<(), io::Error> { Ok(()) } -pub fn run_proxy() -> Result<(), io::Error> { - // TODO: configurable listen - let server = TcpListener::bind("127.0.0.1:9001")?; +pub fn run_proxy(listen: &str) -> Result<(), io::Error> { + let addr = parse_listen(listen); + let server = TcpListener::bind(addr)?; for stream in server.incoming() { let stream = stream?; let peer = stream.peer_addr()?;