From fe0a0d19f8cc9a3bd2aaf2f57c76ec6b3ce19a29 Mon Sep 17 00:00:00 2001 From: zefie Date: Mon, 16 Jun 2025 17:26:49 -0400 Subject: [PATCH] implement server cmd KILL --- zefie_wtvp_minisrv/includes/classes/WTVIRC.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/zefie_wtvp_minisrv/includes/classes/WTVIRC.js b/zefie_wtvp_minisrv/includes/classes/WTVIRC.js index 8a24a359..f871b618 100644 --- a/zefie_wtvp_minisrv/includes/classes/WTVIRC.js +++ b/zefie_wtvp_minisrv/includes/classes/WTVIRC.js @@ -643,6 +643,22 @@ class WTVIRC { var nickname = this.findUserByUniqueId(sourceUniqueId); this.broadcastChannel(channel, `:${nickname} TOPIC ${channel} :${topic}\r\n`); break; + case 'KILL': + // Handle KILL command from server + if (parts.length < 3) { + console.warn(`Invalid KILL command from server: ${line}`); + break; + } + var targetUniqueId = parts[2]; + var targetSocket = this.findSocketByUniqueId(targetUniqueId); + var sourceNickname = this.findUserByUniqueId(sourceUniqueId); + var targetNickname = this.findUserByUniqueId(targetUniqueId); + var sourceUsername = this.usernames.get(sourceNickname) || sourceNickname; + targetSocket.write(`:${sourceNickname}!${sourceUsername}@${socket.serverinfo.name} KILL ${targetNickname} :${parts.slice(3).join(' ')}\r\n`); + this.broadcastUser(targetNickname, `:${sourceNickname}!${sourceUsername}@${socket.serverinfo.name} KILL ${targetNickname} :${parts.slice(3).join(' ')}\r\n`, targetSocket); + this.broadcastToAllServers(`:${sourceUniqueId} KILL ${targetUniqueId} :${parts.slice(3).join(' ')}\r\n`, socket); + this.terminateSession(targetSocket, true); + break; case 'MODE': var targetUniqueId = parts[2]; if (this.channelprefixes.some(prefix => targetUniqueId.startsWith(prefix))) {