diff --git a/programs/cli_wallet/main.cpp b/programs/cli_wallet/main.cpp index 679b6329..8c78ba50 100644 --- a/programs/cli_wallet/main.cpp +++ b/programs/cli_wallet/main.cpp @@ -23,8 +23,10 @@ #include #include +#include #include #include +#include #include #include @@ -65,6 +67,7 @@ int main( int argc, char** argv ) ("rpc-endpoint,r", bpo::value()->implicit_value("127.0.0.1:8091"), "Endpoint for wallet websocket RPC to listen on") ("rpc-tls-endpoint,t", bpo::value()->implicit_value("127.0.0.1:8092"), "Endpoint for wallet websocket TLS RPC to listen on") ("rpc-tls-certificate,c", bpo::value()->implicit_value("server.pem"), "PEM certificate for wallet websocket TLS RPC") + ("rpc-http-endpoint,h", bpo::value()->implicit_value("127.0.0.1:8093"), "Endpoint for wallet HTTP RPC to listen on") ("daemon,d", "Run the wallet in daemon mode" ) ("wallet-file,w", bpo::value()->implicit_value("wallet.json"), "wallet to load"); @@ -193,6 +196,24 @@ int main( int argc, char** argv ) _websocket_tls_server->start_accept(); } + auto _http_server = std::make_shared(); + if( options.count("rpc-http-endpoint" ) ) + { + ilog( "Listening for incoming HTTP RPC requests on ${p}", ("p", options.at("rpc-http-endpoint").as() ) ); + _http_server->listen( fc::ip::endpoint::from_string( options.at( "rpc-http-endpoint" ).as() ) ); + // + // due to implementation, on_request() must come AFTER listen() + // + _http_server->on_request( + [&]( const fc::http::request& req, const fc::http::server::response& resp ) + { + std::shared_ptr< fc::rpc::http_api_connection > conn = + std::make_shared< fc::rpc::http_api_connection>(); + conn->register_api( wapi ); + conn->on_request( req, resp ); + } ); + } + if( !options.count( "daemon" ) ) { wallet_cli->register_api( wapi );