mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 23:03:45 +01:00
net: add Ensure{any}Banman
it adds `Ensure{any}Banman` functions to avoid
code repetition and make it cleaner. Similar
approach as done with argsman, chainman, connman
and others.
This commit is contained in:
@@ -702,9 +702,7 @@ static RPCHelpMan setban()
|
||||
throw std::runtime_error(help.ToString());
|
||||
}
|
||||
NodeContext& node = EnsureAnyNodeContext(request.context);
|
||||
if (!node.banman) {
|
||||
throw JSONRPCError(RPC_DATABASE_ERROR, "Error: Ban database not loaded");
|
||||
}
|
||||
BanMan& banman = EnsureBanman(node);
|
||||
|
||||
CSubNet subNet;
|
||||
CNetAddr netAddr;
|
||||
@@ -726,7 +724,7 @@ static RPCHelpMan setban()
|
||||
|
||||
if (strCommand == "add")
|
||||
{
|
||||
if (isSubnet ? node.banman->IsBanned(subNet) : node.banman->IsBanned(netAddr)) {
|
||||
if (isSubnet ? banman.IsBanned(subNet) : banman.IsBanned(netAddr)) {
|
||||
throw JSONRPCError(RPC_CLIENT_NODE_ALREADY_ADDED, "Error: IP/Subnet already banned");
|
||||
}
|
||||
|
||||
@@ -741,12 +739,12 @@ static RPCHelpMan setban()
|
||||
}
|
||||
|
||||
if (isSubnet) {
|
||||
node.banman->Ban(subNet, banTime, absolute);
|
||||
banman.Ban(subNet, banTime, absolute);
|
||||
if (node.connman) {
|
||||
node.connman->DisconnectNode(subNet);
|
||||
}
|
||||
} else {
|
||||
node.banman->Ban(netAddr, banTime, absolute);
|
||||
banman.Ban(netAddr, banTime, absolute);
|
||||
if (node.connman) {
|
||||
node.connman->DisconnectNode(netAddr);
|
||||
}
|
||||
@@ -754,7 +752,7 @@ static RPCHelpMan setban()
|
||||
}
|
||||
else if(strCommand == "remove")
|
||||
{
|
||||
if (!( isSubnet ? node.banman->Unban(subNet) : node.banman->Unban(netAddr) )) {
|
||||
if (!( isSubnet ? banman.Unban(subNet) : banman.Unban(netAddr) )) {
|
||||
throw JSONRPCError(RPC_CLIENT_INVALID_IP_OR_SUBNET, "Error: Unban failed. Requested address/subnet was not previously manually banned.");
|
||||
}
|
||||
}
|
||||
@@ -785,13 +783,10 @@ static RPCHelpMan listbanned()
|
||||
},
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureAnyNodeContext(request.context);
|
||||
if(!node.banman) {
|
||||
throw JSONRPCError(RPC_DATABASE_ERROR, "Error: Ban database not loaded");
|
||||
}
|
||||
BanMan& banman = EnsureAnyBanman(request.context);
|
||||
|
||||
banmap_t banMap;
|
||||
node.banman->GetBanned(banMap);
|
||||
banman.GetBanned(banMap);
|
||||
const int64_t current_time{GetTime()};
|
||||
|
||||
UniValue bannedAddresses(UniValue::VARR);
|
||||
@@ -825,12 +820,9 @@ static RPCHelpMan clearbanned()
|
||||
},
|
||||
[&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue
|
||||
{
|
||||
NodeContext& node = EnsureAnyNodeContext(request.context);
|
||||
if (!node.banman) {
|
||||
throw JSONRPCError(RPC_DATABASE_ERROR, "Error: Ban database not loaded");
|
||||
}
|
||||
BanMan& banman = EnsureAnyBanman(request.context);
|
||||
|
||||
node.banman->ClearBanned();
|
||||
banman.ClearBanned();
|
||||
|
||||
return UniValue::VNULL;
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user