Merge remote-tracking branch 'origin/devel'
Conflicts: CREDITS extra/services/atheme/elemental-ircd.c
This commit is contained in:
commit
203523540b
46
CREDITS
46
CREDITS
|
@ -3,43 +3,53 @@ $Id: CREDITS 3133 2007-01-21 15:38:16Z jilles $
|
||||||
Elemental-IRCd is a fork of the now-defunct ShadowIRCD project.
|
Elemental-IRCd is a fork of the now-defunct ShadowIRCD project.
|
||||||
|
|
||||||
The Elemental-IRCd team is listed below in nick-alphabetical order:
|
The Elemental-IRCd team is listed below in nick-alphabetical order:
|
||||||
|
|
||||||
Xena, Sam Dodrill <xena -at- yolo-swag.com>
|
Xena, Christine Dodrill <xena -at- yolo-swag.com>
|
||||||
|
|
||||||
Some Elemental-IRCd features are modeled after or direct ports of
|
Some Elemental-IRCd features are modeled after or direct ports of
|
||||||
code from Charybdis.
|
code from Charybdis.
|
||||||
|
|
||||||
ShadowIRCd 6 was a modern restart of the old ShadowIRCd project
|
ponychat-ircd is a fork of the ShadowIRCD project created to meet
|
||||||
based on Charybdis with a few additional features to make it appeal
|
PonyChat's needs and keep the now-defunct ShadowIRCD project's goals
|
||||||
more to more users. We try to work as closely as possible with the
|
alive.
|
||||||
|
|
||||||
|
The ponychat-ircd team is listed in nick-alphabetical order:
|
||||||
|
|
||||||
|
aji, Alex Iadicico <alex -at- ajitek.net>
|
||||||
|
Kabaka, Kyle Johnson <kabaka -at- ponychat.net>
|
||||||
|
Xena, Christine Dodrill <xena -at- yolo-swag.com>
|
||||||
|
|
||||||
|
ShadowIRCd 6 is a modern restart of the old ShadowIRCd project
|
||||||
|
based on Charybdis with a few additional features to make it appeal
|
||||||
|
more to more users. We try to work as closely as possible with the
|
||||||
Charybdis team.
|
Charybdis team.
|
||||||
|
|
||||||
The ShadowIRCd team is listed in nick-alphabetical order:
|
The ShadowIRCd team is listed in nick-alphabetical order:
|
||||||
|
|
||||||
jdhore, JD Horelick <jdhore1 -at- gmail.com>
|
jdhore, JD Horelick <jdhore1 -at- gmail.com>
|
||||||
Taros, Brett Greenham <taros34 -at- hotmail.com>
|
Taros, Brett Greenham <taros34 -at- hotmail.com>
|
||||||
|
|
||||||
Some ShadowIRCd 6 features such as the oper-override and remote
|
Some ShadowIRCd 6 features such as the oper-override and remote
|
||||||
RESTART, DIE and MOD* commands were borrowed from ircd-seven.
|
RESTART, DIE and MOD* commands were borrowed from ircd-seven.
|
||||||
|
|
||||||
ircd-seven is written by:
|
ircd-seven is written by:
|
||||||
|
|
||||||
spb, Stephen Bennett <spb -at- attenuate.org>
|
spb, Stephen Bennett <spb -at- attenuate.org>
|
||||||
|
|
||||||
Charybdis started as an evolution from ircd-ratbox. Its development
|
Charybdis started as an evolution from ircd-ratbox. Its development
|
||||||
is led by a team of dedicated developers who have put a lot of time
|
is led by a team of dedicated developers who have put a lot of time
|
||||||
into the project, and it has seen use on a variety of different
|
into the project, and it has seen use on a variety of different
|
||||||
network configurations.
|
network configurations.
|
||||||
|
|
||||||
The charybdis core team is listed in nick-alphabetical order:
|
The charybdis core team is listed in nick-alphabetical order:
|
||||||
|
|
||||||
jilles, Jilles Tjoelker <jilles -at- stack.nl>
|
jilles, Jilles Tjoelker <jilles -at- stack.nl>
|
||||||
nenolod, William Pitcock <nenolod -at- nenolod.net>
|
nenolod, William Pitcock <nenolod -at- nenolod.net>
|
||||||
spb, Stephen Bennett <spb -at- attenuate.org>
|
spb, Stephen Bennett <spb -at- attenuate.org>
|
||||||
|
|
||||||
The following people have made contributions to the Charybdis releases,
|
The following people have made contributions to the Charybdis releases,
|
||||||
in nick-alphabetical order:
|
in nick-alphabetical order:
|
||||||
|
|
||||||
AndroSyn, Aaron Sethman <androsyn -at- ratbox.org>
|
AndroSyn, Aaron Sethman <androsyn -at- ratbox.org>
|
||||||
anfl, Lee Hardy <lee -at- leeh.co.uk>
|
anfl, Lee Hardy <lee -at- leeh.co.uk>
|
||||||
beu, Elfyn McBratney <elfyn.mcbratney -at- gmail.com>
|
beu, Elfyn McBratney <elfyn.mcbratney -at- gmail.com>
|
||||||
|
@ -52,6 +62,6 @@ Taros, Brett Greenham <taros -at- shadowircd.net>
|
||||||
ThaPrince, Jon Christopherson <jon -at- vile.com>
|
ThaPrince, Jon Christopherson <jon -at- vile.com>
|
||||||
twincest, River Tarnell <river -at- attenuate.org>
|
twincest, River Tarnell <river -at- attenuate.org>
|
||||||
w00t, Robin Burchell <surreal.w00t -at- gmail.com>
|
w00t, Robin Burchell <surreal.w00t -at- gmail.com>
|
||||||
|
|
||||||
Visit the elemental-ircd repo at: http://www.github.com/Elemental-IRCd/elemental-ircd
|
Visit the elemental-ircd repo at: http://www.github.com/Elemental-IRCd/elemental-ircd
|
||||||
Visit us on IRC at: irc.yolo-swag.com #elemental-ircd
|
Visit us on IRC at: irc.yolo-swag.com #elemental-ircd
|
||||||
|
|
|
@ -50,6 +50,7 @@ SRCS = \
|
||||||
extb_ssl.c \
|
extb_ssl.c \
|
||||||
extb_realname.c \
|
extb_realname.c \
|
||||||
extb_extgecos.c \
|
extb_extgecos.c \
|
||||||
|
extb_usermode.c \
|
||||||
force_user_invis.c \
|
force_user_invis.c \
|
||||||
hurt.c \
|
hurt.c \
|
||||||
ip_cloaking.c \
|
ip_cloaking.c \
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* Usermode extban type: bans all users with a specific usermode
|
||||||
|
* -- nenolod
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stdinc.h"
|
||||||
|
#include "modules.h"
|
||||||
|
#include "hook.h"
|
||||||
|
#include "client.h"
|
||||||
|
#include "ircd.h"
|
||||||
|
#include "send.h"
|
||||||
|
#include "hash.h"
|
||||||
|
#include "s_conf.h"
|
||||||
|
#include "s_user.h"
|
||||||
|
#include "s_serv.h"
|
||||||
|
#include "numeric.h"
|
||||||
|
|
||||||
|
static int _modinit(void);
|
||||||
|
static void _moddeinit(void);
|
||||||
|
static int eb_usermode(const char *data, struct Client *client_p, struct Channel *chptr, long mode_type);
|
||||||
|
|
||||||
|
DECLARE_MODULE_AV1(extb_usermode, _modinit, _moddeinit, NULL, NULL, NULL, "$Revision: 1299 $");
|
||||||
|
|
||||||
|
static int
|
||||||
|
_modinit(void)
|
||||||
|
{
|
||||||
|
extban_table['m'] = eb_usermode;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_moddeinit(void)
|
||||||
|
{
|
||||||
|
extban_table['m'] = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int eb_usermode(const char *data, struct Client *client_p,
|
||||||
|
struct Channel *chptr, long mode_type)
|
||||||
|
{
|
||||||
|
int dir = MODE_ADD;
|
||||||
|
unsigned int modes_ack = 0, modes_nak = 0;
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
(void)chptr;
|
||||||
|
|
||||||
|
/* $m must have a specified mode */
|
||||||
|
if (data == NULL)
|
||||||
|
return EXTBAN_INVALID;
|
||||||
|
|
||||||
|
for (p = data; *p != '\0'; p++)
|
||||||
|
{
|
||||||
|
switch (*p)
|
||||||
|
{
|
||||||
|
case '+':
|
||||||
|
dir = MODE_ADD;
|
||||||
|
break;
|
||||||
|
case '-':
|
||||||
|
dir = MODE_DEL;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
switch (dir)
|
||||||
|
{
|
||||||
|
case MODE_DEL:
|
||||||
|
modes_nak |= user_modes[(unsigned char) *p];
|
||||||
|
break;
|
||||||
|
case MODE_ADD:
|
||||||
|
default:
|
||||||
|
modes_ack |= user_modes[(unsigned char) *p];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ((client_p->umodes & modes_ack) == modes_ack &&
|
||||||
|
!(client_p->umodes & modes_nak)) ?
|
||||||
|
EXTBAN_MATCH : EXTBAN_NOMATCH;
|
||||||
|
}
|
|
@ -130,6 +130,9 @@ mr_webirc(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set UMODE_WEBCLIENT */
|
||||||
|
source_p->umodes = source_p->umodes | UMODE_WEBCLIENT;
|
||||||
|
|
||||||
sendto_one(source_p, "NOTICE * :CGI:IRC host/IP set to %s %s", parv[3], parv[4]);
|
sendto_one(source_p, "NOTICE * :CGI:IRC host/IP set to %s %s", parv[3], parv[4]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,6 @@
|
||||||
#define CMODE_NONICKS 0x20000000 /* shadowircd +N */
|
#define CMODE_NONICKS 0x20000000 /* shadowircd +N */
|
||||||
#define CMODE_NOREPEAT 0x40000000 /* shadowircd +K */
|
#define CMODE_NOREPEAT 0x40000000 /* shadowircd +K */
|
||||||
#define CMODE_KICKNOREJOIN 0x80000000 /* shadowircd +J */
|
#define CMODE_KICKNOREJOIN 0x80000000 /* shadowircd +J */
|
||||||
#define CMODE_HIDEBANS 0x100000000 /* elemental +u */
|
|
||||||
|
|
||||||
DECLARE_MODULE_V1("protocol/elemental-ircd", true, _modinit, NULL, PACKAGE_STRING, "Elemental-IRCd Development Team http://github.com/elemental-ircd/elemental-ircd");
|
DECLARE_MODULE_V1("protocol/elemental-ircd", true, _modinit, NULL, PACKAGE_STRING, "Elemental-IRCd Development Team http://github.com/elemental-ircd/elemental-ircd");
|
||||||
|
|
||||||
|
|
|
@ -28,3 +28,4 @@ User modes: (* designates that the umode is oper only)
|
||||||
+I - Prevents non-opers from seeing your channel list in
|
+I - Prevents non-opers from seeing your channel list in
|
||||||
a whois query.
|
a whois query.
|
||||||
+Z - Is connected via SSL (set only on connection).
|
+Z - Is connected via SSL (set only on connection).
|
||||||
|
+W - Is connected via a web client (set only on connection).
|
||||||
|
|
|
@ -22,3 +22,4 @@ User modes: (? designates that the umode is provided by an extension
|
||||||
anyone who's in a common channel with you to message you.
|
anyone who's in a common channel with you to message you.
|
||||||
+V - Prevents you from receiving invites.
|
+V - Prevents you from receiving invites.
|
||||||
+Z - Is connected via SSL (set only on connection).
|
+Z - Is connected via SSL (set only on connection).
|
||||||
|
+W - Is connected via a web client (set only on connection).
|
||||||
|
|
|
@ -425,6 +425,7 @@ struct ListClient {
|
||||||
#define UMODE_OPER 0x1000 /* Operator */
|
#define UMODE_OPER 0x1000 /* Operator */
|
||||||
#define UMODE_ADMIN 0x2000 /* Admin on server */
|
#define UMODE_ADMIN 0x2000 /* Admin on server */
|
||||||
#define UMODE_SSLCLIENT 0x4000 /* using SSL */
|
#define UMODE_SSLCLIENT 0x4000 /* using SSL */
|
||||||
|
#define UMODE_WEBCLIENT 0x100000 /* user is connected via a web client */
|
||||||
#define UMODE_OVERRIDE 0x20000 /* able to override */
|
#define UMODE_OVERRIDE 0x20000 /* able to override */
|
||||||
|
|
||||||
#define IsOverride(x) ((x)->umodes & UMODE_OVERRIDE)
|
#define IsOverride(x) ((x)->umodes & UMODE_OVERRIDE)
|
||||||
|
|
|
@ -330,6 +330,7 @@ extern const char *form_str(int);
|
||||||
#define ERR_HELPNOTFOUND 524
|
#define ERR_HELPNOTFOUND 524
|
||||||
|
|
||||||
#define RPL_WHOISSECURE 671 /* Unreal3.2 --nenolod */
|
#define RPL_WHOISSECURE 671 /* Unreal3.2 --nenolod */
|
||||||
|
#define RPL_WHOISWEBIRC 672 /* plexus -- Xe */
|
||||||
|
|
||||||
#define RPL_MODLIST 702
|
#define RPL_MODLIST 702
|
||||||
#define RPL_ENDOFMODLIST 703
|
#define RPL_ENDOFMODLIST 703
|
||||||
|
|
|
@ -313,6 +313,12 @@ single_whois(struct Client *source_p, struct Client *target_p, int operspy)
|
||||||
if(IsSSLClient(target_p))
|
if(IsSSLClient(target_p))
|
||||||
sendto_one_numeric(source_p, RPL_WHOISSECURE, form_str(RPL_WHOISSECURE),
|
sendto_one_numeric(source_p, RPL_WHOISSECURE, form_str(RPL_WHOISSECURE),
|
||||||
target_p->name);
|
target_p->name);
|
||||||
|
|
||||||
|
if(!(target_p->umodes & UMODE_WEBCLIENT)) {
|
||||||
|
sendto_one_numeric(source_p, RPL_WHOISWEBIRC, form_str(RPL_WHOISWEBIRC),
|
||||||
|
target_p->name);
|
||||||
|
}
|
||||||
|
|
||||||
if((source_p == target_p || IsOper(source_p)) &&
|
if((source_p == target_p || IsOper(source_p)) &&
|
||||||
target_p->certfp != NULL)
|
target_p->certfp != NULL)
|
||||||
sendto_one_numeric(source_p, RPL_WHOISCERTFP,
|
sendto_one_numeric(source_p, RPL_WHOISCERTFP,
|
||||||
|
|
|
@ -693,7 +693,7 @@ static const char * replies[] = {
|
||||||
/* 669 */ NULL,
|
/* 669 */ NULL,
|
||||||
/* 670 */ NULL,
|
/* 670 */ NULL,
|
||||||
/* 671 RPL_WHOISSECURE, */ "%s :is using a secure connection",
|
/* 671 RPL_WHOISSECURE, */ "%s :is using a secure connection",
|
||||||
/* 672 */ NULL,
|
/* 672 RPL_WHOISWEBIRC, */ "%s :is using a web IRC client",
|
||||||
/* 673 */ NULL,
|
/* 673 */ NULL,
|
||||||
/* 674 */ NULL,
|
/* 674 */ NULL,
|
||||||
/* 675 */ NULL,
|
/* 675 */ NULL,
|
||||||
|
|
13
src/s_user.c
13
src/s_user.c
|
@ -88,7 +88,7 @@ int user_modes[256] = {
|
||||||
0, /* T */
|
0, /* T */
|
||||||
0, /* U */
|
0, /* U */
|
||||||
UMODE_NOINVITE, /* V */
|
UMODE_NOINVITE, /* V */
|
||||||
0, /* W */
|
UMODE_WEBCLIENT, /* W */
|
||||||
0, /* X */
|
0, /* X */
|
||||||
0, /* Y */
|
0, /* Y */
|
||||||
UMODE_SSLCLIENT, /* Z */
|
UMODE_SSLCLIENT, /* Z */
|
||||||
|
@ -1011,13 +1011,14 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* we may not get these,
|
/* we may not get these,
|
||||||
* but they shouldnt be in default
|
* but they shouldnt be in default
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* can only be set on burst */
|
/* can only be set on burst */
|
||||||
case 'S':
|
case 'S':
|
||||||
case 'Z':
|
case 'Z':
|
||||||
|
case 'W':
|
||||||
case ' ':
|
case ' ':
|
||||||
case '\n':
|
case '\n':
|
||||||
case '\r':
|
case '\r':
|
||||||
|
@ -1046,7 +1047,7 @@ user_mode(struct Client *client_p, struct Client *source_p, int parc, const char
|
||||||
source_p->umodes &= ~UMODE_SERVNOTICE;
|
source_p->umodes &= ~UMODE_SERVNOTICE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
default:
|
default:
|
||||||
if (MyConnect(source_p) && *pm == 'Q' && !ConfigChannel.use_forward) {
|
if (MyConnect(source_p) && *pm == 'Q' && !ConfigChannel.use_forward) {
|
||||||
badflag = YES;
|
badflag = YES;
|
||||||
|
|
Loading…
Reference in New Issue