From 65eef143cdbeae2637d9d8c2b76ee1a2ed44b220 Mon Sep 17 00:00:00 2001 From: Dennis Schwerdel Date: Thu, 4 Feb 2021 23:38:08 +0100 Subject: [PATCH] Small improvements --- contrib/performance.py | 2 +- contrib/testnet.py | 13 ++++++++++--- src/config.rs | 2 +- src/tests/mod.rs | 3 +-- src/wsproxy.rs | 11 +++++++---- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/contrib/performance.py b/contrib/performance.py index 5c49a1f..2da82bf 100755 --- a/contrib/performance.py +++ b/contrib/performance.py @@ -8,7 +8,7 @@ from datetime import date # Note: this script will run for ~8 minutes and incur costs of about $ 0.02 FILE = "../target/release/vpncloud" -VERSION = "2.0.0-alpha1" +VERSION = "2.0.1" REGION = "eu-central-1" env = EC2Environment( diff --git a/contrib/testnet.py b/contrib/testnet.py index 77a2802..debb418 100755 --- a/contrib/testnet.py +++ b/contrib/testnet.py @@ -5,7 +5,7 @@ import atexit, argparse, os REGION = "eu-central-1" -VERSION = "2.0.0" +VERSION = "2.0.1" parser = argparse.ArgumentParser(description='Create a test setup') @@ -25,15 +25,22 @@ if args.keyname: with open(args.keyfile, 'r') as fp: privatekey = fp.read() +opts = {} +if os.path.exists(args.version): + opts["vpncloud_file"] = args.version + opts["vpncloud_version"] = None +else: + opts["vpncloud_version"] = args.version + setup = EC2Environment( region = REGION, node_count = args.count, instance_type = args.instancetype, - vpncloud_version = args.version, cluster_nodes = args.cluster, subnet = args.subnet or CREATE, keyname = args.keyname or CREATE, - privatekey = privatekey + privatekey = privatekey, + **opts ) if not args.keyname: diff --git a/src/config.rs b/src/config.rs index cfb59f2..35d55e0 100644 --- a/src/config.rs +++ b/src/config.rs @@ -358,7 +358,7 @@ pub struct Args { pub mode: Option, /// The shared password to encrypt all traffic - #[structopt(short, long, required_unless_one = &["private-key", "config", "genkey", "version", "completion"], env)] + #[structopt(short, long, env)] pub password: Option, /// The private key to use diff --git a/src/tests/mod.rs b/src/tests/mod.rs index 6632bc6..e42ed44 100644 --- a/src/tests/mod.rs +++ b/src/tests/mod.rs @@ -10,7 +10,6 @@ use std::{ collections::{HashMap, VecDeque}, io::Write, net::SocketAddr, - str::FromStr, sync::{ atomic::{AtomicUsize, Ordering}, Once @@ -91,12 +90,12 @@ impl Simulator

{ let mut config = config.clone(); MockSocket::set_nat(nat); config.listen = format!("[::]:{}", self.next_port); + let addr = config.listen.parse::().unwrap(); if config.crypto.password.is_none() && config.crypto.private_key.is_none() { config.crypto.password = Some("test123".to_string()) } DebugLogger::set_node(self.next_port as usize); self.next_port += 1; - let addr = SocketAddr::from_str(&config.listen).unwrap(); let node = TestNode::new(&config, MockSocket::new(addr), MockDevice::new(), None, None); DebugLogger::set_node(0); self.nodes.insert(addr, node); diff --git a/src/wsproxy.rs b/src/wsproxy.rs index 1013d55..15f8447 100644 --- a/src/wsproxy.rs +++ b/src/wsproxy.rs @@ -1,5 +1,5 @@ use super::{ - net::{mapped_addr, get_ip, parse_listen, Socket}, + net::{get_ip, mapped_addr, parse_listen, Socket}, poll::{WaitImpl, WaitResult}, port_forwarding::PortForwarding, util::MsgBuffer @@ -47,6 +47,7 @@ fn read_addr(mut r: R) -> Result { fn serve_proxy_connection(stream: TcpStream) -> Result<(), io::Error> { let peer = stream.peer_addr()?; info!("WS client {} connected", peer); + stream.set_nodelay(true)?; let mut websocket = io_error!(accept(stream), "Failed to initialize websocket with {}: {}", peer)?; let udpsocket = UdpSocket::bind("[::]:0")?; let mut msg = Vec::with_capacity(18); @@ -56,7 +57,7 @@ fn serve_proxy_connection(stream: TcpStream) -> Result<(), io::Error> { write_addr(addr, &mut msg)?; io_error!(websocket.write_message(Message::Binary(msg)), "Failed to write to ws connection: {}")?; let websocketfd = websocket.get_ref().as_raw_fd(); - let poll = WaitImpl::new(websocketfd, udpsocket.as_raw_fd(), 60*1000)?; + let poll = WaitImpl::new(websocketfd, udpsocket.as_raw_fd(), 60 * 1000)?; let mut buffer = [0; 65535]; for evt in poll { match evt { @@ -90,6 +91,7 @@ fn serve_proxy_connection(stream: TcpStream) -> Result<(), io::Error> { pub fn run_proxy(listen: &str) -> Result<(), io::Error> { let addr = parse_listen(listen); let server = TcpListener::bind(addr)?; + info!("Listening on ws://{}", server.local_addr()?); for stream in server.incoming() { let stream = stream?; let peer = stream.peer_addr()?; @@ -126,7 +128,8 @@ impl AsRawFd for ProxyConnection { impl Socket for ProxyConnection { fn listen(url: &str) -> Result { let parsed_url = io_error!(Url::parse(url), "Invalid URL {}: {}", url)?; - let (socket, _) = io_error!(connect(parsed_url), "Failed to connect to URL {}: {}", url)?; + let (mut socket, _) = io_error!(connect(parsed_url), "Failed to connect to URL {}: {}", url)?; + socket.get_mut().set_nodelay(true)?; let addr = "0.0.0.0:0".parse::().unwrap(); let mut con = ProxyConnection { addr, socket }; let addr_data = con.read_message()?; @@ -157,4 +160,4 @@ impl Socket for ProxyConnection { fn create_port_forwarding(&self) -> Option { None } -} \ No newline at end of file +}