allow mask search for /who
This commit is contained in:
@@ -2116,19 +2116,22 @@ class WTVIRC {
|
|||||||
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
||||||
} else {
|
} else {
|
||||||
// WHO for nickname
|
// WHO for nickname
|
||||||
let found = false;
|
if (target.includes('*') || target.includes('?')) {
|
||||||
for (const [sock, nick] of this.nicknames.entries()) {
|
// Wildcard mask search for nicknames
|
||||||
if (nick.toLowerCase() === target.toLowerCase()) {
|
const maskRegex = new RegExp('^' + target.replace(/\*/g, '.*').replace(/\?/g, '.') + '$', 'i');
|
||||||
found = true;
|
let found = false;
|
||||||
socket.write(`:${this.servername} 352 ${socket.nickname} * ${nick} ${sock.host} ${this.servername} ${nick} H :0 ${nick}\r\n`);
|
for (const [sock, nick] of this.nicknames.entries()) {
|
||||||
break;
|
if (maskRegex.test(nick)) {
|
||||||
|
found = true;
|
||||||
|
socket.write(`:${this.servername} 352 ${socket.nickname} * ${nick} ${sock.host} ${this.servername} ${nick} H :0 ${nick}\r\n`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (!found) {
|
||||||
|
socket.write(`:${this.servername} 401 ${socket.nickname} ${target} :No such nick/channel\r\n`);
|
||||||
|
}
|
||||||
|
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (!found) {
|
|
||||||
socket.write(`:${this.servername} 401 ${socket.nickname} ${target} :No such nick/channel\r\n`);
|
|
||||||
}
|
|
||||||
socket.write(`:${this.servername} 315 ${socket.nickname} ${target} :End of /WHO list\r\n`);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'PRIVMSG':
|
case 'PRIVMSG':
|
||||||
|
|||||||
Reference in New Issue
Block a user