Skip to main content

A framework to automate reacting to ActivityStreams events.

Project description

Mechanical Bull

Mechanical Bull is an ActivityPub Client application build based on bovine. It's main goal is to provide a platform for automating activities undertaking in the FediVerse. Furthermore, it serves as a demonstration how ActivityPub Clients can be build with bovine.

Installation

One can simply install mechanical_bull with pip via

pip install mechanical-bull

Once can then add a new user by running

python -m mechanical_bull.add_user [--accept] name hostname

This will then prompt you to add a new did:key to your ActivityPub Actor. This did:key will be used to authenticate mechanical_bull against your server. Once you have added the key, press enter, and mechanical_bull is running. This method of authentication is called Moo-Auth-1 and described here.

The configuration is saved in config.toml. bovine also supports authentication through private keys and HTTP signatures. For the details on how to configure this, please consult bovine. You can add further automations there.

Then you should be able to run mechanical bull via

python -m mechanical_bull.run

Configuration

First by adding log_file = "mechanical_bull.log" to your config.toml you can make mechanical_bull write log entries to a file. Second, the config file has the following format

logfile = "mechanical_bull.log"

[cow]
private_key = "z3u2Yxcowsarethebestcowsarethebestcowsarethebest"
host = "cows.rocks"

[cow.handlers]
"mechanical_bull.actions.reject_follow_request" = true
# "mechanical_bull.actions.accept_follow_request" = true
"mechanical_bull.actions.log_to_file" = { filename = "cow.txt" }

The listed handlers are provided by mechanical_bull. They allow to accept / reject follow requests automatically, and the final one logs all traffic on the event source to "cow.txt".

Writing automations

The examples of mechanical_bull.actions.accept_follow_request and mechanical_bull.actions.log_to_file should show how to write a new automation. The basic idea is that each file contains a function handle with signature

async def handle(client: BovineClient, data: dict, **kwargs):
    return

here the kwargs are the dict given by the definiton in the handler block, i.e.

[user.handlers]
"my.package" = { arg1 = "value1", arg2 = "value2 }

Contibuting

Please report bugs, etc. to the issue tracker. Contributings in the form of pull requests are welcome. You can also contact me on the FediVerse at @helge@mymath.rocks.

Finally, I plan a multi-user "server" version of this project called mechanical_herd. The functionality should be similar, but updating the configuration should not require a restart. One might also think hooking into the redis from bovine_pubsub for this. mechanical_herd will probably be part of the bovine user management interface.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mechanical_bull-0.2.3.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

mechanical_bull-0.2.3-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file mechanical_bull-0.2.3.tar.gz.

File metadata

  • Download URL: mechanical_bull-0.2.3.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.3 Linux/6.1.0-0.deb11.6-amd64

File hashes

Hashes for mechanical_bull-0.2.3.tar.gz
Algorithm Hash digest
SHA256 71fed76681ec7687994d5f1d91b426b341c80954240a676e30fad37497c40eb4
MD5 d2a90af6b3324fc37105e7053e3c3fbf
BLAKE2b-256 3f8c9e77228bde3db7aebb3f8f2e3d8ea84c3ceca516a08cde2a47349f843163

See more details on using hashes here.

File details

Details for the file mechanical_bull-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: mechanical_bull-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.11.3 Linux/6.1.0-0.deb11.6-amd64

File hashes

Hashes for mechanical_bull-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 af0adc56e5eba7d5256ed3365636a281d31cbaf24ce32d146bf0f9807a907fbf
MD5 de02a6d4033431a4232d3fd88f099acc
BLAKE2b-256 3e01237040a8a32081d0dcc4368428cb83a91a79d94ea94995bb230fc41d5b03

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page