protocol: verify echos pseudoclients request servprotect (+k, by name from CAPAB USERMODES) so they cannot be killed by operators; warn if service_modes lacks it
All checks were successful
CI / check (push) Successful in 3m45s

This commit is contained in:
Jean Chevronnet 2026-07-18 02:38:32 +00:00
parent 2f70b0c133
commit c64c3820a7
No known key found for this signature in database
3 changed files with 44 additions and 0 deletions

View file

@ -1124,6 +1124,14 @@ impl Engine {
verify_ircd_dependencies(&self.network);
Vec::new()
}
NetEvent::ServProtect { letter, requested } => {
if requested {
tracing::info!(mode = %letter, "services are servprotected (+{letter})");
} else {
tracing::warn!(mode = %letter, "service_modes does not request servprotect (+{letter}) — echo's pseudoclients can be killed or hijacked by operators; add it to [server] service_modes");
}
Vec::new()
}
NetEvent::Casemapping { name } => {
// echo folds identifiers as ascii. Verify the ircd agrees, rather than
// assuming it silently — a mismatch would desync account/channel identity.