From eeb2bbc0fcc9c5afa2c3aa12915b4d3f31115e56 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Wed, 7 Sep 2016 21:38:41 +0100 Subject: epee: optionally restrict HTTP service to a configurable user agent This is intended to catch traffic coming from a web browser, so we avoid issues with a web page sending a transfer RPC to the wallet. Requiring a particular user agent can act as a simple password scheme, while we wait for 0MQ and proper authentication to be merged. --- src/rpc/core_rpc_server.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/rpc/core_rpc_server.cpp') diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index 5aa3591ab..f6431a018 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -54,6 +54,7 @@ namespace cryptonote command_line::add_arg(desc, arg_rpc_bind_port); command_line::add_arg(desc, arg_testnet_rpc_bind_port); command_line::add_arg(desc, arg_restricted_rpc); + command_line::add_arg(desc, arg_user_agent); } //------------------------------------------------------------------------------------------------------------------------------ core_rpc_server::core_rpc_server( @@ -81,11 +82,12 @@ namespace cryptonote ) { m_testnet = command_line::get_arg(vm, command_line::arg_testnet_on); + std::string m_user_agent = command_line::get_arg(vm, command_line::arg_user_agent); m_net_server.set_threads_prefix("RPC"); bool r = handle_command_line(vm); CHECK_AND_ASSERT_MES(r, false, "Failed to process command line in core_rpc_server"); - return epee::http_server_impl_base::init(m_port, m_bind_ip); + return epee::http_server_impl_base::init(m_port, m_bind_ip, m_user_agent); } //------------------------------------------------------------------------------------------------------------------------------ bool core_rpc_server::check_core_busy() @@ -1277,4 +1279,10 @@ namespace cryptonote , false }; + const command_line::arg_descriptor core_rpc_server::arg_user_agent = { + "user-agent" + , "Restrict RPC to clients using this user agent" + , "" + }; + } // namespace cryptonote -- cgit v1.2.3