connectclass: per-class connection policy (allow/deny, localmax, password, maxchans, pingfreq, timeout, modes) + PASS
This commit is contained in:
parent
02b2061561
commit
f5f888dbaa
9 changed files with 211 additions and 4 deletions
11
src/ircd.rs
11
src/ircd.rs
|
|
@ -11,7 +11,7 @@ use crate::config::Config;
|
|||
use crate::coremods::command_table;
|
||||
use crate::message;
|
||||
use crate::module::{Hook, ModResult, Module};
|
||||
use crate::numeric::{ERR_NEEDMOREPARAMS, ERR_NOTREGISTERED, ERR_UNKNOWNCOMMAND};
|
||||
use crate::numeric::{ERR_NEEDMOREPARAMS, ERR_NOTREGISTERED, ERR_PASSWDMISMATCH, ERR_UNKNOWNCOMMAND};
|
||||
use crate::server::Server;
|
||||
use crate::socketengine::OutSink;
|
||||
use crate::Uid;
|
||||
|
|
@ -414,6 +414,15 @@ impl Ircd {
|
|||
self.server.remove_user(uid, &reason);
|
||||
return;
|
||||
}
|
||||
// connectclass: verify the class password and apply its on-connect modes
|
||||
if let Some(reason) = crate::modules::connclass::on_register(&mut self.server, uid) {
|
||||
self.server
|
||||
.numeric(uid, ERR_PASSWDMISMATCH, &format!(":{reason}"));
|
||||
self.server
|
||||
.send(uid, format!("ERROR :Closing link: ({reason})"));
|
||||
self.server.remove_user(uid, &reason);
|
||||
return;
|
||||
}
|
||||
self.server.welcome(uid);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue