can_kick hook, based on the ircd-seven one.
This commit is contained in:
parent
84405686ac
commit
5f8d323c59
3 changed files with 27 additions and 0 deletions
|
@ -29,6 +29,7 @@ extern int h_umode_changed;
|
||||||
extern int h_new_local_user;
|
extern int h_new_local_user;
|
||||||
extern int h_new_remote_user;
|
extern int h_new_remote_user;
|
||||||
extern int h_introduce_client;
|
extern int h_introduce_client;
|
||||||
|
extern int h_can_kick;
|
||||||
|
|
||||||
void init_hook(void);
|
void init_hook(void);
|
||||||
int register_hook(const char *name);
|
int register_hook(const char *name);
|
||||||
|
@ -70,6 +71,14 @@ typedef struct
|
||||||
char *key;
|
char *key;
|
||||||
} hook_data_channel_activity;
|
} hook_data_channel_activity;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
struct Client *client;
|
||||||
|
struct Channel *chptr;
|
||||||
|
struct Client *target;
|
||||||
|
int approved;
|
||||||
|
} hook_data_channel_approval;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
struct Client *client;
|
struct Client *client;
|
||||||
|
|
|
@ -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 "hook.h"
|
||||||
|
|
||||||
static int m_kick(struct Client *, struct Client *, int, const char **);
|
static int m_kick(struct Client *, struct Client *, int, const char **);
|
||||||
#define mg_kick { m_kick, 3 }
|
#define mg_kick { m_kick, 3 }
|
||||||
|
@ -157,6 +158,21 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(MyClient(source_p))
|
||||||
|
{
|
||||||
|
hook_data_channel_approval hookdata;
|
||||||
|
|
||||||
|
hookdata.client = source_p;
|
||||||
|
hookdata.chptr = chptr;
|
||||||
|
hookdata.target = who;
|
||||||
|
hookdata.approved = 1;
|
||||||
|
|
||||||
|
call_hook(h_can_kick, &hookdata);
|
||||||
|
|
||||||
|
if (!hookdata.approved)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
comment = LOCAL_COPY((EmptyString(parv[3])) ? who->name : parv[3]);
|
comment = LOCAL_COPY((EmptyString(parv[3])) ? who->name : parv[3]);
|
||||||
if(strlen(comment) > (size_t) REASONLEN)
|
if(strlen(comment) > (size_t) REASONLEN)
|
||||||
comment[REASONLEN] = '\0';
|
comment[REASONLEN] = '\0';
|
||||||
|
|
|
@ -63,6 +63,7 @@ int h_umode_changed;
|
||||||
int h_new_local_user;
|
int h_new_local_user;
|
||||||
int h_new_remote_user;
|
int h_new_remote_user;
|
||||||
int h_introduce_client;
|
int h_introduce_client;
|
||||||
|
int h_can_kick;
|
||||||
|
|
||||||
void
|
void
|
||||||
init_hook(void)
|
init_hook(void)
|
||||||
|
@ -85,6 +86,7 @@ init_hook(void)
|
||||||
h_new_local_user = register_hook("new_local_user");
|
h_new_local_user = register_hook("new_local_user");
|
||||||
h_new_remote_user = register_hook("new_remote_user");
|
h_new_remote_user = register_hook("new_remote_user");
|
||||||
h_introduce_client = register_hook("introduce_client");
|
h_introduce_client = register_hook("introduce_client");
|
||||||
|
h_can_kick = register_hook("can_kick");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* grow_hooktable()
|
/* grow_hooktable()
|
||||||
|
|
Loading…
Reference in a new issue