mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-03-04 13:55:23 -05:00
Assert that RPCArg names are equal to CRPCCommand ones (net, rpcwallet)
This commit is contained in:
parent
d692d192cd
commit
fa14f57fbc
3 changed files with 381 additions and 254 deletions
148
src/rpc/net.cpp
148
src/rpc/net.cpp
|
@ -29,9 +29,9 @@
|
|||
|
||||
#include <univalue.h>
|
||||
|
||||
static UniValue getconnectioncount(const JSONRPCRequest& request)
|
||||
static RPCHelpMan getconnectioncount()
|
||||
{
|
||||
RPCHelpMan{"getconnectioncount",
|
||||
return RPCHelpMan{"getconnectioncount",
|
||||
"\nReturns the number of connections to other nodes.\n",
|
||||
{},
|
||||
RPCResult{
|
||||
|
@ -41,18 +41,20 @@ static UniValue getconnectioncount(const JSONRPCRequest& request)
|
|||
HelpExampleCli("getconnectioncount", "")
|
||||
+ HelpExampleRpc("getconnectioncount", "")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
||||
return (int)node.connman->GetNodeCount(CConnman::CONNECTIONS_ALL);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue ping(const JSONRPCRequest& request)
|
||||
static RPCHelpMan ping()
|
||||
{
|
||||
RPCHelpMan{"ping",
|
||||
return RPCHelpMan{"ping",
|
||||
"\nRequests that a ping be sent to all other nodes, to measure ping time.\n"
|
||||
"Results provided in getpeerinfo, pingtime and pingwait fields are decimal seconds.\n"
|
||||
"Ping command is handled in queue with all other commands, so it measures processing backlog, not just network ping.\n",
|
||||
|
@ -62,8 +64,8 @@ static UniValue ping(const JSONRPCRequest& request)
|
|||
HelpExampleCli("ping", "")
|
||||
+ HelpExampleRpc("ping", "")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -73,11 +75,13 @@ static UniValue ping(const JSONRPCRequest& request)
|
|||
pnode->fPingQueued = true;
|
||||
});
|
||||
return NullUniValue;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue getpeerinfo(const JSONRPCRequest& request)
|
||||
static RPCHelpMan getpeerinfo()
|
||||
{
|
||||
RPCHelpMan{"getpeerinfo",
|
||||
return RPCHelpMan{"getpeerinfo",
|
||||
"\nReturns data about each connected network node as a json array of objects.\n",
|
||||
{},
|
||||
RPCResult{
|
||||
|
@ -142,8 +146,8 @@ static UniValue getpeerinfo(const JSONRPCRequest& request)
|
|||
HelpExampleCli("getpeerinfo", "")
|
||||
+ HelpExampleRpc("getpeerinfo", "")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -233,17 +237,13 @@ static UniValue getpeerinfo(const JSONRPCRequest& request)
|
|||
}
|
||||
|
||||
return ret;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue addnode(const JSONRPCRequest& request)
|
||||
static RPCHelpMan addnode()
|
||||
{
|
||||
std::string strCommand;
|
||||
if (!request.params[1].isNull())
|
||||
strCommand = request.params[1].get_str();
|
||||
if (request.fHelp || request.params.size() != 2 ||
|
||||
(strCommand != "onetry" && strCommand != "add" && strCommand != "remove"))
|
||||
throw std::runtime_error(
|
||||
RPCHelpMan{"addnode",
|
||||
return RPCHelpMan{"addnode",
|
||||
"\nAttempts to add or remove a node from the addnode list.\n"
|
||||
"Or try a connection to a node once.\n"
|
||||
"Nodes added using addnode (or -connect) are protected from DoS disconnection and are not required to be\n"
|
||||
|
@ -257,7 +257,15 @@ static UniValue addnode(const JSONRPCRequest& request)
|
|||
HelpExampleCli("addnode", "\"192.168.0.6:8333\" \"onetry\"")
|
||||
+ HelpExampleRpc("addnode", "\"192.168.0.6:8333\", \"onetry\"")
|
||||
},
|
||||
}.ToString());
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
std::string strCommand;
|
||||
if (!request.params[1].isNull())
|
||||
strCommand = request.params[1].get_str();
|
||||
if (request.fHelp || request.params.size() != 2 ||
|
||||
(strCommand != "onetry" && strCommand != "add" && strCommand != "remove"))
|
||||
throw std::runtime_error(
|
||||
self.ToString());
|
||||
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
|
@ -284,11 +292,13 @@ static UniValue addnode(const JSONRPCRequest& request)
|
|||
}
|
||||
|
||||
return NullUniValue;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue disconnectnode(const JSONRPCRequest& request)
|
||||
static RPCHelpMan disconnectnode()
|
||||
{
|
||||
RPCHelpMan{"disconnectnode",
|
||||
return RPCHelpMan{"disconnectnode",
|
||||
"\nImmediately disconnects from the specified peer node.\n"
|
||||
"\nStrictly one out of 'address' and 'nodeid' can be provided to identify the node.\n"
|
||||
"\nTo disconnect by nodeid, either set 'address' to the empty string, or call using the named 'nodeid' argument only.\n",
|
||||
|
@ -303,8 +313,8 @@ static UniValue disconnectnode(const JSONRPCRequest& request)
|
|||
+ HelpExampleRpc("disconnectnode", "\"192.168.0.6:8333\"")
|
||||
+ HelpExampleRpc("disconnectnode", "\"\", 1")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -329,11 +339,13 @@ static UniValue disconnectnode(const JSONRPCRequest& request)
|
|||
}
|
||||
|
||||
return NullUniValue;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue getaddednodeinfo(const JSONRPCRequest& request)
|
||||
static RPCHelpMan getaddednodeinfo()
|
||||
{
|
||||
RPCHelpMan{"getaddednodeinfo",
|
||||
return RPCHelpMan{"getaddednodeinfo",
|
||||
"\nReturns information about the given added node, or all added nodes\n"
|
||||
"(note that onetry addnodes are not listed here)\n",
|
||||
{
|
||||
|
@ -361,8 +373,8 @@ static UniValue getaddednodeinfo(const JSONRPCRequest& request)
|
|||
HelpExampleCli("getaddednodeinfo", "\"192.168.0.201\"")
|
||||
+ HelpExampleRpc("getaddednodeinfo", "\"192.168.0.201\"")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -401,11 +413,13 @@ static UniValue getaddednodeinfo(const JSONRPCRequest& request)
|
|||
}
|
||||
|
||||
return ret;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue getnettotals(const JSONRPCRequest& request)
|
||||
static RPCHelpMan getnettotals()
|
||||
{
|
||||
RPCHelpMan{"getnettotals",
|
||||
return RPCHelpMan{"getnettotals",
|
||||
"\nReturns information about network traffic, including bytes in, bytes out,\n"
|
||||
"and current time.\n",
|
||||
{},
|
||||
|
@ -430,7 +444,8 @@ static UniValue getnettotals(const JSONRPCRequest& request)
|
|||
HelpExampleCli("getnettotals", "")
|
||||
+ HelpExampleRpc("getnettotals", "")
|
||||
},
|
||||
}.Check(request);
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.connman)
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -449,6 +464,8 @@ static UniValue getnettotals(const JSONRPCRequest& request)
|
|||
outboundLimit.pushKV("time_left_in_cycle", node.connman->GetMaxOutboundTimeLeftInCycle());
|
||||
obj.pushKV("uploadtarget", outboundLimit);
|
||||
return obj;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue GetNetworksInfo()
|
||||
|
@ -472,9 +489,9 @@ static UniValue GetNetworksInfo()
|
|||
return networks;
|
||||
}
|
||||
|
||||
static UniValue getnetworkinfo(const JSONRPCRequest& request)
|
||||
static RPCHelpMan getnetworkinfo()
|
||||
{
|
||||
RPCHelpMan{"getnetworkinfo",
|
||||
return RPCHelpMan{"getnetworkinfo",
|
||||
"Returns an object containing various state info regarding P2P networking.\n",
|
||||
{},
|
||||
RPCResult{
|
||||
|
@ -523,8 +540,8 @@ static UniValue getnetworkinfo(const JSONRPCRequest& request)
|
|||
HelpExampleCli("getnetworkinfo", "")
|
||||
+ HelpExampleRpc("getnetworkinfo", "")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
LOCK(cs_main);
|
||||
UniValue obj(UniValue::VOBJ);
|
||||
obj.pushKV("version", CLIENT_VERSION);
|
||||
|
@ -562,11 +579,13 @@ static UniValue getnetworkinfo(const JSONRPCRequest& request)
|
|||
obj.pushKV("localaddresses", localAddresses);
|
||||
obj.pushKV("warnings", GetWarnings(false).original);
|
||||
return obj;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue setban(const JSONRPCRequest& request)
|
||||
static RPCHelpMan setban()
|
||||
{
|
||||
const RPCHelpMan help{"setban",
|
||||
return RPCHelpMan{"setban",
|
||||
"\nAttempts to add or remove an IP/Subnet from the banned list.\n",
|
||||
{
|
||||
{"subnet", RPCArg::Type::STR, RPCArg::Optional::NO, "The IP/Subnet (see getpeerinfo for nodes IP) with an optional netmask (default is /32 = single IP)"},
|
||||
|
@ -580,7 +599,8 @@ static UniValue setban(const JSONRPCRequest& request)
|
|||
+ HelpExampleCli("setban", "\"192.168.0.0/24\" \"add\"")
|
||||
+ HelpExampleRpc("setban", "\"192.168.0.6\", \"add\", 86400")
|
||||
},
|
||||
};
|
||||
[&](const RPCHelpMan& help, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
std::string strCommand;
|
||||
if (!request.params[1].isNull())
|
||||
strCommand = request.params[1].get_str();
|
||||
|
@ -643,11 +663,13 @@ static UniValue setban(const JSONRPCRequest& request)
|
|||
}
|
||||
}
|
||||
return NullUniValue;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue listbanned(const JSONRPCRequest& request)
|
||||
static RPCHelpMan listbanned()
|
||||
{
|
||||
RPCHelpMan{"listbanned",
|
||||
return RPCHelpMan{"listbanned",
|
||||
"\nList all manually banned IPs/Subnets.\n",
|
||||
{},
|
||||
RPCResult{RPCResult::Type::ARR, "", "",
|
||||
|
@ -663,8 +685,8 @@ static UniValue listbanned(const JSONRPCRequest& request)
|
|||
HelpExampleCli("listbanned", "")
|
||||
+ HelpExampleRpc("listbanned", "")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if(!node.banman) {
|
||||
throw JSONRPCError(RPC_DATABASE_ERROR, "Error: Ban database not loaded");
|
||||
|
@ -686,11 +708,13 @@ static UniValue listbanned(const JSONRPCRequest& request)
|
|||
}
|
||||
|
||||
return bannedAddresses;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue clearbanned(const JSONRPCRequest& request)
|
||||
static RPCHelpMan clearbanned()
|
||||
{
|
||||
RPCHelpMan{"clearbanned",
|
||||
return RPCHelpMan{"clearbanned",
|
||||
"\nClear all banned IPs.\n",
|
||||
{},
|
||||
RPCResult{RPCResult::Type::NONE, "", ""},
|
||||
|
@ -698,7 +722,8 @@ static UniValue clearbanned(const JSONRPCRequest& request)
|
|||
HelpExampleCli("clearbanned", "")
|
||||
+ HelpExampleRpc("clearbanned", "")
|
||||
},
|
||||
}.Check(request);
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if (!node.banman) {
|
||||
throw JSONRPCError(RPC_DATABASE_ERROR, "Error: Ban database not loaded");
|
||||
|
@ -707,19 +732,21 @@ static UniValue clearbanned(const JSONRPCRequest& request)
|
|||
node.banman->ClearBanned();
|
||||
|
||||
return NullUniValue;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue setnetworkactive(const JSONRPCRequest& request)
|
||||
static RPCHelpMan setnetworkactive()
|
||||
{
|
||||
RPCHelpMan{"setnetworkactive",
|
||||
return RPCHelpMan{"setnetworkactive",
|
||||
"\nDisable/enable all p2p network activity.\n",
|
||||
{
|
||||
{"state", RPCArg::Type::BOOL, RPCArg::Optional::NO, "true to enable networking, false to disable"},
|
||||
},
|
||||
RPCResult{RPCResult::Type::BOOL, "", "The value that was passed in"},
|
||||
RPCExamples{""},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if (!node.connman) {
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -728,11 +755,13 @@ static UniValue setnetworkactive(const JSONRPCRequest& request)
|
|||
node.connman->SetNetworkActive(request.params[0].get_bool());
|
||||
|
||||
return node.connman->GetNetworkActive();
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue getnodeaddresses(const JSONRPCRequest& request)
|
||||
static RPCHelpMan getnodeaddresses()
|
||||
{
|
||||
RPCHelpMan{"getnodeaddresses",
|
||||
return RPCHelpMan{"getnodeaddresses",
|
||||
"\nReturn known addresses which can potentially be used to find new nodes in the network\n",
|
||||
{
|
||||
{"count", RPCArg::Type::NUM, /* default */ "1", "The maximum number of addresses to return. Specify 0 to return all known addresses."},
|
||||
|
@ -753,7 +782,8 @@ static UniValue getnodeaddresses(const JSONRPCRequest& request)
|
|||
HelpExampleCli("getnodeaddresses", "8")
|
||||
+ HelpExampleRpc("getnodeaddresses", "8")
|
||||
},
|
||||
}.Check(request);
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if (!node.connman) {
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -779,11 +809,13 @@ static UniValue getnodeaddresses(const JSONRPCRequest& request)
|
|||
ret.push_back(obj);
|
||||
}
|
||||
return ret;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
static UniValue addpeeraddress(const JSONRPCRequest& request)
|
||||
static RPCHelpMan addpeeraddress()
|
||||
{
|
||||
RPCHelpMan{"addpeeraddress",
|
||||
return RPCHelpMan{"addpeeraddress",
|
||||
"\nAdd the address of a potential peer to the address manager. This RPC is for testing only.\n",
|
||||
{
|
||||
{"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The IP address of the peer"},
|
||||
|
@ -799,8 +831,8 @@ static UniValue addpeeraddress(const JSONRPCRequest& request)
|
|||
HelpExampleCli("addpeeraddress", "\"1.2.3.4\" 8333")
|
||||
+ HelpExampleRpc("addpeeraddress", "\"1.2.3.4\", 8333")
|
||||
},
|
||||
}.Check(request);
|
||||
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureNodeContext(request.context);
|
||||
if (!node.connman) {
|
||||
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
|
||||
|
@ -827,6 +859,8 @@ static UniValue addpeeraddress(const JSONRPCRequest& request)
|
|||
|
||||
obj.pushKV("success", true);
|
||||
return obj;
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
void RegisterNetRPCCommands(CRPCTable &t)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -34,6 +34,6 @@ void EnsureWalletIsUnlocked(const CWallet*);
|
|||
WalletContext& EnsureWalletContext(const util::Ref& context);
|
||||
LegacyScriptPubKeyMan& EnsureLegacyScriptPubKeyMan(CWallet& wallet, bool also_create = false);
|
||||
|
||||
UniValue getaddressinfo(const JSONRPCRequest& request);
|
||||
UniValue signrawtransactionwithwallet(const JSONRPCRequest& request);
|
||||
RPCHelpMan getaddressinfo();
|
||||
RPCHelpMan signrawtransactionwithwallet();
|
||||
#endif //BITCOIN_WALLET_RPCWALLET_H
|
||||
|
|
Loading…
Add table
Reference in a new issue