Make KICK and INVITE send snotes on override.
This commit is contained in:
parent
220c9db54d
commit
fbd2e5da56
|
@ -37,6 +37,7 @@
|
||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "s_serv.h"
|
#include "s_serv.h"
|
||||||
|
#include "s_conf.h"
|
||||||
#include "hook.h"
|
#include "hook.h"
|
||||||
|
|
||||||
static int m_kick(struct Client *, struct Client *, int, const char **);
|
static int m_kick(struct Client *, struct Client *, int, const char **);
|
||||||
|
@ -69,6 +70,7 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
|
||||||
char *p = NULL;
|
char *p = NULL;
|
||||||
const char *user;
|
const char *user;
|
||||||
static char buf[BUFSIZE];
|
static char buf[BUFSIZE];
|
||||||
|
int is_override = 0;
|
||||||
|
|
||||||
if(MyClient(source_p) && !IsFloodDone(source_p))
|
if(MyClient(source_p) && !IsFloodDone(source_p))
|
||||||
flood_endgrace(source_p);
|
flood_endgrace(source_p);
|
||||||
|
@ -104,17 +106,22 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!can_kick_deop(msptr, find_channel_membership(chptr, who)) && !IsOverride(source_p))
|
if(!can_kick_deop(msptr, find_channel_membership(chptr, who)))
|
||||||
{
|
{
|
||||||
if(MyConnect(source_p))
|
if(MyConnect(source_p))
|
||||||
|
{
|
||||||
|
if(IsOverride(source_p))
|
||||||
|
is_override = 1;
|
||||||
|
else
|
||||||
{
|
{
|
||||||
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
||||||
me.name, source_p->name, name);
|
me.name, source_p->name, name);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* If its a TS 0 channel, do it the old way */
|
/* If its a TS 0 channel, do it the old way */
|
||||||
if(chptr->channelts == 0)
|
else if(chptr->channelts == 0)
|
||||||
{
|
{
|
||||||
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
||||||
get_id(&me, source_p), get_id(source_p, source_p), name);
|
get_id(&me, source_p), get_id(source_p, source_p), name);
|
||||||
|
@ -185,6 +192,11 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
|
||||||
if(strlen(comment) > (size_t) REASONLEN)
|
if(strlen(comment) > (size_t) REASONLEN)
|
||||||
comment[REASONLEN] = '\0';
|
comment[REASONLEN] = '\0';
|
||||||
|
|
||||||
|
if(is_override)
|
||||||
|
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
|
||||||
|
"%s is overriding KICK [%s] on [%s] [%s]",
|
||||||
|
get_oper_name(source_p), who->name, chptr->chname, comment);
|
||||||
|
|
||||||
/* jdc
|
/* jdc
|
||||||
* - In the case of a server kicking a user (i.e. CLEARCHAN),
|
* - In the case of a server kicking a user (i.e. CLEARCHAN),
|
||||||
* the kick should show up as coming from the server which did
|
* the kick should show up as coming from the server which did
|
||||||
|
|
|
@ -145,13 +145,20 @@ m_invite(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
|
|
||||||
/* unconditionally require ops, unless the channel is +g */
|
/* unconditionally require ops, unless the channel is +g */
|
||||||
/* treat remote clients as chanops */
|
/* treat remote clients as chanops */
|
||||||
if(MyClient(source_p) && !is_any_op(msptr) && !IsOverride(source_p) &&
|
if(MyClient(source_p) && !is_any_op(msptr) &&
|
||||||
!(chptr->mode.mode & MODE_FREEINVITE))
|
!(chptr->mode.mode & MODE_FREEINVITE))
|
||||||
|
{
|
||||||
|
if(IsOverride(source_p))
|
||||||
|
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
|
||||||
|
"%s is overriding INVITE [%s] on [%s]",
|
||||||
|
get_oper_name(source_p), target_p->name, chptr->chname);
|
||||||
|
else
|
||||||
{
|
{
|
||||||
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
|
||||||
me.name, source_p->name, parv[2]);
|
me.name, source_p->name, parv[2]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (IsSetNoInvite(target_p))
|
if (IsSetNoInvite(target_p))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue