A proxy to forward messages received via HTTP to to IRC
Project description
A proxy that receives text messages via JSON over HTTP and shows them on IRC.
Based on syslog2IRC.
- Copyright:
2007-2021 Jochen Kupperschmidt
- License:
MIT, see LICENSE for details.
Code Status
Requirements
Installation
Weitersager and its dependencies can be installed via pip:
$ pip install weitersager
Usage
Start Weitersager with a configuration file:
$ weitersager example.toml
Configuration
An example configuration file, example.toml, in TOML format:
[http]
host = "127.0.0.1" # optional
port = 8080 # optional
api_tokens = [ "123xyz" ] # optional
[irc.server]
host = "irc.server.example"
port = 6667 # optional
password = "secret" # optional
rate_limit = 0.5 # optional; limit of messages per second
[irc.bot]
nickname = "Weitersager"
realname = "Weitersager" # optional
[irc]
channels = [
{ name = "#party" },
{ name = "#secretlab", password = "555-secret" },
]
IRC Dummy Mode
If no value for irc.server.host is set, Weitersager will not attempt to connect to an IRC server and start in IRC dummy mode. It will still accept messages, but it will write them to STDOUT. This can be useful for testing.
HTTP API
To send messages to IRC, send an HTTP POST request to URL path / at the address and port the application is listening on.
The body has to be in JSON format and contain two keys, channel and text, with string values:
{
"channel": "#party",
"text": "Oh yeah!"
}
Example HTTPie call to send a message to Weitersager on localhost, port 8080:
$ http --json post :8080 channel='#party' text='Oh yeah!'
Implementation Details
A Note on Threads
This tool uses threads. Besides the main thread, there are two additional threads: one for the message receiver and one for the IRC bot. Both are configured to be daemon threads.
The dummy bot, on the other hand, does not run in a thread.
A Python application exits if no more non-daemon threads are running.
The user has to manually interrupt the application to exit.
For details, see the documentation on the threading module that is part of Python’s standard library.
Weitersager Changelog
Version 0.5
Released 2021-02-07
Added support for Python 3.9.
Added support for SSL connections to IRC servers.
Changed prefix of authorization header value from WTRSGR to less awkward Token.
Removed handler to shut down Weitersager via private IRC message. It doesn’t provide enough relevant value.
Added command line option --version to show Weitersager’s version.
Updated rtoml to 0.5.0 (from 0.4.0).
Include tests and other useful files in source distribution archive.
Version 0.4
Released 2020-10-11
Added command line tool to generate secure tokens (which can be used as API tokens).
Allow to configure a rate limit for the IRC connection, i.e. the maximum number of messages per second to send. This can prevent the bot from getting kicked (or even banned) from a channel because of flooding.
Added exemplary Dockerfile.
Added type hints.
Updated rtoml to 0.4.0 (from 0.3.0).
Version 0.3
Released 2020-09-16
Introduced TOML-based configuration file.
Added dependency on rtoml 0.3.0.
Moved IRC channel configuration from Python code to configuration file.
Moved IRC server and bot name configuration from command line arguments to configuration file.
Moved HTTP receiver configuration from command line arguments to configuration file.
Made configuration filename a required command line argument.
Turned the stray run script into an actual entry point console script.
Added support for IRC server password.
Added optional HTTP authorization via API tokens.
Version 0.2
Released 2020-09-13
Raised minimum Python version to 3.7.
HTTP protocol was changed:
Only a single channel is allowed per message.
Response code for successful submit was changed from 200 (OK) to more appropriate 202 (Accepted).
Divided code base into separate modules in a package.
Switch to a src/ layout.
Dependency versions have been pinned.
Updated irc version to 19.0.1 (from 12.3).
Updated blinker to 1.4 (from 1.3).
Do not use tox for tests anymore.
Use dataclass instead of namedtuple for value objects.
Allowed for custom shutdown predicate.
Version 0.1
Released 2015-04-24 at LANresort 2015
First official release
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
Built Distribution
Hashes for Weitersager-0.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42f9131e661e84e98e8de41ed614266f50d58bd115aa4d2bd3cec85da10eed7f |
|
MD5 | cedaca9d0bc1be450d5bb28fa18f2bbf |
|
BLAKE2b-256 | a799f0ddfb4ec5139a93f4dbd8559a15d1dcd984f1e40b96479a6503aa7c1e41 |