#include "modules.h"
#include "s_newconf.h"
+static int h_can_kill;
static char buf[BUFSIZE];
static int ms_kill(struct Client *, struct Client *, int, const char **);
mapi_clist_av1 kill_clist[] = { &kill_msgtab, NULL };
-DECLARE_MODULE_AV1(kill, NULL, NULL, kill_clist, NULL, NULL, "$Revision: 3408 $");
+mapi_hlist_av1 kill_hlist[] = {
+ { "can_kill", &h_can_kill },
+ { NULL, NULL},
+};
+
+DECLARE_MODULE_AV1(kill, NULL, NULL, kill_clist, kill_hlist, NULL, "$Revision: 3408 $");
/*
** mo_kill
-** parv[0] = sender prefix
** parv[1] = kill victim
** parv[2] = kill path
*/
const char *inpath = client_p->name;
const char *user;
const char *reason;
+ hook_data_client_approval moduledata;
user = parv[1];
return 0;
}
+ /* Last chance to stop the kill */
+ moduledata.client = source_p;
+ moduledata.target = target_p;
+ moduledata.approved = 1;
+ call_hook(h_can_kill, &moduledata);
+
+ if (moduledata.approved == 0)
+ /* The callee should have sent a message. */
+ return 0;
+
if(MyConnect(target_p))
sendto_one(target_p, ":%s!%s@%s KILL %s :%s",
source_p->name, source_p->username, source_p->host,
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"Received KILL message for %s!%s@%s. From %s Path: %s (%s)",
target_p->name, target_p->username, target_p->orighost,
- parv[0], me.name, reason);
+ source_p->name, me.name, reason);
ilog(L_KILL, "%c %s %s!%s@%s %s %s",
MyConnect(target_p) ? 'L' : 'G', get_oper_name(source_p),
/*
* ms_kill
- * parv[0] = sender prefix
* parv[1] = kill victim
* parv[2] = kill path and reason
*/
const char *reason;
char default_reason[] = "<No reason given>";
const char *path;
- int chasing = 0;
*buf = '\0';
return 0;
}
sendto_one_notice(source_p, ":KILL changed from %s to %s", user, target_p->name);
- chasing = 1;
}
if(IsServer(target_p) || IsMe(target_p))
{
sendto_realops_snomask(IsService(source_p) ? SNO_SKILL : SNO_GENERAL, L_ALL,
"Received KILL message for %s!%s@%s. From %s Path: %s!%s!%s!%s %s",
- target_p->name, target_p->username, target_p->orighost, parv[0],
+ target_p->name, target_p->username, target_p->orighost, source_p->name,
source_p->servptr->name, source_p->host, source_p->username,
source_p->name, reason);
sendto_realops_snomask(SNO_SKILL, L_ALL,
"Received KILL message for %s!%s@%s. From %s %s",
target_p->name, target_p->username, target_p->orighost,
- parv[0], reason);
+ source_p->name, reason);
ilog(L_KILL, "S %s %s!%s@%s %s %s",
source_p->name, target_p->name, target_p->username,