Add GroupServ, with groups that grant channel access
User groups (!name) — a founder plus member accounts, each with group- access flags (the shared flag primitive: F founder, f manage, i invite, c chan-access, s set, m memo). REGISTER/DROP/INFO/LIST/ADD/DEL/FLAGS; event-sourced and federated like accounts. The flagship interconnection: a channel access entry may name a !group, so every member inherits that channel access. Resolution is group-aware — a new db.channel_caps() unions a user's direct access with any group they belong to, and the engine's join handler auto-ops/voices through it. So "ChanServ FLAGS #chan !team +o" auto-ops every member of !team, and removing someone from the group revokes it. Opt-in.
This commit is contained in:
parent
c7a4d5be27
commit
09be99785e
10 changed files with 602 additions and 17 deletions
|
|
@ -24,6 +24,7 @@ use fedserv_operserv::OperServ;
|
|||
use fedserv_diceserv::DiceServ;
|
||||
use fedserv_infoserv::InfoServ;
|
||||
use fedserv_reportserv::ReportServ;
|
||||
use fedserv_groupserv::GroupServ;
|
||||
use fedserv_example::ExampleServ;
|
||||
use fedserv_inspircd::InspIrcd;
|
||||
use fedserv_nickserv::NickServ;
|
||||
|
|
@ -107,6 +108,11 @@ async fn main() -> Result<()> {
|
|||
uid: format!("{}AAAAAK", cfg.server.sid),
|
||||
}));
|
||||
}
|
||||
if enabled("groupserv") {
|
||||
services.push(Box::new(GroupServ {
|
||||
uid: format!("{}AAAAAL", cfg.server.sid),
|
||||
}));
|
||||
}
|
||||
if enabled("example") {
|
||||
services.push(Box::new(ExampleServ {
|
||||
uid: format!("{}AAAAAC", cfg.server.sid),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue