mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 14:38:29 +01:00
Merge #21602: rpc: add additional ban time fields to listbanned
d3b0b08b0fdoc: release notes for new listbanned fields (Jarol Rodriguez)60290d3f5etest: increase listbanned unit test coverage (Jon Atack)3e978d1a5drpc: add time_remaining field to listbanned (Jarol Rodriguez)5456b34531rpc: add ban_duration field to listbanned (Jarol Rodriguez)c95c61657adoc: improve listbanned help (Jarol Rodriguez)dd3c8eaa33rpc: swap position of banned_until and ban_created fields (Jarol Rodriguez) Pull request description: This PR adds a `ban_duration` and `time_remaining` field to the `listbanned` RPC command. Thanks to jonatack, this PR also expands the `listbanned` test coverage to include these new fields It's useful to keep track of `ban_duration` as this is another data point on which to sort banned peers. I found this helpful in adding additional context columns to the GUI `bantablemodel` as part of a follow-up PR. As [suggested](https://github.com/bitcoin/bitcoin/pull/21602#issuecomment-813486134) by jonatack, `time_remaining` is another useful user-centric data point. Since a ban always expires after its created, the `ban_created` field is now placed before the `banned_until` field. This new ordering is more logical. This PR also improves the `help listbanned` output by providing additional context to the descriptions of the `address`, `ban_created`, and `banned_until` fields. **Master: listbanned** ``` [ { "address": "1.2.3.4/32", "banned_until": 1617691101, "ban_created": 1617604701 }, { "address": "135.181.41.129/32", "banned_until": 1649140716, "ban_created": 1617604716 } ] ``` **PR: listbanned** ``` [ { "address": "1.2.3.4/32", "ban_created": 1617775773, "banned_until": 1617862173, "ban_duration": 86400, "time_remaining": 86392 }, { "address": "3.114.211.172/32", "ban_created": 1617753165, "banned_until": 1618357965, "ban_duration": 604800, "time_remaining": 582184 } ] ``` ACKs for top commit: jonatack: re-ACKd3b0b08b0fhebasto: ACKd3b0b08b0f, tested on Linux Mint 20.1 (x86_64). MarcoFalke: review ACKd3b0b08b0f🕙 Tree-SHA512: 5b83ed2483344e546d57e43adc8a1ed7a1fff292124b14c86ca3a1aa2aec8b0f7198212fabff2c5145e7f726ca04ae567fe667b141254c7519df290cf63774e5
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user