From 7db82704311f436421714e7e186c843cfb7e366b Mon Sep 17 00:00:00 2001 From: Keith Winstein Date: Thu, 2 Feb 2012 17:42:47 -0500 Subject: [PATCH] Client takes key on standard input (to keep out of argument list) --- stm-server.cpp | 5 +++-- stm.cpp | 22 +++++++++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/stm-server.cpp b/stm-server.cpp index 8e7f668..b147287 100644 --- a/stm-server.cpp +++ b/stm-server.cpp @@ -163,9 +163,10 @@ void serve( int host_fd, const char *desired_ip ) Network::UserStream blank; Network::Transport< Terminal::Complete, Network::UserStream > network( terminal, blank, desired_ip ); - network.set_verbose(); + /* network.set_verbose(); */ - printf( "key= %s port= %d\n", network.get_key().c_str(), network.port() ); + printf( "CONNECT %d %s\n", network.port(), network.get_key().c_str() ); + fflush( stdout ); /* prepare to poll for events */ struct pollfd pollfds[ 3 ]; diff --git a/stm.cpp b/stm.cpp index 4c6e38c..7e50b19 100644 --- a/stm.cpp +++ b/stm.cpp @@ -1,33 +1,41 @@ #include "stmclient.hpp" +#include "crypto.hpp" + +#include int main( int argc, char *argv[] ) { /* Get arguments */ - char *ip, *key; + char *ip; int port; - if ( argc != 4 ) { - fprintf( stderr, "Usage: %s IP PORT KEY\n", argv[ 0 ] ); + if ( argc != 3 ) { + fprintf( stderr, "Usage: %s IP PORT\n", argv[ 0 ] ); exit( 1 ); } ip = argv[ 1 ]; - port = atoi( argv[ 2 ] ); - key = argv[ 3 ]; + port = myatoi( argv[ 2 ] ); - STMClient client( ip, port, key ); + /* Read key from standard input */ + cout << "Key: "; + string key; + cin >> key; - /* Adopt implementation locale */ + /* Adopt native locale */ if ( NULL == setlocale( LC_ALL, "" ) ) { perror( "setlocale" ); exit( 1 ); } + STMClient client( ip, port, key.c_str() ); + client.init(); client.main(); client.shutdown(); + printf( "\n[mosh is exiting.]\n" ); return 0;