5.6 KiB
Brew Server Blocklist
Friendica publishes the server wide blocklists for other servers in the Fediverse. This script will collect the blocklists of servers of your choice and create a merged blocklist from them that you can then import into your own Friendica server.
To make certain that you don't block just any instance in the Fediverse because $somebody has it on their blocklist you assign trust levels to the correctness of the blocklists of the other servers. Only when a server is blocked with a total trust level that is above a confidence level, it will be added to resulting blocklist automatically. Otherwise the user will be ask if they want to add a node to their blocklist or not.
Config file
To use the script you have to create a config file. The structure of the file is the following
[soc1.example.com]
trust = 40
[soc2.example.com]
trust = 50
[soc3.example.com]
trust = 50
[soc4.example.com]
trust = 90
it assigns trust values to nodes in the network. The node domain names
are given in the []
. These are the nodes that the script will collect
the server blocklists from.
Trust levels can be negative. Once their summed value does reach a value of 100 the blocklist entry is trusted automatically without user interaction.
Installation
You can install the script with pipx by running
pipx install git+https://git.friendi.ca/tobias/brewserverblocklist.git
Assuming pipx was installed correctly the script brewserverblocklist
is now
available on your system (or for your user) to be executed.
Usage
Creating a config file
Before you can use the script, you have to define a configuration file. For details of the format of the file, see the section above. You might want to enter your own Friendica node and assigning it a trust value of 100.
Trust values can have negative values. If you know an admin that has the opposite preference on their blocklist, you can add their node and assign a trust value of -100 to it.
An example config file (lets call it test.config
) might look like:
[myfriendicanode.com]
trust = 100
[coolnode.net]
trust = 60
[nicenode.net]
trust = 40
[othernicenode.com]
trust = 30
[bullshitnode.com]
trust = -50
You can also add a list of protected nodes to the config file. To do so add a
section [safe harbor]
to the config file. This section has only one entry
called domains
and the value of this entry is a comma separated list of domains
that should never get on your blocklist.
For example
[safe harbor]
domains = friendica.example.com
Running the script
You have to supply the file name of the configuration file on the command
line when you run the script. This is done using the -c
parameter.
The script will then collect all the blocklists from the Friendica nodes in the configuration file and merge the lists. While merging, each entry in the combined blocklist is assigned a trust value that is equal to the trust values of the node that have the entry in their blocklist.
Say coolnode.net
and othernicenode.com
both have example.com
on their
blocklists. Their combined trust level to block the node would be 60 + 30 = 90
.
This combined value is compared to the confidence level that by default is 100.
In this example example.com
has a lower combined trust level then the confidence
level - so the script will ask you about your opinion - do you want to include the
entry in your new blocklist or not.
Another node is on the blocklists of coolnode.net
and nicenode.net
thus has
a combined trust level of 100 which is equal to the confidence level. So the
script will automatically assume that this node should be included on the new
blocklist.
If you and the admin of bullshitnode.com
both add a node on the blocklist the
combined trust level for automatically blocking it would be 50
.
Other parameters
-o filename
will cause the script to write the list into the passed file-C N
will set the confidence level to the value N-y
and-n
activate the auto-mode of the script, either accepting or discarding all entries to the blocklist with a trust level smaller then the confidence level
Author
- Tobias Diekershoff <tobias(dot)diekershoff(att)gmx(dot)net>
LICENSE
berewserverblocklist Copyright (C) 2023 Tobias Diekershoff
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License along
with this program. If not, see <http://www.gnu.org/licenses/>.
REUSE compliance
This project uses REUSE to ensure that all components are release under a FLOSS compatible license. If you contribute to the project, please ensure that your contribution is REUSE compliant.
This can be done by adding the following to your .git/hooks/pre-commit
hook.
#!/usr/bin/env bash
reuse lint
Credits
brewserverblocklist
was created with cookiecutter
and the py-pkgs-cookiecutter
template.