commit
ede2918740
42
CHANGELOG.md
42
CHANGELOG.md
|
@ -8,6 +8,42 @@ This project uses [Semantic Versioning] and generally follows the conventions of
|
||||||
|
|
||||||
Important planned changes not yet bundled up will be listed here.
|
Important planned changes not yet bundled up will be listed here.
|
||||||
|
|
||||||
|
## [0.4.1] - 2023-01-15
|
||||||
|
|
||||||
|
Allowlist support.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Allowlists just remove blocks from merged list before push. (a25773f)
|
||||||
|
- Added helper submodule for testing utils (bf48a96)
|
||||||
|
- Added basic tests of allowlist config args. (a3d3571)
|
||||||
|
- Added test cases for cmdline parsing. (11accf3)
|
||||||
|
- Added test cases for configfile parsing. (11accf3)
|
||||||
|
- Added documentation on allowlists. (26f5464)
|
||||||
|
- Fixed bug in how DomainBlock defaults handle reject_media, reject_reports. (6d4e18b)
|
||||||
|
- Added support for allowlists. Updated docstring for merge_blocklists() (7a31c33)
|
||||||
|
- Added DomainBlock type hint to update_known_block(). (69c28f1)
|
||||||
|
- Use ._asdict() to get info to pass to add block API call. (69c28f1)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Updated README to explain allowlist mechanism. (dc4bbd7)
|
||||||
|
- Edited sample config to better explain URL source (9bd7914)
|
||||||
|
- Restructured argparsing for easier testing. (11accf3)
|
||||||
|
- str2bool() now converts '' to False. Added some extra debug logging of blocklist parsing. (894b133)
|
||||||
|
- Updated documentation to explain need for `admin:read` access to fetch followers stats. (2cec9e1)
|
||||||
|
- Aligned API call rate limit with server default. (55dad3f)
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- Remove implied setting of reject_media/reports if severity is set to 'suspend'. (3aa2e37)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed bug: mergeplan in config file was ignored. Reported in #22 (11accf3)
|
||||||
|
- Fixed bug in _asdict() of severity level. (9817c99)
|
||||||
|
- Fix DomainBlock.id usage during __iter__() (a718af5)
|
||||||
|
|
||||||
## [0.4.0] - 2023-01-13
|
## [0.4.0] - 2023-01-13
|
||||||
|
|
||||||
Substantial changes to better support multiple blocklist formats
|
Substantial changes to better support multiple blocklist formats
|
||||||
|
@ -85,6 +121,8 @@ Substantial changes to better support multiple blocklist formats
|
||||||
[semantic versioning]: https://semver.org/spec/v2.0.0.html
|
[semantic versioning]: https://semver.org/spec/v2.0.0.html
|
||||||
|
|
||||||
<!-- Versions -->
|
<!-- Versions -->
|
||||||
[unreleased]: https://github.com/eigenmagic/fediblockhole/compare/v0.3.0...HEAD
|
[unreleased]: https://github.com/eigenmagic/fediblockhole/compare/v0.4.1...HEAD
|
||||||
[0.3.0]: https://github.com/eigenmagic/fediblockhole/releases/tag/v0.2.1
|
[0.4.1]: https://github.com/eigenmagic/fediblockhole/releases/tag/v0.4.1
|
||||||
|
[0.4.0]: https://github.com/eigenmagic/fediblockhole/releases/tag/v0.4.0
|
||||||
|
[0.3.0]: https://github.com/eigenmagic/fediblockhole/releases/tag/v0.3.0
|
||||||
[0.2.1]: https://github.com/eigenmagic/fediblockhole/releases/tag/v0.2.1
|
[0.2.1]: https://github.com/eigenmagic/fediblockhole/releases/tag/v0.2.1
|
|
@ -21,6 +21,13 @@ blocklist_url_sources = [
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
## These global allowlists override blocks from blocklists
|
||||||
|
# These are the same format and structure as blocklists, but they take precedence
|
||||||
|
allowlist_url_sources = [
|
||||||
|
{ url = 'https://raw.githubusercontent.com/eigenmagic/fediblockhole/main/samples/demo-allowlist-01.csv', format = 'csv' },
|
||||||
|
{ url = 'https://raw.githubusercontent.com/eigenmagic/fediblockhole/main/samples/demo-allowlist-02.csv', format = 'csv' },
|
||||||
|
]
|
||||||
|
|
||||||
# List of instances to write blocklist to
|
# List of instances to write blocklist to
|
||||||
blocklist_instance_destinations = [
|
blocklist_instance_destinations = [
|
||||||
# { domain = 'eigenmagic.net', token = '<read_write_token>', max_followed_severity = 'silence'},
|
# { domain = 'eigenmagic.net', token = '<read_write_token>', max_followed_severity = 'silence'},
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
"domain","severity","private_comment","public_comment","reject_media","reject_reports","obfuscate"
|
||||||
|
"eigenmagic.net","noop","Never block me","Only the domain field matters",False,False,False
|
||||||
|
"example.org","noop","Never block me either","The severity is ignored as are all other fields",False,False,False
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
"domain","private_comment"
|
||||||
|
"example.org","The private comment won't get loaded, but can be handy to leave yourself a note."
|
|
|
@ -13,7 +13,7 @@ def test_cmdline_allow_removes_domain():
|
||||||
|
|
||||||
merged = {
|
merged = {
|
||||||
'example.org': DomainBlock('example.org'),
|
'example.org': DomainBlock('example.org'),
|
||||||
'example2.org': DomainBlock('example.org'),
|
'example2.org': DomainBlock('example2.org'),
|
||||||
'removeme.org': DomainBlock('removeme.org'),
|
'removeme.org': DomainBlock('removeme.org'),
|
||||||
'keepblockingme.org': DomainBlock('keepblockingme.org'),
|
'keepblockingme.org': DomainBlock('keepblockingme.org'),
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ def test_allowlist_removes_domain():
|
||||||
|
|
||||||
merged = {
|
merged = {
|
||||||
'example.org': DomainBlock('example.org'),
|
'example.org': DomainBlock('example.org'),
|
||||||
'example2.org': DomainBlock('example.org'),
|
'example2.org': DomainBlock('example2.org'),
|
||||||
'removeme.org': DomainBlock('removeme.org'),
|
'removeme.org': DomainBlock('removeme.org'),
|
||||||
'keepblockingme.org': DomainBlock('keepblockingme.org'),
|
'keepblockingme.org': DomainBlock('keepblockingme.org'),
|
||||||
}
|
}
|
||||||
|
@ -47,3 +47,30 @@ def test_allowlist_removes_domain():
|
||||||
|
|
||||||
with pytest.raises(KeyError):
|
with pytest.raises(KeyError):
|
||||||
merged['removeme.org']
|
merged['removeme.org']
|
||||||
|
|
||||||
|
def test_allowlist_removes_tld():
|
||||||
|
"""Test that an item in an allowlist removes entries from merged
|
||||||
|
"""
|
||||||
|
conf = shim_argparse()
|
||||||
|
|
||||||
|
merged = {
|
||||||
|
'.cf': DomainBlock('.cf'),
|
||||||
|
'example.org': DomainBlock('example.org'),
|
||||||
|
'.tk': DomainBlock('.tk'),
|
||||||
|
'keepblockingme.org': DomainBlock('keepblockingme.org'),
|
||||||
|
}
|
||||||
|
|
||||||
|
allowlists = {
|
||||||
|
'list1': [
|
||||||
|
DomainBlock('.cf', 'noop'),
|
||||||
|
DomainBlock('.tk', 'noop'),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
merged = apply_allowlists(merged, conf, allowlists)
|
||||||
|
|
||||||
|
with pytest.raises(KeyError):
|
||||||
|
merged['.cf']
|
||||||
|
|
||||||
|
with pytest.raises(KeyError):
|
||||||
|
merged['.tk']
|
Loading…
Reference in New Issue