Scaffold the federated services daemon
Protocol-agnostic core: a Protocol trait maps raw server-to-server lines to a normalized event/action model, so the engine never touches a raw line and a new ircd is one new module. Adds event-log state (state is a fold over the log) and a service framework. First protocol impl links to an InspIRCd (insp4) uplink — completes the CAPAB/SERVER handshake, bursts, and introduces NickServ.
This commit is contained in:
commit
f82ab0c70a
15 changed files with 890 additions and 0 deletions
28
README.md
Normal file
28
README.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# fedserv
|
||||
|
||||
A federated IRC services daemon in Rust. Protocol-agnostic core, InspIRCd link first.
|
||||
|
||||
Clean-room — inspired by the ideas behind modern event-log/gossip services, not
|
||||
derived from any project's source.
|
||||
|
||||
## Design
|
||||
|
||||
- **`proto/`** — the ircd link layer. A `Protocol` trait maps raw server-to-server
|
||||
lines to/from a normalized `NetEvent`/`NetAction` model. The engine never touches
|
||||
a raw line, so a new ircd = one new module. InspIRCd is the first.
|
||||
- **`engine/`** — the services engine: live network `state`, an `EventLog` (every
|
||||
persistent change is an `Event`; state is a fold over the log — this is what makes
|
||||
replicating across nodes a later addition, not a rewrite), and the `Service` trait.
|
||||
- **`services/`** — the pseudo-clients: NickServ first, then ChanServ / OperServ / …
|
||||
|
||||
## Run
|
||||
|
||||
```sh
|
||||
cp config.example.toml config.toml # edit uplink + link password
|
||||
cargo run -- config.toml
|
||||
```
|
||||
|
||||
## Status
|
||||
|
||||
Early scaffold: links to an InspIRCd uplink and introduces NickServ. Burst/mode
|
||||
handling and account persistence are next.
|
||||
Loading…
Add table
Add a link
Reference in a new issue