limit channel modes to supported modes

This commit is contained in:
zefie
2025-06-19 16:25:51 -04:00
parent 2c11fb94ce
commit ef774d4be8

View File

@@ -4048,6 +4048,7 @@ class WTVIRC {
processChannelModes(nickname, channel, modes, params, socket) { processChannelModes(nickname, channel, modes, params, socket) {
// Split modes into array and process each character // Split modes into array and process each character
let modeChars = modes.split(''); let modeChars = modes.split('');
let supportedChannelModes = this.supported_channel_modes.split(',').join('').split('');
var serverModeMsg = ''; var serverModeMsg = '';
var target = null; var target = null;
if (socket.isserver) { if (socket.isserver) {
@@ -4138,6 +4139,10 @@ class WTVIRC {
serverModeMsg += '-'; serverModeMsg += '-';
continue; continue;
} }
if (!supportedChannelModes.includes(mc)) {
socket.write(`:${this.servername} 472 ${nickname} ${channel} :Unknown channel mode char: ${mc}\r\n`);
continue;
}
modeStr += mc; modeStr += mc;
// Modes that require a parameter // Modes that require a parameter
if (['o', 'I', 'b', 'e', 'v', 'h', 'l', 'k'].includes(mc)) { if (['o', 'I', 'b', 'e', 'v', 'h', 'l', 'k'].includes(mc)) {