Files
bouncer/config/bouncer.example.toml
user c11bd5555a feat: channel key support for +k channels
Add channel_keys dict to NetworkConfig for storing per-channel keys.
Keys are used in KICK rejoin, passed via AUTOJOIN +#channel key syntax,
supported in ADDNETWORK channel_keys= parameter, and propagated through
REHASH. Extract rehash() as reusable async function for SIGHUP reuse.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 19:03:23 +01:00

60 lines
2.0 KiB
TOML

[bouncer]
bind = "127.0.0.1"
port = 6667
password = "changeme"
# Client TLS -- encrypt client-to-bouncer connections
# client_tls = false # enable TLS for client listener
# client_tls_cert = "" # path to PEM cert (auto-generated if empty)
# client_tls_key = "" # path to PEM key (or same file as cert)
# PING watchdog -- detect stale server connections
# ping_interval = 120 # seconds of silence before sending PING
# ping_timeout = 30 # seconds to wait for PONG after PING
# Push notifications -- alerts when no clients are attached
# notify_url = "" # ntfy or webhook URL (empty = disabled)
# notify_on_highlight = true
# notify_on_privmsg = true
# notify_cooldown = 60 # min seconds between notifications
# notify_proxy = false # route notifications through SOCKS5
# Background account farming -- grow a pool of verified accounts
# farm_enabled = false # enable background registration
# farm_interval = 3600 # seconds between attempts per network
# farm_max_accounts = 10 # max verified accounts per network
[bouncer.backlog]
max_messages = 10000
replay_on_connect = true
[proxy]
host = "127.0.0.1"
port = 1080
# Client PASS is just the password (no network prefix).
# A single client connection sees all networks via /network suffixes:
# #libera/libera, #debian/oftc, user123/libera
#
# Registration uses a random nick and generic ident/realname.
# After surviving the probation window (no k-line), the bouncer
# derives a stable nick from the exit endpoint hostname. The same
# exit IP always produces the same nick across reconnects.
# Set nick to override (optional, used as fallback only).
# Network names must not contain '/' (reserved for namespace separator).
[networks.libera]
host = "irc.libera.chat"
port = 6697
tls = true
# nick = "mynick" # optional: override host-derived nick
channels = ["#test"]
# channel_keys = { "#secret" = "hunter2" } # keys for +k channels
autojoin = true
# [networks.oftc]
# host = "irc.oftc.net"
# port = 6697
# tls = true
# channels = ["#debian"]