echo/modules
Jean aab64baf86
nickserv: log out the loser of a registration conflict
When a peer's registration wins a name a local session was logged into,
that session authenticated against a credential that no longer exists.
The node now clears its accountname (the ircd emits RPL_LOGGEDOUT) and
tells the user why. A new outbound channel lets the engine push these
services-initiated actions to the uplink from the gossip path, drained
by the link loop alongside incoming traffic.
2026-07-12 13:34:38 +00:00
..
chanserv chanserv: entrymsg, enforce, getkey, seen, clone, aop/sop/vop 2026-07-12 11:53:48 +00:00
nickserv nickserv: log out the loser of a registration conflict 2026-07-12 13:34:38 +00:00
protocol chanserv: entrymsg, enforce, getkey, seen, clone, aop/sop/vop 2026-07-12 11:53:48 +00:00
README.md Move the ChanServ MODE command into modules/chanserv/mode.rs 2026-07-12 10:46:27 +00:00

modules/

The pluggable parts of fedserv: one directory per protocol and per pseudoclient. The core (engine, event log, gossip, link loop) stays in ../src/.

modules/
  protocol/     ircd link protocols   (inspircd.rs)
  nickserv/     NickServ pseudoclient
  chanserv/     ChanServ pseudoclient

src/main.rs pulls each in with #[path = "../modules/..."], so crate paths stay flat (crate::proto, crate::nickserv, crate::chanserv).

Naming

A service directory holds its pseudoclient file plus, as commands are split out, one file per command: register.rs, mode.rs, etc.