Skip to content

Commit

Permalink
Add command line option rpc-server to run RPC server
Browse files Browse the repository at this point in the history
by default it's not started

also restrict rpc by option, insted of unrestricting since we explicitly tell wallet to run rpc server
  • Loading branch information
aivve committed Jul 22, 2022
1 parent 1c93e24 commit 2f48ad1
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 16 deletions.
14 changes: 10 additions & 4 deletions src/CommandLineParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ CommandLineParser::CommandLineParser(QObject* _parent) : QObject(_parent), m_par
m_p2pBindPortOption("p2p-bind-port", tr("Port for p2p network protocol"), tr("port"), QString::number(CryptoNote::P2P_DEFAULT_PORT)),
m_rpcBindIpOption("rpc-bind-ip", tr("Interface for RPC server"), tr("ip"), "127.0.0.1"),
m_rpcBindPortOption("rpc-bind-port", tr("Port for RPC server"), tr("port"), QString::number(CryptoNote::RPC_DEFAULT_PORT)),
m_unrestrictedRpcOption("unrestricted-rpc", tr("Allow all RPC server queries")),
m_rpcOption("rpc-server", tr("Run RPC server")),
m_restrictedRpcOption("restricted-rpc", tr("Disallow some RPC server queries")),
m_p2pExternalOption("p2p-external-port", tr("External port for p2p network protocol (if port forwarding used with NAT)"),
tr("port"), 0),
m_allowLocalIpOption("allow-local-ip", tr("Allow local ip add to peer list, mostly in debug purposes")),
Expand All @@ -44,7 +45,8 @@ CommandLineParser::CommandLineParser(QObject* _parent) : QObject(_parent), m_par
m_parser.addOption(m_p2pBindPortOption);
m_parser.addOption(m_rpcBindIpOption);
m_parser.addOption(m_rpcBindPortOption);
m_parser.addOption(m_unrestrictedRpcOption);
m_parser.addOption(m_rpcOption);
m_parser.addOption(m_restrictedRpcOption);
m_parser.addOption(m_p2pExternalOption);
m_parser.addOption(m_allowLocalIpOption);
m_parser.addOption(m_addPeerOption);
Expand Down Expand Up @@ -131,8 +133,12 @@ quint16 CommandLineParser::getRpcBindPort() const {
return m_parser.value(m_rpcBindPortOption).toUShort();
}

bool CommandLineParser::hasUnrestrictedRpcOption() const {
return m_parser.isSet(m_unrestrictedRpcOption);
bool CommandLineParser::hasRpcOption() const {
return m_parser.isSet(m_rpcOption);
}

bool CommandLineParser::hasRestrictedRpcOption() const {
return m_parser.isSet(m_restrictedRpcOption);
}

quint16 CommandLineParser::getP2pExternalPort() const {
Expand Down
6 changes: 4 additions & 2 deletions src/CommandLineParser.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ class CommandLineParser : public QObject {
bool hasHideMyPortOption() const;
bool hasPortableOption() const;
bool hasAllowReorgOption() const;
bool hasUnrestrictedRpcOption() const;
bool hasRpcOption() const;
bool hasRestrictedRpcOption() const;
QString getErrorText() const;
QString getHelpText() const;
QString getP2pBindIp() const;
Expand All @@ -54,7 +55,8 @@ class CommandLineParser : public QObject {
QCommandLineOption m_p2pBindPortOption;
QCommandLineOption m_rpcBindIpOption;
QCommandLineOption m_rpcBindPortOption;
QCommandLineOption m_unrestrictedRpcOption;
QCommandLineOption m_rpcOption;
QCommandLineOption m_restrictedRpcOption;
QCommandLineOption m_p2pExternalOption;
QCommandLineOption m_allowLocalIpOption;
QCommandLineOption m_addPeerOption;
Expand Down
12 changes: 6 additions & 6 deletions src/CryptoNoteWrapper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -389,12 +389,12 @@ class InprocessNode : public CryptoNote::INodeObserver, public Node {
return;
}


m_logger(Logging::INFO) << "Starting core rpc server...";
m_rpcServer = new CryptoNote::RpcServer(m_rpcServerConfig, m_dispatcher, m_logManager, m_core, m_nodeServer, m_protocolHandler);
m_rpcServer->start();
m_logger(Logging::INFO) << "Core rpc server started ok";

if (Settings::instance().hasRunRpc()) {
m_logger(Logging::INFO) << "Starting core rpc server...";
m_rpcServer = new CryptoNote::RpcServer(m_rpcServerConfig, m_dispatcher, m_logManager, m_core, m_nodeServer, m_protocolHandler);
m_rpcServer->start();
m_logger(Logging::INFO) << "Core rpc server started ok";
}

} catch (std::runtime_error& _err) {
callback(make_error_code(CryptoNote::error::NOT_INITIALIZED));
Expand Down
2 changes: 1 addition & 1 deletion src/NodeAdapter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ CryptoNote::RpcServerConfig NodeAdapter::makeRpcServerConfig() const {
options.insert(std::make_pair("fee-amount", boost::program_options::variable_value(dummy, false)));
options.insert(std::make_pair("view-key", boost::program_options::variable_value(dummy, false)));

options.insert(std::make_pair("restricted-rpc", boost::program_options::variable_value(!Settings::instance().unrestrictedRpc(), false)));
options.insert(std::make_pair("restricted-rpc", boost::program_options::variable_value(Settings::instance().hasRestrictedRpc(), false)));

config.init(options);

Expand Down
9 changes: 7 additions & 2 deletions src/Settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,14 @@ quint16 Settings::getRpcBindPort() const {
return m_cmdLineParser->getRpcBindPort();
}

bool Settings::unrestrictedRpc() const {
bool Settings::hasRunRpc() const {
Q_ASSERT(m_cmdLineParser != nullptr);
return m_cmdLineParser->hasUnrestrictedRpcOption();
return m_cmdLineParser->hasRpcOption();
}

bool Settings::hasRestrictedRpc() const {
Q_ASSERT(m_cmdLineParser != nullptr);
return m_cmdLineParser->hasRestrictedRpcOption();
}

quint16 Settings::getP2pExternalPort() const {
Expand Down
3 changes: 2 additions & 1 deletion src/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ class Settings : public QObject {
bool isTestnet() const;
bool withoutCheckpoints() const;
bool alowReorg() const;
bool unrestrictedRpc() const;
bool hasRunRpc() const;
bool hasRestrictedRpc() const;
QDir getDataDir() const;
QString getP2pBindIp() const;
quint16 getP2pBindPort() const;
Expand Down

0 comments on commit 2f48ad1

Please sign in to comment.