Wire account registration to the ircd's ENCAP SWACCTREG/SWACCTRES relay
All checks were successful
CI / check (push) Successful in 3m53s

Echo is the authority the ircd account module forwards to: parse
ENCAP <us> SWACCTREG <reqid> <origin> <kind> <account> <p2> :<p3> into an
account request, and answer the origin server with
ENCAP <origin> SWACCTRES <reqid> <kind> <account> <status> <code> :<message>.
Thread the origin through the reply so responses route back to the
requesting server. Replaces the placeholder ACCTREGISTER/ACCTREGRESULT
names that nothing on the wire actually spoke.
This commit is contained in:
Jean Chevronnet 2026-07-15 16:34:20 +00:00
parent 994e8c7347
commit 54ad013e49
No known key found for this signature in database
5 changed files with 72 additions and 36 deletions

View file

@ -55,7 +55,7 @@ pub enum NetAction {
IntroduceUser { uid: String, nick: String, ident: String, host: String, gecos: String },
Privmsg { from: String, to: String, text: String },
Notice { from: String, to: String, text: String },
AccountResponse { reqid: String, kind: String, account: String, status: String, code: String, message: String },
AccountResponse { reqid: String, origin: String, kind: String, account: String, status: String, code: String, message: String },
// A SASL exchange step back to the ircd, sourced from our SASL agent. mode = C/D.
Sasl { agent: String, client: String, mode: String, data: Vec<String> },
// Publish network state to the uplink: target "*" is server-global (e.g. the
@ -115,8 +115,9 @@ pub enum NetAction {
// How to answer a registration once its credentials have been derived.
#[derive(Debug, Clone)]
pub enum RegReply {
// IRCv3 account-registration relay: answer the requesting ircd.
Relay { reqid: String, kind: String },
// IRCv3 account-registration relay: answer the requesting ircd. `origin` is
// the server the request came from, which the response is ENCAP'd back to.
Relay { reqid: String, kind: String, origin: String },
// NickServ REGISTER: NOTICE the requesting user, logging them in on success.
NickServ { agent: String, uid: String, nick: String },
}