*/
#include "inspircd.h"
-#include "configreader.h"
-#include "users.h"
-#include "modules.h"
-#include "wildcard.h"
#include "commands/cmd_kill.h"
extern "C" DllExport command_t* init_command(InspIRCd* Instance)
userrec *u = ServerInstance->FindNick(parameters[0]);
char killreason[MAXBUF];
- char killoperreason[MAXBUF];
int MOD_RESULT = 0;
if (u)
// hidekills is off, do nothing
snprintf(killreason, MAXQUIT, "Killed (%s (%s))", user->nick, parameters[1]);
}
-
- // opers are lucky ducks, they always see the real reason
- snprintf(killoperreason, MAXQUIT, "Killed (%s (%s))", user->nick, parameters[1]);
}
else
{
+ /* Leave it alone, remote server has already formatted it */
snprintf(killreason, MAXQUIT, "%s", parameters[1]);
- /*
- * XXX - yes, this means opers will probably see a censored kill remotely. this needs fixing.
- * maybe a version of QuitUser that doesn't take nor propegate an oper reason? -- w00t
- */
- snprintf(killoperreason, MAXQUIT, "%s", parameters[1]);
}
/*
{
// remote kill
ServerInstance->SNO->WriteToSnoMask('K', "Remote kill by %s: %s!%s@%s (%s)", user->nick, u->nick, u->ident, u->host, parameters[1]);
- FOREACH_MOD(I_OnRemoteKill, OnRemoteKill(user, u, killreason, killoperreason));
+ FOREACH_MOD(I_OnRemoteKill, OnRemoteKill(user, u, killreason, killreason));
}
else
{
*/
ServerInstance->SNO->WriteToSnoMask('k',"Local Kill by %s: %s!%s@%s (%s)", user->nick, u->nick, u->ident, u->host, parameters[1]);
ServerInstance->Log(DEFAULT,"LOCAL KILL: %s :%s!%s!%s (%s)", u->nick, ServerInstance->Config->ServerName, user->dhost, user->nick, parameters[1]);
- user->WriteTo(u, "KILL %s :%s!%s!%s (%s)", u->nick, ServerInstance->Config->ServerName, user->dhost,
- *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->nick, parameters[1]);
+ /* Bug #419, make sure this message can only occur once even in the case of multiple KILL messages crossing the network, and change to show
+ * hidekillsserver as source if possible
+ */
+ if (!u->muted)
+ {
+ u->Write(":%s KILL %s :%s!%s!%s (%s)", *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->GetFullHost(),
+ u->nick,
+ ServerInstance->Config->ServerName,
+ user->dhost,
+ *ServerInstance->Config->HideKillsServer ? ServerInstance->Config->HideKillsServer : user->nick,
+ parameters[1]);
+ u->muted = true;
+ }
}
// send the quit out
- userrec::QuitUser(ServerInstance, u, killreason, killoperreason);
+ userrec::QuitUser(ServerInstance, u, killreason);
}
else
{