Remove InspIRCd module as its back in core in both 7.0 and 7.1/master.
This commit is contained in:
parent
5538bbc0c9
commit
3327f00f7f
1634
inspircd-aux.c
1634
inspircd-aux.c
File diff suppressed because it is too large
Load Diff
242
inspircd12.c
242
inspircd12.c
|
@ -1,242 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2005-2006 Atheme Development Group
|
||||
* Rights to this code are documented in doc/LICENSE.
|
||||
*
|
||||
* The People's Democratic Republic of InspIRCd 1.2 support.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "atheme.h"
|
||||
#include "uplink.h"
|
||||
#include "pmodule.h"
|
||||
#include "protocol/inspircd.h"
|
||||
|
||||
DECLARE_MODULE_V1("protocol/inspircd12", true, _modinit, NULL, PACKAGE_STRING, "Atheme Developer Group <http://www.atheme.org/>");
|
||||
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
ircd_t InspIRCd = {
|
||||
"InspIRCd 1.2+", /* IRCd name */
|
||||
"$", /* TLD Prefix, used by Global. */
|
||||
true, /* Whether or not we use IRCNet/TS6 UID */
|
||||
false, /* Whether or not we use RCOMMAND */
|
||||
true, /* Whether or not we support channel owners. */
|
||||
true, /* Whether or not we support channel protection. */
|
||||
true, /* Whether or not we support halfops. */
|
||||
false, /* Whether or not we use P10 */
|
||||
true, /* Whether or not we use vHosts. */
|
||||
CMODE_OPERONLY | CMODE_PERM | CMODE_IMMUNE, /* Oper-only cmodes */
|
||||
CSTATUS_OWNER, /* Integer flag for owner channel flag. */
|
||||
CSTATUS_PROTECT, /* Integer flag for protect channel flag. */
|
||||
CSTATUS_HALFOP, /* Integer flag for halfops. */
|
||||
"+q", /* Mode we set for owner. */
|
||||
"+a", /* Mode we set for protect. */
|
||||
"+h", /* Mode we set for halfops. */
|
||||
PROTOCOL_INSPIRCD, /* Protocol type */
|
||||
CMODE_PERM, /* Permanent cmodes */
|
||||
CMODE_IMMUNE, /* Oper-immune cmode */
|
||||
"beIg", /* Ban-like cmodes */
|
||||
'e', /* Except mchar */
|
||||
'I', /* Invex mchar */
|
||||
IRCD_CIDR_BANS | IRCD_HOLDNICK /* Flags */
|
||||
};
|
||||
|
||||
struct cmode_ inspircd_mode_list[] = {
|
||||
{ 'i', CMODE_INVITE },
|
||||
{ 'm', CMODE_MOD },
|
||||
{ 'n', CMODE_NOEXT },
|
||||
{ 'p', CMODE_PRIV },
|
||||
{ 's', CMODE_SEC },
|
||||
{ 't', CMODE_TOPIC },
|
||||
{ 'c', CMODE_NOCOLOR },
|
||||
{ 'M', CMODE_MODREG },
|
||||
{ 'R', CMODE_REGONLY },
|
||||
{ 'O', CMODE_OPERONLY },
|
||||
{ 'S', CMODE_STRIP },
|
||||
{ 'K', CMODE_NOKNOCK },
|
||||
{ 'A', CMODE_NOINVITE },
|
||||
{ 'C', CMODE_NOCTCP },
|
||||
{ 'N', CMODE_STICKY },
|
||||
{ 'G', CMODE_CENSOR },
|
||||
{ 'P', CMODE_PERM },
|
||||
{ 'B', CMODE_NOCAPS },
|
||||
{ 'z', CMODE_SSLONLY },
|
||||
{ 'T', CMODE_NONOTICE },
|
||||
{ 'u', CMODE_HIDING },
|
||||
{ 'Q', CMODE_PEACE },
|
||||
{ 'Y', CMODE_IMMUNE },
|
||||
{ 'D', CMODE_DELAYJOIN },
|
||||
{ 'r', CMODE_CHANREG },
|
||||
{ '\0', 0 }
|
||||
};
|
||||
|
||||
static bool check_flood(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
static bool check_nickflood(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
static bool check_jointhrottle(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
static bool check_history(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
static bool check_forward(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
static bool check_rejoindelay(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
static bool check_delaymsg(const char *, channel_t *, mychan_t *, user_t *, myuser_t *);
|
||||
|
||||
struct extmode inspircd_ignore_mode_list[] = {
|
||||
{ 'f', check_flood },
|
||||
{ 'F', check_nickflood },
|
||||
{ 'j', check_jointhrottle },
|
||||
{ 'H', check_history },
|
||||
{ 'L', check_forward },
|
||||
{ 'J', check_rejoindelay },
|
||||
{ 'd', check_delaymsg },
|
||||
{ '\0', 0 }
|
||||
};
|
||||
|
||||
struct cmode_ inspircd_status_mode_list[] = {
|
||||
{ 'q', CSTATUS_OWNER },
|
||||
{ 'a', CSTATUS_PROTECT },
|
||||
{ 'o', CSTATUS_OP },
|
||||
{ 'h', CSTATUS_HALFOP },
|
||||
{ 'v', CSTATUS_VOICE },
|
||||
{ '\0', 0 }
|
||||
};
|
||||
|
||||
struct cmode_ inspircd_prefix_mode_list[] = {
|
||||
{ '~', CSTATUS_OWNER },
|
||||
{ '&', CSTATUS_PROTECT },
|
||||
{ '@', CSTATUS_OP },
|
||||
{ '%', CSTATUS_HALFOP },
|
||||
{ '+', CSTATUS_VOICE },
|
||||
{ '\0', 0 }
|
||||
};
|
||||
|
||||
struct cmode_ inspircd_user_mode_list[] = {
|
||||
{ 'i', UF_INVIS },
|
||||
{ 'o', UF_IRCOP },
|
||||
{ 'd', UF_DEAF },
|
||||
{ '\0', 0 }
|
||||
};
|
||||
|
||||
#define PROTOCOL_12BETA 1201 /* we do not support anything older than this */
|
||||
|
||||
/* *INDENT-ON* */
|
||||
|
||||
static bool check_flood(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
/* +F doesn't support *, so don't bother checking for it -- w00t */
|
||||
return check_jointhrottle(value, c, mc, u, mu);
|
||||
}
|
||||
|
||||
static bool check_nickflood(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
return *value == '*' ? check_jointhrottle(value + 1, c, mc, u, mu) : check_jointhrottle(value, c, mc, u, mu);
|
||||
}
|
||||
|
||||
static bool check_jointhrottle(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
const char *p, *arg2;
|
||||
|
||||
p = value, arg2 = NULL;
|
||||
while (*p != '\0')
|
||||
{
|
||||
if (*p == ':')
|
||||
{
|
||||
if (arg2 != NULL)
|
||||
return false;
|
||||
arg2 = p + 1;
|
||||
}
|
||||
else if (!isdigit(*p))
|
||||
return false;
|
||||
p++;
|
||||
}
|
||||
if (arg2 == NULL)
|
||||
return false;
|
||||
if (p - arg2 > 10 || arg2 - value - 1 > 10 || !atoi(value) || !atoi(arg2))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool check_history(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
return check_jointhrottle(value, c, mc, u, mu);
|
||||
}
|
||||
|
||||
static bool check_forward(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
channel_t *target_c;
|
||||
mychan_t *target_mc;
|
||||
|
||||
if (*value != '#' || strlen(value) > 50)
|
||||
return false;
|
||||
if (u == NULL && mu == NULL)
|
||||
return true;
|
||||
target_c = channel_find(value);
|
||||
target_mc = MYCHAN_FROM(target_c);
|
||||
if (target_c == NULL && target_mc == NULL)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool check_rejoindelay(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
const char *ch = value;
|
||||
|
||||
while (*ch)
|
||||
{
|
||||
if (!isdigit(*ch))
|
||||
return false;
|
||||
ch++;
|
||||
}
|
||||
|
||||
if (atoi(value) <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
static bool check_delaymsg(const char *value, channel_t *c, mychan_t *mc, user_t *u, myuser_t *mu)
|
||||
{
|
||||
const char *ch = value;
|
||||
|
||||
while (*ch)
|
||||
{
|
||||
if (!isdigit(*ch))
|
||||
return false;
|
||||
ch++;
|
||||
}
|
||||
|
||||
if (atoi(value) <= 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void _modinit(module_t * m)
|
||||
{
|
||||
MODULE_TRY_REQUEST_DEPENDENCY(m, "protocol/inspircd-aux");
|
||||
|
||||
/* Symbol relocation voodoo. */
|
||||
mode_list = inspircd_mode_list;
|
||||
ignore_mode_list = inspircd_ignore_mode_list;
|
||||
status_mode_list = inspircd_status_mode_list;
|
||||
prefix_mode_list = inspircd_prefix_mode_list;
|
||||
user_mode_list = inspircd_user_mode_list;
|
||||
ignore_mode_list_size = ARRAY_SIZE(inspircd_ignore_mode_list);
|
||||
|
||||
ircd = &InspIRCd;
|
||||
|
||||
m->mflags = MODTYPE_CORE;
|
||||
|
||||
pmodule_loaded = true;
|
||||
}
|
||||
|
||||
/* vim:cinoptions=>s,e0,n0,f0,{0,}0,^0,=s,ps,t0,c3,+s,(2s,us,)20,*30,gs,hs
|
||||
* vim:ts=8
|
||||
* vim:sw=8
|
||||
* vim:noexpandtab
|
||||
*/
|
Loading…
Reference in New Issue