From ad2a62312004d883defbf8f37ef601eeff9938d9 Mon Sep 17 00:00:00 2001 From: Jean Date: Tue, 14 Jul 2026 14:19:43 +0000 Subject: [PATCH] Group the module crates under modules/ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The service pseudo-clients and the ircd protocol link sat flat at the repo root, mixed in with the daemon core and the SDK. Move them all under modules/ so the tree separates concerns cleanly: the daemon in src/, the SDK every module links against in api/, and the loadable modules — the pseudo-clients plus the protocol link — in modules/. Workspace members, the daemon's per-crate dependency paths, and each module's api path are updated to match; the docs follow. No code change. --- Cargo.toml | 51 +++++++++++++------ MODULES.md | 14 ++--- README.md | 20 +++++--- {botserv => modules/botserv}/Cargo.toml | 2 +- {botserv => modules/botserv}/src/assign.rs | 0 {botserv => modules/botserv}/src/badwords.rs | 0 {botserv => modules/botserv}/src/bot.rs | 0 {botserv => modules/botserv}/src/copy.rs | 0 {botserv => modules/botserv}/src/info.rs | 0 {botserv => modules/botserv}/src/kick.rs | 0 {botserv => modules/botserv}/src/lib.rs | 0 {botserv => modules/botserv}/src/say.rs | 0 {botserv => modules/botserv}/src/set.rs | 0 {botserv => modules/botserv}/src/trigger.rs | 0 {chanfix => modules/chanfix}/Cargo.toml | 2 +- {chanfix => modules/chanfix}/src/lib.rs | 0 {chanserv => modules/chanserv}/Cargo.toml | 2 +- {chanserv => modules/chanserv}/src/access.rs | 0 {chanserv => modules/chanserv}/src/akick.rs | 0 {chanserv => modules/chanserv}/src/ban.rs | 0 {chanserv => modules/chanserv}/src/clone.rs | 0 {chanserv => modules/chanserv}/src/enforce.rs | 0 .../chanserv}/src/entrymsg.rs | 0 {chanserv => modules/chanserv}/src/flags.rs | 0 {chanserv => modules/chanserv}/src/getkey.rs | 0 {chanserv => modules/chanserv}/src/invite.rs | 0 {chanserv => modules/chanserv}/src/kick.rs | 0 {chanserv => modules/chanserv}/src/lib.rs | 0 {chanserv => modules/chanserv}/src/list.rs | 0 {chanserv => modules/chanserv}/src/mode.rs | 0 .../chanserv}/src/noexpire.rs | 0 {chanserv => modules/chanserv}/src/op.rs | 0 {chanserv => modules/chanserv}/src/seen.rs | 0 {chanserv => modules/chanserv}/src/set.rs | 0 {chanserv => modules/chanserv}/src/status.rs | 0 {chanserv => modules/chanserv}/src/suspend.rs | 0 {chanserv => modules/chanserv}/src/topic.rs | 0 {chanserv => modules/chanserv}/src/unban.rs | 0 {chanserv => modules/chanserv}/src/xop.rs | 0 {diceserv => modules/diceserv}/Cargo.toml | 2 +- {diceserv => modules/diceserv}/src/expr.rs | 0 {diceserv => modules/diceserv}/src/lib.rs | 0 {example => modules/example}/Cargo.toml | 2 +- {example => modules/example}/src/lib.rs | 0 {groupserv => modules/groupserv}/Cargo.toml | 2 +- {groupserv => modules/groupserv}/src/lib.rs | 0 {helpserv => modules/helpserv}/Cargo.toml | 2 +- {helpserv => modules/helpserv}/src/lib.rs | 0 {hostserv => modules/hostserv}/Cargo.toml | 2 +- {hostserv => modules/hostserv}/src/approve.rs | 0 {hostserv => modules/hostserv}/src/default.rs | 0 {hostserv => modules/hostserv}/src/del.rs | 0 {hostserv => modules/hostserv}/src/forbid.rs | 0 {hostserv => modules/hostserv}/src/lib.rs | 0 {hostserv => modules/hostserv}/src/list.rs | 0 {hostserv => modules/hostserv}/src/off.rs | 0 {hostserv => modules/hostserv}/src/offer.rs | 0 {hostserv => modules/hostserv}/src/on.rs | 0 {hostserv => modules/hostserv}/src/request.rs | 0 {hostserv => modules/hostserv}/src/set.rs | 0 {hostserv => modules/hostserv}/src/take.rs | 0 .../hostserv}/src/template.rs | 0 {hostserv => modules/hostserv}/src/waiting.rs | 0 {infoserv => modules/infoserv}/Cargo.toml | 2 +- {infoserv => modules/infoserv}/src/lib.rs | 0 {inspircd => modules/inspircd}/Cargo.toml | 2 +- {inspircd => modules/inspircd}/src/lib.rs | 0 {memoserv => modules/memoserv}/Cargo.toml | 2 +- {memoserv => modules/memoserv}/src/del.rs | 0 {memoserv => modules/memoserv}/src/lib.rs | 0 {memoserv => modules/memoserv}/src/list.rs | 0 {memoserv => modules/memoserv}/src/read.rs | 0 {memoserv => modules/memoserv}/src/send.rs | 0 {nickserv => modules/nickserv}/Cargo.toml | 2 +- {nickserv => modules/nickserv}/src/ajoin.rs | 0 {nickserv => modules/nickserv}/src/alist.rs | 0 {nickserv => modules/nickserv}/src/cert.rs | 0 {nickserv => modules/nickserv}/src/confirm.rs | 0 {nickserv => modules/nickserv}/src/drop.rs | 0 {nickserv => modules/nickserv}/src/ghost.rs | 0 {nickserv => modules/nickserv}/src/glist.rs | 0 {nickserv => modules/nickserv}/src/group.rs | 0 .../nickserv}/src/identify.rs | 0 {nickserv => modules/nickserv}/src/info.rs | 0 {nickserv => modules/nickserv}/src/lib.rs | 0 {nickserv => modules/nickserv}/src/logout.rs | 0 .../nickserv}/src/noexpire.rs | 0 .../nickserv}/src/password.rs | 0 .../nickserv}/src/register.rs | 0 .../nickserv}/src/resetpass.rs | 0 {nickserv => modules/nickserv}/src/set.rs | 0 {nickserv => modules/nickserv}/src/suspend.rs | 0 {nickserv => modules/nickserv}/src/ungroup.rs | 0 {operserv => modules/operserv}/Cargo.toml | 2 +- .../operserv}/src/chankill.rs | 0 {operserv => modules/operserv}/src/defcon.rs | 0 {operserv => modules/operserv}/src/global.rs | 0 {operserv => modules/operserv}/src/ignore.rs | 0 {operserv => modules/operserv}/src/info.rs | 0 {operserv => modules/operserv}/src/jupe.rs | 0 {operserv => modules/operserv}/src/kick.rs | 0 {operserv => modules/operserv}/src/kill.rs | 0 {operserv => modules/operserv}/src/lib.rs | 0 .../operserv}/src/logsearch.rs | 0 {operserv => modules/operserv}/src/mode.rs | 0 {operserv => modules/operserv}/src/oper.rs | 0 {operserv => modules/operserv}/src/session.rs | 0 {operserv => modules/operserv}/src/stats.rs | 0 {operserv => modules/operserv}/src/svs.rs | 0 {operserv => modules/operserv}/src/xline.rs | 0 {reportserv => modules/reportserv}/Cargo.toml | 2 +- {reportserv => modules/reportserv}/src/lib.rs | 0 {statserv => modules/statserv}/Cargo.toml | 2 +- {statserv => modules/statserv}/src/channel.rs | 0 {statserv => modules/statserv}/src/global.rs | 0 {statserv => modules/statserv}/src/lib.rs | 0 116 files changed, 69 insertions(+), 46 deletions(-) rename {botserv => modules/botserv}/Cargo.toml (81%) rename {botserv => modules/botserv}/src/assign.rs (100%) rename {botserv => modules/botserv}/src/badwords.rs (100%) rename {botserv => modules/botserv}/src/bot.rs (100%) rename {botserv => modules/botserv}/src/copy.rs (100%) rename {botserv => modules/botserv}/src/info.rs (100%) rename {botserv => modules/botserv}/src/kick.rs (100%) rename {botserv => modules/botserv}/src/lib.rs (100%) rename {botserv => modules/botserv}/src/say.rs (100%) rename {botserv => modules/botserv}/src/set.rs (100%) rename {botserv => modules/botserv}/src/trigger.rs (100%) rename {chanfix => modules/chanfix}/Cargo.toml (82%) rename {chanfix => modules/chanfix}/src/lib.rs (100%) rename {chanserv => modules/chanserv}/Cargo.toml (81%) rename {chanserv => modules/chanserv}/src/access.rs (100%) rename {chanserv => modules/chanserv}/src/akick.rs (100%) rename {chanserv => modules/chanserv}/src/ban.rs (100%) rename {chanserv => modules/chanserv}/src/clone.rs (100%) rename {chanserv => modules/chanserv}/src/enforce.rs (100%) rename {chanserv => modules/chanserv}/src/entrymsg.rs (100%) rename {chanserv => modules/chanserv}/src/flags.rs (100%) rename {chanserv => modules/chanserv}/src/getkey.rs (100%) rename {chanserv => modules/chanserv}/src/invite.rs (100%) rename {chanserv => modules/chanserv}/src/kick.rs (100%) rename {chanserv => modules/chanserv}/src/lib.rs (100%) rename {chanserv => modules/chanserv}/src/list.rs (100%) rename {chanserv => modules/chanserv}/src/mode.rs (100%) rename {chanserv => modules/chanserv}/src/noexpire.rs (100%) rename {chanserv => modules/chanserv}/src/op.rs (100%) rename {chanserv => modules/chanserv}/src/seen.rs (100%) rename {chanserv => modules/chanserv}/src/set.rs (100%) rename {chanserv => modules/chanserv}/src/status.rs (100%) rename {chanserv => modules/chanserv}/src/suspend.rs (100%) rename {chanserv => modules/chanserv}/src/topic.rs (100%) rename {chanserv => modules/chanserv}/src/unban.rs (100%) rename {chanserv => modules/chanserv}/src/xop.rs (100%) rename {diceserv => modules/diceserv}/Cargo.toml (84%) rename {diceserv => modules/diceserv}/src/expr.rs (100%) rename {diceserv => modules/diceserv}/src/lib.rs (100%) rename {example => modules/example}/Cargo.toml (83%) rename {example => modules/example}/src/lib.rs (100%) rename {groupserv => modules/groupserv}/Cargo.toml (83%) rename {groupserv => modules/groupserv}/src/lib.rs (100%) rename {helpserv => modules/helpserv}/Cargo.toml (82%) rename {helpserv => modules/helpserv}/src/lib.rs (100%) rename {hostserv => modules/hostserv}/Cargo.toml (80%) rename {hostserv => modules/hostserv}/src/approve.rs (100%) rename {hostserv => modules/hostserv}/src/default.rs (100%) rename {hostserv => modules/hostserv}/src/del.rs (100%) rename {hostserv => modules/hostserv}/src/forbid.rs (100%) rename {hostserv => modules/hostserv}/src/lib.rs (100%) rename {hostserv => modules/hostserv}/src/list.rs (100%) rename {hostserv => modules/hostserv}/src/off.rs (100%) rename {hostserv => modules/hostserv}/src/offer.rs (100%) rename {hostserv => modules/hostserv}/src/on.rs (100%) rename {hostserv => modules/hostserv}/src/request.rs (100%) rename {hostserv => modules/hostserv}/src/set.rs (100%) rename {hostserv => modules/hostserv}/src/take.rs (100%) rename {hostserv => modules/hostserv}/src/template.rs (100%) rename {hostserv => modules/hostserv}/src/waiting.rs (100%) rename {infoserv => modules/infoserv}/Cargo.toml (83%) rename {infoserv => modules/infoserv}/src/lib.rs (100%) rename {inspircd => modules/inspircd}/Cargo.toml (81%) rename {inspircd => modules/inspircd}/src/lib.rs (100%) rename {memoserv => modules/memoserv}/Cargo.toml (81%) rename {memoserv => modules/memoserv}/src/del.rs (100%) rename {memoserv => modules/memoserv}/src/lib.rs (100%) rename {memoserv => modules/memoserv}/src/list.rs (100%) rename {memoserv => modules/memoserv}/src/read.rs (100%) rename {memoserv => modules/memoserv}/src/send.rs (100%) rename {nickserv => modules/nickserv}/Cargo.toml (81%) rename {nickserv => modules/nickserv}/src/ajoin.rs (100%) rename {nickserv => modules/nickserv}/src/alist.rs (100%) rename {nickserv => modules/nickserv}/src/cert.rs (100%) rename {nickserv => modules/nickserv}/src/confirm.rs (100%) rename {nickserv => modules/nickserv}/src/drop.rs (100%) rename {nickserv => modules/nickserv}/src/ghost.rs (100%) rename {nickserv => modules/nickserv}/src/glist.rs (100%) rename {nickserv => modules/nickserv}/src/group.rs (100%) rename {nickserv => modules/nickserv}/src/identify.rs (100%) rename {nickserv => modules/nickserv}/src/info.rs (100%) rename {nickserv => modules/nickserv}/src/lib.rs (100%) rename {nickserv => modules/nickserv}/src/logout.rs (100%) rename {nickserv => modules/nickserv}/src/noexpire.rs (100%) rename {nickserv => modules/nickserv}/src/password.rs (100%) rename {nickserv => modules/nickserv}/src/register.rs (100%) rename {nickserv => modules/nickserv}/src/resetpass.rs (100%) rename {nickserv => modules/nickserv}/src/set.rs (100%) rename {nickserv => modules/nickserv}/src/suspend.rs (100%) rename {nickserv => modules/nickserv}/src/ungroup.rs (100%) rename {operserv => modules/operserv}/Cargo.toml (82%) rename {operserv => modules/operserv}/src/chankill.rs (100%) rename {operserv => modules/operserv}/src/defcon.rs (100%) rename {operserv => modules/operserv}/src/global.rs (100%) rename {operserv => modules/operserv}/src/ignore.rs (100%) rename {operserv => modules/operserv}/src/info.rs (100%) rename {operserv => modules/operserv}/src/jupe.rs (100%) rename {operserv => modules/operserv}/src/kick.rs (100%) rename {operserv => modules/operserv}/src/kill.rs (100%) rename {operserv => modules/operserv}/src/lib.rs (100%) rename {operserv => modules/operserv}/src/logsearch.rs (100%) rename {operserv => modules/operserv}/src/mode.rs (100%) rename {operserv => modules/operserv}/src/oper.rs (100%) rename {operserv => modules/operserv}/src/session.rs (100%) rename {operserv => modules/operserv}/src/stats.rs (100%) rename {operserv => modules/operserv}/src/svs.rs (100%) rename {operserv => modules/operserv}/src/xline.rs (100%) rename {reportserv => modules/reportserv}/Cargo.toml (81%) rename {reportserv => modules/reportserv}/src/lib.rs (100%) rename {statserv => modules/statserv}/Cargo.toml (82%) rename {statserv => modules/statserv}/src/channel.rs (100%) rename {statserv => modules/statserv}/src/global.rs (100%) rename {statserv => modules/statserv}/src/lib.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 2888e5d..2e8a3bb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,24 @@ [workspace] -members = ["api", "inspircd", "chanserv", "nickserv", "example", "botserv", "memoserv", "statserv", "hostserv", "operserv", "diceserv", "infoserv", "reportserv", "groupserv", "chanfix", "helpserv"] +# api is the SDK every module links against; the loadable modules — the service +# pseudo-clients and the ircd protocol link — live under modules/. +members = [ + "api", + "modules/inspircd", + "modules/chanserv", + "modules/nickserv", + "modules/example", + "modules/botserv", + "modules/memoserv", + "modules/statserv", + "modules/hostserv", + "modules/operserv", + "modules/diceserv", + "modules/infoserv", + "modules/reportserv", + "modules/groupserv", + "modules/chanfix", + "modules/helpserv", +] [package] name = "fedserv" @@ -9,21 +28,21 @@ description = "Federated IRC services daemon (protocol-agnostic core, InspIRCd l [dependencies] fedserv-api = { path = "api" } -fedserv-inspircd = { path = "inspircd" } -fedserv-chanserv = { path = "chanserv" } -fedserv-nickserv = { path = "nickserv" } -fedserv-example = { path = "example" } -fedserv-botserv = { path = "botserv" } -fedserv-memoserv = { path = "memoserv" } -fedserv-statserv = { path = "statserv" } -fedserv-hostserv = { path = "hostserv" } -fedserv-operserv = { path = "operserv" } -fedserv-diceserv = { path = "diceserv" } -fedserv-infoserv = { path = "infoserv" } -fedserv-reportserv = { path = "reportserv" } -fedserv-groupserv = { path = "groupserv" } -fedserv-chanfix = { path = "chanfix" } -fedserv-helpserv = { path = "helpserv" } +fedserv-inspircd = { path = "modules/inspircd" } +fedserv-chanserv = { path = "modules/chanserv" } +fedserv-nickserv = { path = "modules/nickserv" } +fedserv-example = { path = "modules/example" } +fedserv-botserv = { path = "modules/botserv" } +fedserv-memoserv = { path = "modules/memoserv" } +fedserv-statserv = { path = "modules/statserv" } +fedserv-hostserv = { path = "modules/hostserv" } +fedserv-operserv = { path = "modules/operserv" } +fedserv-diceserv = { path = "modules/diceserv" } +fedserv-infoserv = { path = "modules/infoserv" } +fedserv-reportserv = { path = "modules/reportserv" } +fedserv-groupserv = { path = "modules/groupserv" } +fedserv-chanfix = { path = "modules/chanfix" } +fedserv-helpserv = { path = "modules/helpserv" } tokio = { version = "1", features = ["net", "io-util", "rt-multi-thread", "macros", "time", "sync", "process"] } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/MODULES.md b/MODULES.md index 9d12eab..081808b 100644 --- a/MODULES.md +++ b/MODULES.md @@ -11,22 +11,22 @@ There are two kinds of module. - A **service** (a pseudo-client like NickServ) implements `Service`. - A **protocol** (an ircd link like InspIRCd) implements `Protocol`. -Both live in their own crate under the workspace. `example/` is a complete, -minimal service to copy from; `inspircd/` is the reference protocol. +Both live in their own crate under `modules/`. `modules/example/` is a complete, +minimal service to copy from; `modules/inspircd/` is the reference protocol. ## A service, end to end **1. The crate.** One dependency: ```toml -# mymod/Cargo.toml +# modules/mymod/Cargo.toml [package] name = "fedserv-mymod" version = "0.0.1" edition = "2021" [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } ``` **2. The service.** A plain struct implementing `Service`: @@ -76,10 +76,10 @@ an IRC-originated one does — you do not write any replication code. ```toml # Cargo.toml [workspace] -members = [..., "mymod"] +members = [..., "modules/mymod"] [dependencies] -fedserv-mymod = { path = "mymod" } +fedserv-mymod = { path = "modules/mymod" } ``` Construct it in `src/main.rs` alongside the others, behind its config name: @@ -107,7 +107,7 @@ ignored. A protocol crate implements `Protocol`: it turns raw server-to-server lines into the normalized `NetEvent`s the engine understands, and turns the engine's `NetAction`s back into raw lines. The engine never sees a raw line, so supporting -another ircd is one new crate — see `inspircd/`. Wire it in `src/main.rs` where +another ircd is one new crate — see `modules/inspircd/`. Wire it in `src/main.rs` where `InspIrcd` is constructed. ## What the SDK deliberately does not give you diff --git a/README.md b/README.md index ca1cc5a..3a41ee9 100644 --- a/README.md +++ b/README.md @@ -20,16 +20,20 @@ workspace, each depending only on the `fedserv-api` SDK crate. through the `Store`/`NetView` traits, so the log, gossip and credential material stay out of a module's reach. - **`src/gossip.rs`** node-to-node replication over the logs. -- **`inspircd/`** (`fedserv-inspircd`) the ircd link layer. A `Protocol` impl maps - raw server-to-server lines to and from the normalized model, so the engine never - touches a raw line and a new ircd is one new crate. -- **`nickserv/`, `chanserv/`, `botserv/`, `memoserv/`, `statserv/`, `hostserv/`, - `operserv/`** the pseudo-clients, each a crate implementing `Service`. OperServ - holds the network-operator tools (AKILL network bans to start); the rest follow - the same shape. +- **`modules/`** the loadable modules, each its own crate depending only on the + `fedserv-api` SDK: + - **`modules/inspircd/`** (`fedserv-inspircd`) the ircd link layer. A `Protocol` + impl maps raw server-to-server lines to and from the normalized model, so the + engine never touches a raw line and a new ircd is one new crate. + - **`modules/nickserv/`, `modules/chanserv/`, `modules/botserv/`, + `modules/memoserv/`, `modules/statserv/`, `modules/hostserv/`, `modules/operserv/`** + and diceserv, infoserv, reportserv, groupserv, chanfix, helpserv — the + pseudo-clients, each a crate implementing `Service`. OperServ holds the + network-operator tools (AKILL network bans to start); the rest follow the same + shape. Writing your own module — a service or a new ircd protocol — is documented in -[MODULES.md](MODULES.md); `example/` is a minimal service to copy from. +[MODULES.md](MODULES.md); `modules/example/` is a minimal service to copy from. ## Replication diff --git a/botserv/Cargo.toml b/modules/botserv/Cargo.toml similarity index 81% rename from botserv/Cargo.toml rename to modules/botserv/Cargo.toml index f566044..a7a5ec2 100644 --- a/botserv/Cargo.toml +++ b/modules/botserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "BotServ: registers and manages service bots that sit in channels." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/botserv/src/assign.rs b/modules/botserv/src/assign.rs similarity index 100% rename from botserv/src/assign.rs rename to modules/botserv/src/assign.rs diff --git a/botserv/src/badwords.rs b/modules/botserv/src/badwords.rs similarity index 100% rename from botserv/src/badwords.rs rename to modules/botserv/src/badwords.rs diff --git a/botserv/src/bot.rs b/modules/botserv/src/bot.rs similarity index 100% rename from botserv/src/bot.rs rename to modules/botserv/src/bot.rs diff --git a/botserv/src/copy.rs b/modules/botserv/src/copy.rs similarity index 100% rename from botserv/src/copy.rs rename to modules/botserv/src/copy.rs diff --git a/botserv/src/info.rs b/modules/botserv/src/info.rs similarity index 100% rename from botserv/src/info.rs rename to modules/botserv/src/info.rs diff --git a/botserv/src/kick.rs b/modules/botserv/src/kick.rs similarity index 100% rename from botserv/src/kick.rs rename to modules/botserv/src/kick.rs diff --git a/botserv/src/lib.rs b/modules/botserv/src/lib.rs similarity index 100% rename from botserv/src/lib.rs rename to modules/botserv/src/lib.rs diff --git a/botserv/src/say.rs b/modules/botserv/src/say.rs similarity index 100% rename from botserv/src/say.rs rename to modules/botserv/src/say.rs diff --git a/botserv/src/set.rs b/modules/botserv/src/set.rs similarity index 100% rename from botserv/src/set.rs rename to modules/botserv/src/set.rs diff --git a/botserv/src/trigger.rs b/modules/botserv/src/trigger.rs similarity index 100% rename from botserv/src/trigger.rs rename to modules/botserv/src/trigger.rs diff --git a/chanfix/Cargo.toml b/modules/chanfix/Cargo.toml similarity index 82% rename from chanfix/Cargo.toml rename to modules/chanfix/Cargo.toml index c32b618..426f353 100644 --- a/chanfix/Cargo.toml +++ b/modules/chanfix/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "ChanFix: reop opless unregistered channels from accumulated op-time scores." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/chanfix/src/lib.rs b/modules/chanfix/src/lib.rs similarity index 100% rename from chanfix/src/lib.rs rename to modules/chanfix/src/lib.rs diff --git a/chanserv/Cargo.toml b/modules/chanserv/Cargo.toml similarity index 81% rename from chanserv/Cargo.toml rename to modules/chanserv/Cargo.toml index e663162..5979f1e 100644 --- a/chanserv/Cargo.toml +++ b/modules/chanserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "ChanServ channel-registration service module for fedserv." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/chanserv/src/access.rs b/modules/chanserv/src/access.rs similarity index 100% rename from chanserv/src/access.rs rename to modules/chanserv/src/access.rs diff --git a/chanserv/src/akick.rs b/modules/chanserv/src/akick.rs similarity index 100% rename from chanserv/src/akick.rs rename to modules/chanserv/src/akick.rs diff --git a/chanserv/src/ban.rs b/modules/chanserv/src/ban.rs similarity index 100% rename from chanserv/src/ban.rs rename to modules/chanserv/src/ban.rs diff --git a/chanserv/src/clone.rs b/modules/chanserv/src/clone.rs similarity index 100% rename from chanserv/src/clone.rs rename to modules/chanserv/src/clone.rs diff --git a/chanserv/src/enforce.rs b/modules/chanserv/src/enforce.rs similarity index 100% rename from chanserv/src/enforce.rs rename to modules/chanserv/src/enforce.rs diff --git a/chanserv/src/entrymsg.rs b/modules/chanserv/src/entrymsg.rs similarity index 100% rename from chanserv/src/entrymsg.rs rename to modules/chanserv/src/entrymsg.rs diff --git a/chanserv/src/flags.rs b/modules/chanserv/src/flags.rs similarity index 100% rename from chanserv/src/flags.rs rename to modules/chanserv/src/flags.rs diff --git a/chanserv/src/getkey.rs b/modules/chanserv/src/getkey.rs similarity index 100% rename from chanserv/src/getkey.rs rename to modules/chanserv/src/getkey.rs diff --git a/chanserv/src/invite.rs b/modules/chanserv/src/invite.rs similarity index 100% rename from chanserv/src/invite.rs rename to modules/chanserv/src/invite.rs diff --git a/chanserv/src/kick.rs b/modules/chanserv/src/kick.rs similarity index 100% rename from chanserv/src/kick.rs rename to modules/chanserv/src/kick.rs diff --git a/chanserv/src/lib.rs b/modules/chanserv/src/lib.rs similarity index 100% rename from chanserv/src/lib.rs rename to modules/chanserv/src/lib.rs diff --git a/chanserv/src/list.rs b/modules/chanserv/src/list.rs similarity index 100% rename from chanserv/src/list.rs rename to modules/chanserv/src/list.rs diff --git a/chanserv/src/mode.rs b/modules/chanserv/src/mode.rs similarity index 100% rename from chanserv/src/mode.rs rename to modules/chanserv/src/mode.rs diff --git a/chanserv/src/noexpire.rs b/modules/chanserv/src/noexpire.rs similarity index 100% rename from chanserv/src/noexpire.rs rename to modules/chanserv/src/noexpire.rs diff --git a/chanserv/src/op.rs b/modules/chanserv/src/op.rs similarity index 100% rename from chanserv/src/op.rs rename to modules/chanserv/src/op.rs diff --git a/chanserv/src/seen.rs b/modules/chanserv/src/seen.rs similarity index 100% rename from chanserv/src/seen.rs rename to modules/chanserv/src/seen.rs diff --git a/chanserv/src/set.rs b/modules/chanserv/src/set.rs similarity index 100% rename from chanserv/src/set.rs rename to modules/chanserv/src/set.rs diff --git a/chanserv/src/status.rs b/modules/chanserv/src/status.rs similarity index 100% rename from chanserv/src/status.rs rename to modules/chanserv/src/status.rs diff --git a/chanserv/src/suspend.rs b/modules/chanserv/src/suspend.rs similarity index 100% rename from chanserv/src/suspend.rs rename to modules/chanserv/src/suspend.rs diff --git a/chanserv/src/topic.rs b/modules/chanserv/src/topic.rs similarity index 100% rename from chanserv/src/topic.rs rename to modules/chanserv/src/topic.rs diff --git a/chanserv/src/unban.rs b/modules/chanserv/src/unban.rs similarity index 100% rename from chanserv/src/unban.rs rename to modules/chanserv/src/unban.rs diff --git a/chanserv/src/xop.rs b/modules/chanserv/src/xop.rs similarity index 100% rename from chanserv/src/xop.rs rename to modules/chanserv/src/xop.rs diff --git a/diceserv/Cargo.toml b/modules/diceserv/Cargo.toml similarity index 84% rename from diceserv/Cargo.toml rename to modules/diceserv/Cargo.toml index e91705e..bc5e0a6 100644 --- a/diceserv/Cargo.toml +++ b/modules/diceserv/Cargo.toml @@ -5,5 +5,5 @@ edition = "2021" description = "DiceServ: a dice-roll and math-expression service for tabletop games over IRC." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } rand = "0.8" diff --git a/diceserv/src/expr.rs b/modules/diceserv/src/expr.rs similarity index 100% rename from diceserv/src/expr.rs rename to modules/diceserv/src/expr.rs diff --git a/diceserv/src/lib.rs b/modules/diceserv/src/lib.rs similarity index 100% rename from diceserv/src/lib.rs rename to modules/diceserv/src/lib.rs diff --git a/example/Cargo.toml b/modules/example/Cargo.toml similarity index 83% rename from example/Cargo.toml rename to modules/example/Cargo.toml index 341a28c..8a93c32 100644 --- a/example/Cargo.toml +++ b/modules/example/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "A minimal example service module: the template a new pseudo-client is copied from." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/example/src/lib.rs b/modules/example/src/lib.rs similarity index 100% rename from example/src/lib.rs rename to modules/example/src/lib.rs diff --git a/groupserv/Cargo.toml b/modules/groupserv/Cargo.toml similarity index 83% rename from groupserv/Cargo.toml rename to modules/groupserv/Cargo.toml index 328052c..b7cb8aa 100644 --- a/groupserv/Cargo.toml +++ b/modules/groupserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "GroupServ: user groups (!name) whose members can be granted channel access together." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/groupserv/src/lib.rs b/modules/groupserv/src/lib.rs similarity index 100% rename from groupserv/src/lib.rs rename to modules/groupserv/src/lib.rs diff --git a/helpserv/Cargo.toml b/modules/helpserv/Cargo.toml similarity index 82% rename from helpserv/Cargo.toml rename to modules/helpserv/Cargo.toml index 48802df..881c9ed 100644 --- a/helpserv/Cargo.toml +++ b/modules/helpserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "HelpServ: a help-desk queue — users ask, operators take and answer." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/helpserv/src/lib.rs b/modules/helpserv/src/lib.rs similarity index 100% rename from helpserv/src/lib.rs rename to modules/helpserv/src/lib.rs diff --git a/hostserv/Cargo.toml b/modules/hostserv/Cargo.toml similarity index 80% rename from hostserv/Cargo.toml rename to modules/hostserv/Cargo.toml index d6c4e84..99ca5f5 100644 --- a/hostserv/Cargo.toml +++ b/modules/hostserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "HostServ: assign and apply virtual hosts (vhosts)." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/hostserv/src/approve.rs b/modules/hostserv/src/approve.rs similarity index 100% rename from hostserv/src/approve.rs rename to modules/hostserv/src/approve.rs diff --git a/hostserv/src/default.rs b/modules/hostserv/src/default.rs similarity index 100% rename from hostserv/src/default.rs rename to modules/hostserv/src/default.rs diff --git a/hostserv/src/del.rs b/modules/hostserv/src/del.rs similarity index 100% rename from hostserv/src/del.rs rename to modules/hostserv/src/del.rs diff --git a/hostserv/src/forbid.rs b/modules/hostserv/src/forbid.rs similarity index 100% rename from hostserv/src/forbid.rs rename to modules/hostserv/src/forbid.rs diff --git a/hostserv/src/lib.rs b/modules/hostserv/src/lib.rs similarity index 100% rename from hostserv/src/lib.rs rename to modules/hostserv/src/lib.rs diff --git a/hostserv/src/list.rs b/modules/hostserv/src/list.rs similarity index 100% rename from hostserv/src/list.rs rename to modules/hostserv/src/list.rs diff --git a/hostserv/src/off.rs b/modules/hostserv/src/off.rs similarity index 100% rename from hostserv/src/off.rs rename to modules/hostserv/src/off.rs diff --git a/hostserv/src/offer.rs b/modules/hostserv/src/offer.rs similarity index 100% rename from hostserv/src/offer.rs rename to modules/hostserv/src/offer.rs diff --git a/hostserv/src/on.rs b/modules/hostserv/src/on.rs similarity index 100% rename from hostserv/src/on.rs rename to modules/hostserv/src/on.rs diff --git a/hostserv/src/request.rs b/modules/hostserv/src/request.rs similarity index 100% rename from hostserv/src/request.rs rename to modules/hostserv/src/request.rs diff --git a/hostserv/src/set.rs b/modules/hostserv/src/set.rs similarity index 100% rename from hostserv/src/set.rs rename to modules/hostserv/src/set.rs diff --git a/hostserv/src/take.rs b/modules/hostserv/src/take.rs similarity index 100% rename from hostserv/src/take.rs rename to modules/hostserv/src/take.rs diff --git a/hostserv/src/template.rs b/modules/hostserv/src/template.rs similarity index 100% rename from hostserv/src/template.rs rename to modules/hostserv/src/template.rs diff --git a/hostserv/src/waiting.rs b/modules/hostserv/src/waiting.rs similarity index 100% rename from hostserv/src/waiting.rs rename to modules/hostserv/src/waiting.rs diff --git a/infoserv/Cargo.toml b/modules/infoserv/Cargo.toml similarity index 83% rename from infoserv/Cargo.toml rename to modules/infoserv/Cargo.toml index 8cb7a7d..8c6fec4 100644 --- a/infoserv/Cargo.toml +++ b/modules/infoserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "InfoServ: network information bulletins shown on connect (public) and on oper login." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/infoserv/src/lib.rs b/modules/infoserv/src/lib.rs similarity index 100% rename from infoserv/src/lib.rs rename to modules/infoserv/src/lib.rs diff --git a/inspircd/Cargo.toml b/modules/inspircd/Cargo.toml similarity index 81% rename from inspircd/Cargo.toml rename to modules/inspircd/Cargo.toml index 5087247..748e6b9 100644 --- a/inspircd/Cargo.toml +++ b/modules/inspircd/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "InspIRCd server-to-server protocol module for fedserv." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/inspircd/src/lib.rs b/modules/inspircd/src/lib.rs similarity index 100% rename from inspircd/src/lib.rs rename to modules/inspircd/src/lib.rs diff --git a/memoserv/Cargo.toml b/modules/memoserv/Cargo.toml similarity index 81% rename from memoserv/Cargo.toml rename to modules/memoserv/Cargo.toml index 77fe720..ab010a7 100644 --- a/memoserv/Cargo.toml +++ b/modules/memoserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "MemoServ: deliver messages to registered users, online or not." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/memoserv/src/del.rs b/modules/memoserv/src/del.rs similarity index 100% rename from memoserv/src/del.rs rename to modules/memoserv/src/del.rs diff --git a/memoserv/src/lib.rs b/modules/memoserv/src/lib.rs similarity index 100% rename from memoserv/src/lib.rs rename to modules/memoserv/src/lib.rs diff --git a/memoserv/src/list.rs b/modules/memoserv/src/list.rs similarity index 100% rename from memoserv/src/list.rs rename to modules/memoserv/src/list.rs diff --git a/memoserv/src/read.rs b/modules/memoserv/src/read.rs similarity index 100% rename from memoserv/src/read.rs rename to modules/memoserv/src/read.rs diff --git a/memoserv/src/send.rs b/modules/memoserv/src/send.rs similarity index 100% rename from memoserv/src/send.rs rename to modules/memoserv/src/send.rs diff --git a/nickserv/Cargo.toml b/modules/nickserv/Cargo.toml similarity index 81% rename from nickserv/Cargo.toml rename to modules/nickserv/Cargo.toml index 1477c9a..41886eb 100644 --- a/nickserv/Cargo.toml +++ b/modules/nickserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "NickServ account-registration service module for fedserv." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/nickserv/src/ajoin.rs b/modules/nickserv/src/ajoin.rs similarity index 100% rename from nickserv/src/ajoin.rs rename to modules/nickserv/src/ajoin.rs diff --git a/nickserv/src/alist.rs b/modules/nickserv/src/alist.rs similarity index 100% rename from nickserv/src/alist.rs rename to modules/nickserv/src/alist.rs diff --git a/nickserv/src/cert.rs b/modules/nickserv/src/cert.rs similarity index 100% rename from nickserv/src/cert.rs rename to modules/nickserv/src/cert.rs diff --git a/nickserv/src/confirm.rs b/modules/nickserv/src/confirm.rs similarity index 100% rename from nickserv/src/confirm.rs rename to modules/nickserv/src/confirm.rs diff --git a/nickserv/src/drop.rs b/modules/nickserv/src/drop.rs similarity index 100% rename from nickserv/src/drop.rs rename to modules/nickserv/src/drop.rs diff --git a/nickserv/src/ghost.rs b/modules/nickserv/src/ghost.rs similarity index 100% rename from nickserv/src/ghost.rs rename to modules/nickserv/src/ghost.rs diff --git a/nickserv/src/glist.rs b/modules/nickserv/src/glist.rs similarity index 100% rename from nickserv/src/glist.rs rename to modules/nickserv/src/glist.rs diff --git a/nickserv/src/group.rs b/modules/nickserv/src/group.rs similarity index 100% rename from nickserv/src/group.rs rename to modules/nickserv/src/group.rs diff --git a/nickserv/src/identify.rs b/modules/nickserv/src/identify.rs similarity index 100% rename from nickserv/src/identify.rs rename to modules/nickserv/src/identify.rs diff --git a/nickserv/src/info.rs b/modules/nickserv/src/info.rs similarity index 100% rename from nickserv/src/info.rs rename to modules/nickserv/src/info.rs diff --git a/nickserv/src/lib.rs b/modules/nickserv/src/lib.rs similarity index 100% rename from nickserv/src/lib.rs rename to modules/nickserv/src/lib.rs diff --git a/nickserv/src/logout.rs b/modules/nickserv/src/logout.rs similarity index 100% rename from nickserv/src/logout.rs rename to modules/nickserv/src/logout.rs diff --git a/nickserv/src/noexpire.rs b/modules/nickserv/src/noexpire.rs similarity index 100% rename from nickserv/src/noexpire.rs rename to modules/nickserv/src/noexpire.rs diff --git a/nickserv/src/password.rs b/modules/nickserv/src/password.rs similarity index 100% rename from nickserv/src/password.rs rename to modules/nickserv/src/password.rs diff --git a/nickserv/src/register.rs b/modules/nickserv/src/register.rs similarity index 100% rename from nickserv/src/register.rs rename to modules/nickserv/src/register.rs diff --git a/nickserv/src/resetpass.rs b/modules/nickserv/src/resetpass.rs similarity index 100% rename from nickserv/src/resetpass.rs rename to modules/nickserv/src/resetpass.rs diff --git a/nickserv/src/set.rs b/modules/nickserv/src/set.rs similarity index 100% rename from nickserv/src/set.rs rename to modules/nickserv/src/set.rs diff --git a/nickserv/src/suspend.rs b/modules/nickserv/src/suspend.rs similarity index 100% rename from nickserv/src/suspend.rs rename to modules/nickserv/src/suspend.rs diff --git a/nickserv/src/ungroup.rs b/modules/nickserv/src/ungroup.rs similarity index 100% rename from nickserv/src/ungroup.rs rename to modules/nickserv/src/ungroup.rs diff --git a/operserv/Cargo.toml b/modules/operserv/Cargo.toml similarity index 82% rename from operserv/Cargo.toml rename to modules/operserv/Cargo.toml index 8e03833..c32cc47 100644 --- a/operserv/Cargo.toml +++ b/modules/operserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "OperServ: network operator tools, starting with AKILL network bans." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/operserv/src/chankill.rs b/modules/operserv/src/chankill.rs similarity index 100% rename from operserv/src/chankill.rs rename to modules/operserv/src/chankill.rs diff --git a/operserv/src/defcon.rs b/modules/operserv/src/defcon.rs similarity index 100% rename from operserv/src/defcon.rs rename to modules/operserv/src/defcon.rs diff --git a/operserv/src/global.rs b/modules/operserv/src/global.rs similarity index 100% rename from operserv/src/global.rs rename to modules/operserv/src/global.rs diff --git a/operserv/src/ignore.rs b/modules/operserv/src/ignore.rs similarity index 100% rename from operserv/src/ignore.rs rename to modules/operserv/src/ignore.rs diff --git a/operserv/src/info.rs b/modules/operserv/src/info.rs similarity index 100% rename from operserv/src/info.rs rename to modules/operserv/src/info.rs diff --git a/operserv/src/jupe.rs b/modules/operserv/src/jupe.rs similarity index 100% rename from operserv/src/jupe.rs rename to modules/operserv/src/jupe.rs diff --git a/operserv/src/kick.rs b/modules/operserv/src/kick.rs similarity index 100% rename from operserv/src/kick.rs rename to modules/operserv/src/kick.rs diff --git a/operserv/src/kill.rs b/modules/operserv/src/kill.rs similarity index 100% rename from operserv/src/kill.rs rename to modules/operserv/src/kill.rs diff --git a/operserv/src/lib.rs b/modules/operserv/src/lib.rs similarity index 100% rename from operserv/src/lib.rs rename to modules/operserv/src/lib.rs diff --git a/operserv/src/logsearch.rs b/modules/operserv/src/logsearch.rs similarity index 100% rename from operserv/src/logsearch.rs rename to modules/operserv/src/logsearch.rs diff --git a/operserv/src/mode.rs b/modules/operserv/src/mode.rs similarity index 100% rename from operserv/src/mode.rs rename to modules/operserv/src/mode.rs diff --git a/operserv/src/oper.rs b/modules/operserv/src/oper.rs similarity index 100% rename from operserv/src/oper.rs rename to modules/operserv/src/oper.rs diff --git a/operserv/src/session.rs b/modules/operserv/src/session.rs similarity index 100% rename from operserv/src/session.rs rename to modules/operserv/src/session.rs diff --git a/operserv/src/stats.rs b/modules/operserv/src/stats.rs similarity index 100% rename from operserv/src/stats.rs rename to modules/operserv/src/stats.rs diff --git a/operserv/src/svs.rs b/modules/operserv/src/svs.rs similarity index 100% rename from operserv/src/svs.rs rename to modules/operserv/src/svs.rs diff --git a/operserv/src/xline.rs b/modules/operserv/src/xline.rs similarity index 100% rename from operserv/src/xline.rs rename to modules/operserv/src/xline.rs diff --git a/reportserv/Cargo.toml b/modules/reportserv/Cargo.toml similarity index 81% rename from reportserv/Cargo.toml rename to modules/reportserv/Cargo.toml index f14e46c..ed8b515 100644 --- a/reportserv/Cargo.toml +++ b/modules/reportserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "ReportServ: users file abuse reports; operators review them." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/reportserv/src/lib.rs b/modules/reportserv/src/lib.rs similarity index 100% rename from reportserv/src/lib.rs rename to modules/reportserv/src/lib.rs diff --git a/statserv/Cargo.toml b/modules/statserv/Cargo.toml similarity index 82% rename from statserv/Cargo.toml rename to modules/statserv/Cargo.toml index 03e034f..c26e7bc 100644 --- a/statserv/Cargo.toml +++ b/modules/statserv/Cargo.toml @@ -5,4 +5,4 @@ edition = "2021" description = "StatServ: surface the shared stats registry and per-channel activity." [dependencies] -fedserv-api = { path = "../api" } +fedserv-api = { path = "../../api" } diff --git a/statserv/src/channel.rs b/modules/statserv/src/channel.rs similarity index 100% rename from statserv/src/channel.rs rename to modules/statserv/src/channel.rs diff --git a/statserv/src/global.rs b/modules/statserv/src/global.rs similarity index 100% rename from statserv/src/global.rs rename to modules/statserv/src/global.rs diff --git a/statserv/src/lib.rs b/modules/statserv/src/lib.rs similarity index 100% rename from statserv/src/lib.rs rename to modules/statserv/src/lib.rs