mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-17 13:07:54 +02:00
Merge f6c44e999b into merged_master (Bitcoin PR #21602)
This commit is contained in:
commit
3e3bb1c338
3 changed files with 24 additions and 10 deletions
|
|
@ -104,6 +104,10 @@ Updated RPCs
|
|||
with the `-json` option set, the following fields: `addresses`, `reqSigs` are no longer
|
||||
returned in the tx output of the response. (#20286)
|
||||
|
||||
- The `listbanned` RPC now returns two new numeric fields: `ban_duration` and `time_remaining`.
|
||||
Respectively, these new fields indicate the duration of a ban and the time remaining until a ban expires,
|
||||
both in seconds. Additionally, the `ban_created` field is repositioned to come before `banned_until`. (#21602)
|
||||
|
||||
Changes to Wallet or GUI related RPCs can be found in the GUI or Wallet section below.
|
||||
|
||||
New RPCs
|
||||
|
|
|
|||
|
|
@ -749,9 +749,11 @@ static RPCHelpMan listbanned()
|
|||
{
|
||||
{RPCResult::Type::OBJ, "", "",
|
||||
{
|
||||
{RPCResult::Type::STR, "address", ""},
|
||||
{RPCResult::Type::NUM_TIME, "banned_until", ""},
|
||||
{RPCResult::Type::NUM_TIME, "ban_created", ""},
|
||||
{RPCResult::Type::STR, "address", "The IP/Subnet of the banned node"},
|
||||
{RPCResult::Type::NUM_TIME, "ban_created", "The " + UNIX_EPOCH_TIME + " the ban was created"},
|
||||
{RPCResult::Type::NUM_TIME, "banned_until", "The " + UNIX_EPOCH_TIME + " the ban expires"},
|
||||
{RPCResult::Type::NUM_TIME, "ban_duration", "The ban duration, in seconds"},
|
||||
{RPCResult::Type::NUM_TIME, "time_remaining", "The time remaining until the ban expires, in seconds"},
|
||||
}},
|
||||
}},
|
||||
RPCExamples{
|
||||
|
|
@ -767,6 +769,7 @@ static RPCHelpMan listbanned()
|
|||
|
||||
banmap_t banMap;
|
||||
node.banman->GetBanned(banMap);
|
||||
const int64_t current_time{GetTime()};
|
||||
|
||||
UniValue bannedAddresses(UniValue::VARR);
|
||||
for (const auto& entry : banMap)
|
||||
|
|
@ -774,8 +777,10 @@ static RPCHelpMan listbanned()
|
|||
const CBanEntry& banEntry = entry.second;
|
||||
UniValue rec(UniValue::VOBJ);
|
||||
rec.pushKV("address", entry.first.ToString());
|
||||
rec.pushKV("banned_until", banEntry.nBanUntil);
|
||||
rec.pushKV("ban_created", banEntry.nCreateTime);
|
||||
rec.pushKV("banned_until", banEntry.nBanUntil);
|
||||
rec.pushKV("ban_duration", (banEntry.nBanUntil - banEntry.nCreateTime));
|
||||
rec.pushKV("time_remaining", (banEntry.nBanUntil - current_time));
|
||||
|
||||
bannedAddresses.push_back(rec);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -269,9 +269,9 @@ BOOST_AUTO_TEST_CASE(rpc_ban)
|
|||
ar = r.get_array();
|
||||
o1 = ar[0].get_obj();
|
||||
adr = find_value(o1, "address");
|
||||
UniValue banned_until = find_value(o1, "banned_until");
|
||||
int64_t banned_until{find_value(o1, "banned_until").get_int64()};
|
||||
BOOST_CHECK_EQUAL(adr.get_str(), "127.0.0.0/24");
|
||||
BOOST_CHECK_EQUAL(banned_until.get_int64(), 9907731200); // absolute time check
|
||||
BOOST_CHECK_EQUAL(banned_until, 9907731200); // absolute time check
|
||||
|
||||
BOOST_CHECK_NO_THROW(CallRPC(std::string("clearbanned")));
|
||||
|
||||
|
|
@ -280,11 +280,16 @@ BOOST_AUTO_TEST_CASE(rpc_ban)
|
|||
ar = r.get_array();
|
||||
o1 = ar[0].get_obj();
|
||||
adr = find_value(o1, "address");
|
||||
banned_until = find_value(o1, "banned_until");
|
||||
banned_until = find_value(o1, "banned_until").get_int64();
|
||||
const int64_t ban_created{find_value(o1, "ban_created").get_int64()};
|
||||
const int64_t ban_duration{find_value(o1, "ban_duration").get_int64()};
|
||||
const int64_t time_remaining{find_value(o1, "time_remaining").get_int64()};
|
||||
const int64_t now{GetTime()};
|
||||
BOOST_CHECK_EQUAL(adr.get_str(), "127.0.0.0/24");
|
||||
int64_t now = GetTime();
|
||||
BOOST_CHECK(banned_until.get_int64() > now);
|
||||
BOOST_CHECK(banned_until.get_int64()-now <= 200);
|
||||
BOOST_CHECK(banned_until > now);
|
||||
BOOST_CHECK(banned_until - now <= 200);
|
||||
BOOST_CHECK_EQUAL(ban_duration, banned_until - ban_created);
|
||||
BOOST_CHECK_EQUAL(time_remaining, banned_until - now);
|
||||
|
||||
// must throw an exception because 127.0.0.1 is in already banned subnet range
|
||||
BOOST_CHECK_THROW(r = CallRPC(std::string("setban 127.0.0.1 add")), std::runtime_error);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue