summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-05-11 17:31:25 +0000
committerrob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2004-05-11 17:31:25 +0000
commitda4db9a711ae22dbec4cc08d6cb3637212cd7841 (patch)
treea4b7cf6a997f73a2d2645b55bac483bc6fb141b1
parentb6210244dd8bbd2c9ad62ef8b7459385802c662c (diff)
BUILD : 1.7.2 (93) BUGS : 46 NOTES : Applied the Rage2 IRCD patch provided by al
git-svn-id: svn://svn.anope.org/anope/trunk@93 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@69 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes7
-rw-r--r--botserv.c6
-rw-r--r--channels.c55
-rw-r--r--chanserv.c34
-rwxr-xr-xconfigure24
-rw-r--r--extern.h181
-rw-r--r--hostserv.c11
-rw-r--r--init.c41
-rw-r--r--messages.c53
-rw-r--r--nickserv.c4
-rw-r--r--operserv.c4
-rw-r--r--services.h48
-rw-r--r--users.c16
-rw-r--r--version.log6
-rw-r--r--version.sh5
15 files changed, 335 insertions, 160 deletions
diff --git a/Changes b/Changes
index a538a51a0..384ef8045 100644
--- a/Changes
+++ b/Changes
@@ -1,8 +1,8 @@
Anope Version 1.7.x (will be renamed when next release is produced)
-------------------
Provided by Anope Dev. <dev@anope.org>
-2004/06/11 Fixed a bug with module unload / memo moduleData ( #43 )
-2004/06/05 Fixed bug with RDB and empty nickserv greet message (# 28).
+2004/05/11 Fixed a bug with module unload / memo moduleData ( #43 )
+2004/05/05 Fixed bug with RDB and empty nickserv greet message (# 28).
2004/05/04 Fixed Badwords kicker to ignore control characters and color codes.
2004/05/04 anoperc bugfixes including checking if anope binary exists.
2004/05/03 always set the right module name when executing mod_tail commands
@@ -13,6 +13,9 @@ Provided by Anope Dev. <dev@anope.org>
2004/04/22 Fixed ALIST bug when being invoked by systems admins (Bug #20)
2004/04/19 Added /bin/anoperc anope console control script
+Provided by Rage IRCD. <rageircd@users.sourceforge.net>
+2004/05/11 Added Rage2 IRCD support accepted feature request ( #46 )
+
Anope Version 1.7.2
--------------------
Provided by Anope Dev. <dev@anope.org>
diff --git a/botserv.c b/botserv.c
index 4dd86f1cf..1134a1736 100644
--- a/botserv.c
+++ b/botserv.c
@@ -224,7 +224,7 @@ void botchanmsgs(User * u, ChannelInfo * ci, char *buf)
#if defined(IRC_UNREAL) || defined (IRC_VIAGRA)
(!(ci->botflags & BS_DONTKICKOPS)
|| !(cstatus & (CUS_HALFOP | CUS_OP | CUS_OWNER | CUS_PROTECT)))
-# elif defined (IRC_ULTIMATE3)
+# elif defined (IRC_ULTIMATE3) || defined(IRC_RAGE2)
(!(ci->botflags & BS_DONTKICKOPS)
|| !(cstatus & (CUS_HALFOP | CUS_OP | CUS_PROTECT)))
# else
@@ -1060,7 +1060,7 @@ static void bot_raw_ban(User * requester, ChannelInfo * ci, char *nick,
&& (get_access(u, ci) >= get_access(requester, ci)))
return;
-#if defined (IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
+#ifdef HAVE_EXCEPT
if (is_excepted(ci, u) == 1) {
send_cmd(ci->bi->nick, "PRIVMSG %s :%s", ci->name,
getstring2(NULL, BOT_EXCEPT));
@@ -1358,6 +1358,8 @@ static int do_bot(User * u)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+qS", 1);
#elif defined(IRC_ULTIMATE) || defined (IRC_ULTIMATE3)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+pS", 1);
+#elif defined(IRC_RAGE2)
+ NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+S", 1);
#else
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+", 1);
#endif
diff --git a/channels.c b/channels.c
index 94b165f79..c219e7a73 100644
--- a/channels.c
+++ b/channels.c
@@ -20,14 +20,14 @@ Channel *chanlist[1024];
#define HASH(chan) ((chan)[1] ? ((chan)[1]&31)<<5 | ((chan)[2]&31) : 0)
static void add_ban(Channel * chan, char *mask);
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
static void add_exception(Channel * chan, char *mask);
#endif
static void chan_adduser2(User * user, Channel * c);
static Channel *chan_create(const char *chan);
static void chan_delete(Channel * c);
static void del_ban(Channel * chan, char *mask);
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
static void del_exception(Channel * chan, char *mask);
#endif
#ifdef HAS_FMODE
@@ -62,13 +62,13 @@ CBMode cbmodes[128] = {
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
{ 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
{ 0 },
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ CMODE_A, CBM_NO_USER_MLOCK, NULL, NULL },
#else
{ 0 }, /* A */
#endif
{ 0 }, /* B */
-#ifdef IRC_UNREAL
+#if defined(IRC_UNREAL) || defined(IRC_RAGE2)
{ CMODE_C, 0, NULL, NULL },
#else
{ 0 }, /* C */
@@ -104,12 +104,12 @@ CBMode cbmodes[128] = {
#else
{ 0 }, /* M */
#endif
-#if defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined (IRC_PTLINK)
+#if defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined (IRC_PTLINK) || defined(IRC_RAGE2)
{ CMODE_N, 0, NULL, NULL },
#else
{ 0 }, /* N */
#endif
-#if defined(IRC_BAHAMUT) || defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3)
+#if defined(IRC_BAHAMUT) || defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ CMODE_O, CBM_NO_USER_MLOCK, NULL, NULL },
#else
{ 0 }, /* O */
@@ -125,7 +125,7 @@ CBMode cbmodes[128] = {
#else
{ 0 },
#endif
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined (IRC_PTLINK)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined (IRC_PTLINK) || defined(IRC_RAGE2)
{ CMODE_S, 0, NULL, NULL },
#else
{ 0 }, /* S */
@@ -211,7 +211,7 @@ CBModeInfo cbmodeinfos[] = {
#if defined(IRC_HYBRID)
{ 'a', CMODE_a, 0, NULL, NULL },
#endif
-#if defined(IRC_BAHAMUT) || defined(IRC_UNREAL) || defined(IRC_PTLINK)
+#if defined(IRC_BAHAMUT) || defined(IRC_UNREAL) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
{ 'c', CMODE_c, 0, NULL, NULL },
#endif
#if defined(IRC_PTLINK)
@@ -243,11 +243,13 @@ CBModeInfo cbmodeinfos[] = {
#ifdef IRC_UNREAL
{ 'z', CMODE_z, 0, NULL, NULL },
#endif
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_PTLINK)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
{ 'A', CMODE_A, 0, NULL, NULL },
#endif
-#ifdef IRC_UNREAL
+#if defined(IRC_UNREAL) || defined(IRC_RAGE2)
{ 'C', CMODE_C, 0, NULL, NULL },
+#endif
+#ifdef IRC_UNREAL
{ 'G', CMODE_G, 0, NULL, NULL },
{ 'H', CMODE_H, 0, NULL, NULL },
#endif
@@ -265,10 +267,10 @@ CBModeInfo cbmodeinfos[] = {
{ 'M', CMODE_M, 0, NULL, NULL },
#endif
#endif
-#if defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_PTLINK)
+#if defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
{ 'N', CMODE_N, 0, NULL, NULL },
#endif
-#if defined(IRC_BAHAMUT) || defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3)
+#if defined(IRC_BAHAMUT) || defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ 'O', CMODE_O, 0, NULL, NULL },
#endif
#ifdef IRC_UNREAL
@@ -277,7 +279,7 @@ CBModeInfo cbmodeinfos[] = {
#ifndef IRC_HYBRID
{ 'R', CMODE_R, 0, NULL, NULL },
#endif
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_PTLINK)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
{ 'S', CMODE_S, 0, NULL, NULL },
#endif
#ifdef IRC_UNREAL
@@ -304,7 +306,7 @@ static CMMode cmmodes[128] = {
{ add_ban, del_ban },
{ NULL },
{ NULL },
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
{ add_exception, del_exception },
#endif
{ NULL },
@@ -314,7 +316,7 @@ static CMMode cmmodes[128] = {
{ NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }, { NULL }
};
- #if defined(IRC_BAHAMUT) || defined(IRC_HYBRID) || defined(IRC_PTLINK)
+#if defined(IRC_BAHAMUT) || defined(IRC_HYBRID) || defined(IRC_PTLINK)
static char csmodes[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -322,17 +324,22 @@ static char csmodes[128] = {
0,
#if defined(IRC_ULTIMATE3) || defined(IRC_HYBRID)
- 'a', /* (33) * Channel Admins */
+ 'a', /* (33) ! Channel Admins */
#else
0,
#endif
0, 0, 0,
- #ifdef IRC_ULTIMATE3
+ #if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
'h', /* (37) % Channel halfops */
#else
0,
#endif
- 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ #if defined(IRC_RAGE2)
+ 'a', /* * Channel Admins */
+ #else
+ 0,
+ #endif
'v', 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -367,7 +374,7 @@ static CUMode cumodes[128] = {
#if defined(IRC_UNREAL) || defined(IRC_VIAGRA)
{ CUS_PROTECT, CUF_PROTECT_BOTSERV, check_valid_op },
#else
-#if defined(IRC_ULTIMATE3)
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ CUS_PROTECT, CUF_PROTECT_BOTSERV, check_valid_admin },
#else
{ 0 }, /* a */
@@ -753,7 +760,7 @@ void get_channel_stats(long *nrec, long *memuse)
if (chan->bans[j])
mem += strlen(chan->bans[j]) + 1;
}
-#if defined (IRC_ULTIMATE) || defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
mem += sizeof(char *) * chan->exceptsize;
for (j = 0; j < chan->exceptcount; j++) {
if (chan->excepts[j])
@@ -1193,7 +1200,7 @@ static void add_ban(Channel * chan, char *mask)
/*************************************************************************/
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
static void add_exception(Channel * chan, char *mask)
{
@@ -1230,7 +1237,7 @@ static void chan_adduser2(User * user, Channel * c)
chan_set_user_status(c, user, CUS_OWNER | CUS_OP);
} else
#endif
-#if defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_ULTIMATE3)
+#if defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
if (check_should_protect(user, chan)) {
chan_set_user_status(c, user, CUS_PROTECT | CUS_OP);
} else
@@ -1368,7 +1375,7 @@ static void chan_delete(Channel * c)
if (c->bansize)
free(c->bans);
-#if defined (IRC_ULTIMATE) || defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
for (i = 0; i < c->exceptcount; ++i) {
if (c->excepts[i])
free(c->excepts[i]);
@@ -1419,7 +1426,7 @@ static void del_ban(Channel * chan, char *mask)
/*************************************************************************/
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
static void del_exception(Channel * chan, char *mask)
{
diff --git a/chanserv.c b/chanserv.c
index 4adabd737..cbb8e1e00 100644
--- a/chanserv.c
+++ b/chanserv.c
@@ -79,7 +79,7 @@ static LevelInfo levelinfo[] = {
#ifdef IRC_VIAGRA
{ CA_AUTOPROTECT, "AUTOPROTECT", CHAN_LEVEL_AUTOPROTECT },
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ CA_AUTOPROTECT, "AUTOADMIN", CHAN_LEVEL_AUTOPROTECT },
#endif
{ CA_AUTOVOICE, "AUTOVOICE", CHAN_LEVEL_AUTOVOICE },
@@ -113,7 +113,7 @@ static LevelInfo levelinfo[] = {
{ CA_PROTECT, "PROTECT", CHAN_LEVEL_PROTECT },
{ CA_PROTECTME, "PROTECTME", CHAN_LEVEL_PROTECTME },
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ CA_PROTECT, "ADMIN", CHAN_LEVEL_PROTECT },
{ CA_PROTECTME, "ADMINME", CHAN_LEVEL_PROTECTME },
#endif
@@ -152,7 +152,7 @@ CSModeUtil csmodeutils[] = {
{ "DEPROTECT", "!deprotect", "-a", 0 , CA_PROTECT, CA_PROTECTME },
{ "PROTECT", "!protect", "+a", 0 , CA_PROTECT, CA_PROTECTME },
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
{ "DEPROTECT", "!deadmin", "-a", 0 , CA_PROTECT, CA_PROTECTME },
{ "PROTECT", "!admin", "+a", 0 , CA_PROTECT, CA_PROTECTME },
#endif
@@ -295,7 +295,7 @@ static int do_deprotect(User * u);
static int do_owner(User * u);
static int do_deowner(User * u);
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
static int do_protect(User * u);
static int do_deprotect(User * u);
#endif
@@ -375,7 +375,7 @@ void moduleAddChanServCmds(void) {
c = createCommand("OWNER", do_owner, NULL, CHAN_HELP_OWNER, -1,-1,-1,-1); addCoreCommand(CHANSERV,c);
c = createCommand("DEOWNER", do_deowner, NULL, CHAN_HELP_DEOWNER, -1,-1,-1,-1); addCoreCommand(CHANSERV,c);
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
c = createCommand("ADMIN", do_protect, NULL, CHAN_HELP_PROTECT, -1,-1,-1,-1); addCoreCommand(CHANSERV,c);
c = createCommand("DEADMIN",do_deprotect,NULL, CHAN_HELP_DEPROTECT, -1,-1,-1,-1); addCoreCommand(CHANSERV,c);
#endif
@@ -1438,8 +1438,7 @@ void check_modes(Channel * c)
/*************************************************************************/
-#ifdef IRC_ULTIMATE3
-
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
int check_valid_admin(User * user, Channel * chan, int servermode)
{
@@ -1494,7 +1493,7 @@ int check_valid_op(User * user, Channel * chan, int servermode)
chan->name, user->nick, user->nick, user->nick,
user->nick);
}
-# elif defined(IRC_ULTIMATE3)
+# elif defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
if (check_access(user, chan->ci, CA_AUTOHALFOP)) {
send_cmd(whosends(chan->ci), "MODE %s -ao %s %s",
chan->name, user->nick, user->nick);
@@ -1631,7 +1630,7 @@ int check_should_owner(User * user, const char *chan)
/*************************************************************************/
-#if defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_ULTIMATE3)
+#if defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
int check_should_protect(User * user, const char *chan)
{
@@ -1714,7 +1713,7 @@ int check_kick(User * user, char *chan)
else
nc = NULL;
-#if defined (IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
/*
* Before we go through akick lists, see if they're excepted FIRST
* We cannot kick excempted users that are akicked or not on the channel access list
@@ -2574,7 +2573,7 @@ static int do_help(User * u)
#ifdef IRC_ULTIMATE
notice_help(s_ChanServ, u, CHAN_HELP_ULTIMATE);
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
notice_help(s_ChanServ, u, CHAN_HELP_ULTIMATE3);
#endif
if (CSExpire >= 86400)
@@ -2721,7 +2720,7 @@ static int do_register(User * u)
uc->chan = ci;
/* Implement new mode lock */
check_modes(c);
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
send_cmd(s_ChanServ, "MODE %s +a %s", chan, u->nick);
#endif
}
@@ -4406,7 +4405,7 @@ static int do_akick(User * u)
}
/* Check excepts BEFORE we get this far */
-#if defined (IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
if (is_excepted_mask(ci, mask) == 1) {
notice_lang(s_ChanServ, u, CHAN_EXCEPTED, mask, chan);
return MOD_CONT;
@@ -5254,7 +5253,7 @@ static int do_dehalfop(User * u)
/*************************************************************************/
-#if defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA)
+#if defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_RAGE2)
static int do_protect(User * u)
{
@@ -5269,6 +5268,7 @@ static int do_deprotect(User * u)
}
/*************************************************************************/
+
#endif
#if defined(IRC_UNREAL) || defined(IRC_VIAGRA)
@@ -5503,7 +5503,7 @@ static int do_ban(User * u)
char *av[3];
char mask[BUFSIZE];
-#if defined (IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
/*
* Dont ban/kick the user on channels where he is excepted
* to prevent services <-> server wars.
@@ -5557,7 +5557,7 @@ static int do_ban(User * u)
} else if (!is_same && (ci->flags & CI_PEACE)
&& (get_access(u2, ci) >= get_access(u, ci))) {
notice_lang(s_ChanServ, u, PERMISSION_DENIED);
-#if defined (IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
/*
* Dont ban/kick the user on channels where he is excepted
* to prevent services <-> server wars.
@@ -5743,7 +5743,7 @@ static int do_clear(User * u)
}
notice_lang(s_ChanServ, u, CHAN_CLEARED_BANS, chan);
free(bans);
-#if defined (IRC_ULTIMATE) || defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
} else if (stricmp(what, "excepts") == 0) {
char *av[3];
int i;
diff --git a/configure b/configure
index 59b55ad45..e0d7afd6b 100755
--- a/configure
+++ b/configure
@@ -463,6 +463,7 @@ echo " 5) UltimateIRCd 3.0.0 [alpha26 or later]"
echo " 6) Hybrid IRCd 7.0 [experimental]"
echo " 7) ViagraIRCd 1.3.x [or later]"
echo " 8) PTlink 6.15.0 [experimental]"
+echo " 9) RageIRCd 2.0 [beta-3 or later]"
while [ $ok -eq 0 ] ; do
echo2 "[$IRCTYPE] "
@@ -485,30 +486,41 @@ while [ $ok -eq 0 ] ; do
IRCTYPE_DEF2=
ok=1
;;
- 3) IRCTYPE_DEF="IRC_DREAMFORGE"
+ 3)
+ IRCTYPE_DEF="IRC_DREAMFORGE"
IRCTYPE_DEF2="IRC_UNREAL"
ok=1
;;
- 4) IRCTYPE_DEF="IRC_DREAMFORGE"
+ 4)
+ IRCTYPE_DEF="IRC_DREAMFORGE"
IRCTYPE_DEF2="IRC_ULTIMATE"
ok=1
;;
- 5) IRCTYPE_DEF="IRC_BAHAMUT"
+ 5)
+ IRCTYPE_DEF="IRC_BAHAMUT"
IRCTYPE_DEF2="IRC_ULTIMATE3"
ok=1
;;
- 6) IRCTYPE_DEF="IRC_HYBRID"
+ 6)
+ IRCTYPE_DEF="IRC_HYBRID"
IRCTYPE_DEF2=
ok=1
;;
- 7) IRCTYPE_DEF="IRC_BAHAMUT"
+ 7)
+ IRCTYPE_DEF="IRC_BAHAMUT"
IRCTYPE_DEF2="IRC_VIAGRA"
ok=1
;;
- 8) IRCTYPE_DEF="IRC_PTLINK"
+ 8)
+ IRCTYPE_DEF="IRC_PTLINK"
IRCTYPE_DEF2=
ok=1
;;
+ 9)
+ IRCTYPE_DEF="IRC_BAHAMUT"
+ IRCTYPE_DEF2="IRC_RAGE2"
+ ok=1
+ ;;
*)
echo "Please enter a valid option number."
;;
diff --git a/extern.h b/extern.h
index c66a69376..bc2cfa55a 100644
--- a/extern.h
+++ b/extern.h
@@ -26,9 +26,9 @@ E void moduleCleanStruct(ModuleData * moduleData[]);
/**** actions.c ****/
-E void change_user_mode(User *u, char *modes, char *arg);
+E void change_user_mode(User * u, char *modes, char *arg);
E void kill_user(const char *source, const char *user, const char *reason);
-E void bad_password(User *u);
+E void bad_password(User * u);
/**** botserv.c ****/
@@ -60,20 +60,21 @@ E Channel *findchan(const char *chan);
E Channel *firstchan(void);
E Channel *nextchan(void);
-E void chan_deluser(User *user, Channel *c);
+E void chan_deluser(User * user, Channel * c);
-E int is_on_chan(Channel *c, User *u);
-E User *nc_on_chan(Channel *c, NickCore *nc);
+E int is_on_chan(Channel * c, User * u);
+E User *nc_on_chan(Channel * c, NickCore * nc);
-E char *chan_get_modes(Channel *chan, int complete, int plus);
-E void chan_set_modes(const char *source, Channel *chan, int ac, char **av, int check);
+E char *chan_get_modes(Channel * chan, int complete, int plus);
+E void chan_set_modes(const char *source, Channel * chan, int ac,
+ char **av, int check);
-E int chan_get_user_status(Channel *chan, User *user);
-E int chan_has_user_status(Channel *chan, User *user, int16 status);
-E void chan_remove_user_status(Channel *chan, User *user, int16 status);
-E void chan_set_user_status(Channel *chan, User *user, int16 status);
+E int chan_get_user_status(Channel * chan, User * user);
+E int chan_has_user_status(Channel * chan, User * user, int16 status);
+E void chan_remove_user_status(Channel * chan, User * user, int16 status);
+E void chan_set_user_status(Channel * chan, User * user, int16 status);
-E int get_access_level(ChannelInfo *ci, NickAlias *na);
+E int get_access_level(ChannelInfo * ci, NickAlias * na);
E char *get_xop_level(int level);
E void do_cmode(const char *source, int ac, char **av);
@@ -97,58 +98,58 @@ E int delchan(ChannelInfo * ci);
E void alpha_insert_chan(ChannelInfo * ci);
E void reset_levels(ChannelInfo * ci);
E void cs_init(void);
-E void chanserv(User *u, char *buf);
+E void chanserv(User * u, char *buf);
E void load_cs_dbase(void);
E void save_cs_dbase(void);
E void save_cs_rdb_dbase(void);
E void expire_chans(void);
-E void cs_remove_nick(const NickCore *nc);
-E void cs_remove_bot(const BotInfo *bi);
+E void cs_remove_nick(const NickCore * nc);
+E void cs_remove_bot(const BotInfo * bi);
-E void check_modes(Channel *c);
-#ifdef IRC_ULTIMATE3
-E int check_valid_admin(User *user, Channel *chan, int servermode);
+E void check_modes(Channel * c);
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
+E int check_valid_admin(User * user, Channel * chan, int servermode);
#endif
-E int check_valid_op(User *user, Channel *chan, int servermode);
-E int check_should_op(User *user, const char *chan);
-E int check_should_voice(User *user, const char *chan);
+E int check_valid_op(User * user, Channel * chan, int servermode);
+E int check_should_op(User * user, const char *chan);
+E int check_should_voice(User * user, const char *chan);
#ifdef HAS_HALFOP
-E int check_should_halfop(User *user, const char *chan);
+E int check_should_halfop(User * user, const char *chan);
#endif
#if defined(IRC_UNREAL) || defined(IRC_VIAGRA)
-E int check_should_owner(User *user, const char *chan);
-E int check_should_protect(User *user, const char *chan);
+E int check_should_owner(User * user, const char *chan);
+E int check_should_protect(User * user, const char *chan);
#endif
-#ifdef IRC_ULTIMATE3
-E int check_should_protect(User *user, const char *chan);
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
+E int check_should_protect(User * user, const char *chan);
#endif
-E int check_kick(User *user, char *chan);
+E int check_kick(User * user, char *chan);
E void record_topic(const char *chan);
E void restore_topic(const char *chan);
-E int check_topiclock(Channel *c, time_t topic_time);
+E int check_topiclock(Channel * c, time_t topic_time);
E ChannelInfo *cs_findchan(const char *chan);
-E int check_access(User *user, ChannelInfo *ci, int what);
-E int is_founder(User *user, ChannelInfo *ci);
-E int get_access(User *user, ChannelInfo *ci);
-E ChanAccess *get_access_entry(NickCore *nc, ChannelInfo *ci);
-E void update_cs_lastseen(User *user, ChannelInfo *ci);
-E int get_idealban(ChannelInfo *ci, User *u, char *ret, int retlen);
-E AutoKick *is_stuck(ChannelInfo *ci, char *mask);
-E void stick_mask(ChannelInfo *ci, AutoKick *akick);
-E void stick_all(ChannelInfo *ci);
+E int check_access(User * user, ChannelInfo * ci, int what);
+E int is_founder(User * user, ChannelInfo * ci);
+E int get_access(User * user, ChannelInfo * ci);
+E ChanAccess *get_access_entry(NickCore * nc, ChannelInfo * ci);
+E void update_cs_lastseen(User * user, ChannelInfo * ci);
+E int get_idealban(ChannelInfo * ci, User * u, char *ret, int retlen);
+E AutoKick *is_stuck(ChannelInfo * ci, char *mask);
+E void stick_mask(ChannelInfo * ci, AutoKick * akick);
+E void stick_all(ChannelInfo * ci);
#ifdef HAS_FMODE
-E char *cs_get_flood(ChannelInfo *ci);
-E void cs_set_flood(ChannelInfo *ci, char *value);
+E char *cs_get_flood(ChannelInfo * ci);
+E void cs_set_flood(ChannelInfo * ci, char *value);
#endif
-E char *cs_get_key(ChannelInfo *ci);
-E void cs_set_key(ChannelInfo *ci, char *value);
-E char *cs_get_limit(ChannelInfo *ci);
-E void cs_set_limit(ChannelInfo *ci, char *value);
+E char *cs_get_key(ChannelInfo * ci);
+E void cs_set_key(ChannelInfo * ci, char *value);
+E char *cs_get_limit(ChannelInfo * ci);
+E void cs_set_limit(ChannelInfo * ci, char *value);
#ifdef HAS_LMODE
-E char *cs_get_redirect(ChannelInfo *ci);
-E void cs_set_redirect(ChannelInfo *ci, char *value);
+E char *cs_get_redirect(ChannelInfo * ci);
+E void cs_set_redirect(ChannelInfo * ci, char *value);
#endif
/**** compat.c ****/
@@ -229,9 +230,9 @@ E char *s_HostServ;
E void load_hs_dbase(void);
E void save_hs_dbase(void);
E void save_hs_rdb_dbase(void);
-E int do_on_id(User *u);
+E int do_on_id(User * u);
E void delHostCore(char *nick);
-E void hostserv(User *u, char *buf);
+E void hostserv(User * u, char *buf);
E char *s_NickServAlias;
E char *s_ChanServAlias;
@@ -499,8 +500,10 @@ E void lang_init(void);
(langtexts[((na)&&((NickAlias*)na)->nc&&!(((NickAlias*)na)->status & NS_VERBOTEN)?((NickAlias*)na)->nc->language:NSDefLanguage)][(index)])
#define getstring2(nc,index) \
(langtexts[((nc)?((NickCore*)nc)->language:NSDefLanguage)][(index)])
-E int strftime_lang(char *buf, int size, User *u, int format, struct tm *tm);
-E void syntax_error(const char *service, User *u, const char *command, int msgnum);
+E int strftime_lang(char *buf, int size, User * u, int format,
+ struct tm *tm);
+E void syntax_error(const char *service, User * u, const char *command,
+ int msgnum);
/**** list.c ****/
@@ -572,8 +575,8 @@ E char *sstrdup(const char *s);
/**** memoserv.c ****/
E void ms_init(void);
-E void memoserv(User *u, char *buf);
-E void check_memos(User *u);
+E void memoserv(User * u, char *buf);
+E void check_memos(User * u);
/**** misc.c ****/
@@ -588,12 +591,12 @@ E int match_wild(const char *pattern, const char *str);
E int match_wild_nocase(const char *pattern, const char *str);
E int dotime(const char *s);
-E char *duration(NickAlias *na, char *buf, int bufsize, time_t seconds);
-E char *expire_left(NickAlias *na, char *buf, int len, time_t expires);
+E char *duration(NickAlias * na, char *buf, int bufsize, time_t seconds);
+E char *expire_left(NickAlias * na, char *buf, int len, time_t expires);
-typedef int (*range_callback_t)(User *u, int num, va_list args);
+typedef int (*range_callback_t) (User * u, int num, va_list args);
E int process_numlist(const char *numstr, int *count_ret,
- range_callback_t callback, User *u, ...);
+ range_callback_t callback, User * u, ...);
E int isValidHost(const char *host, int type);
E int isvalidchar(char c);
@@ -615,10 +618,10 @@ E void get_news_stats(long *nrec, long *memuse);
E void load_news(void);
E void save_news(void);
E void save_rdb_news(void);
-E void display_news(User *u, int16 type);
-E int do_logonnews(User *u);
-E int do_opernews(User *u);
-E int do_randomnews(User *u);
+E void display_news(User * u, int16 type);
+E int do_logonnews(User * u);
+E int do_opernews(User * u);
+E int do_randomnews(User * u);
/**** nickserv.c ****/
@@ -635,28 +638,28 @@ E void get_aliases_stats(long *nrec, long *memuse);
E void get_core_stats(long *nrec, long *memuse);
E void ns_init(void);
-E void nickserv(User *u, char *buf);
+E void nickserv(User * u, char *buf);
E void load_ns_dbase(void);
E void load_ns_req_db(void);
E void save_ns_dbase(void);
E void save_ns_req_dbase(void);
E void save_ns_rdb_dbase(void);
E void save_ns_req_rdb_dbase(void);
-E int validate_user(User *u);
-E void cancel_user(User *u);
-E int nick_identified(User *u);
-E int nick_recognized(User *u);
+E int validate_user(User * u);
+E void cancel_user(User * u);
+E int nick_identified(User * u);
+E int nick_recognized(User * u);
E void expire_nicks(void);
E void expire_requests(void);
E int ns_do_register(User * u);
-E int delnick(NickAlias *na);
+E int delnick(NickAlias * na);
E NickAlias *findnick(const char *nick);
E NickCore *findcore(const char *nick);
-E void clean_ns_timeouts(NickAlias *na);
+E void clean_ns_timeouts(NickAlias * na);
/**** helpserv.c ****/
-E void helpserv(User *u, char *buf);
+E void helpserv(User * u, char *buf);
E void helpserv_init(void);
/**** hostserv.c ****/
@@ -701,11 +704,12 @@ E int check_chan_sqline(const char *chan);
E void expire_sqlines(void);
#ifdef IRC_BAHAMUT
-E int add_szline(User *u, char *mask, const char *by, const time_t expires, const char *reason);
+E int add_szline(User * u, char *mask, const char *by,
+ const time_t expires, const char *reason);
E void expire_szlines(void);
#endif
-E void check_clones(User *user);
+E void check_clones(User * user);
E void delete_ignore(const char *nick);
@@ -722,7 +726,8 @@ E void process(void);
/**** protocol.c ****/
-E void s_akill(char *user, char *host, char *who, time_t when, time_t expires, char *reason);
+E void s_akill(char *user, char *host, char *who, time_t when,
+ time_t expires, char *reason);
E void s_rakill(char *user, char *host);
E void s_sgline(char *mask, char *reason);
E void s_sqline(char *mask, char *reason);
@@ -796,7 +801,7 @@ E char *sgets(char *buf, int len, int s);
E char *sgets2(char *buf, int len, int s);
E int sread(int s, char *buf, int len);
E int sputs(char *str, int s);
-E int sockprintf(int s, char *fmt,...);
+E int sockprintf(int s, char *fmt, ...);
E int conn(const char *host, int port, const char *lhost, int lport);
E void disconn(int s);
@@ -807,35 +812,39 @@ E User *userlist[1024];
E int32 usercnt, opcnt, maxusercnt;
E time_t maxusertime;
-E void set_umode(User *user, int ac, char **av);
+E void set_umode(User * user, int ac, char **av);
E void get_user_stats(long *nusers, long *memuse);
E User *finduser(const char *nick);
E User *firstuser(void);
E User *nextuser(void);
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
+E void change_user_host(User * user, const char *host);
+#endif
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_PTLINK)
-E void change_user_host(User *user, const char *host);
-E void change_user_username(User *user, const char *username);
-E void change_user_realname(User *user, const char *realname);
+E void change_user_username(User * user, const char *username);
+E void change_user_realname(User * user, const char *realname);
#endif
-E User *do_nick(const char *source, char *nick, char *username, char *host, char *server, char *realname, time_t ts, uint32 svid, ...);
+E User *do_nick(const char *source, char *nick, char *username, char *host,
+ char *server, char *realname, time_t ts, uint32 svid, ...);
E void do_umode(const char *source, int ac, char **av);
E void do_quit(const char *source, int ac, char **av);
E void do_kill(const char *source, int ac, char **av);
-E int is_oper(User *user);
-E int is_protected(User *user);
+E int is_oper(User * user);
+E int is_protected(User * user);
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
-E int is_excepted(ChannelInfo *ci, User *user);
-E int is_excepted_mask(ChannelInfo *ci, char *mask);
+#ifdef HAS_EXCEPT
+E int is_excepted(ChannelInfo * ci, User * user);
+E int is_excepted_mask(ChannelInfo * ci, char *mask);
#endif
-E int match_usermask(const char *mask, User *user);
-E void split_usermask(const char *mask, char **nick, char **user, char **host);
-E char *create_mask(User *u);
+E int match_usermask(const char *mask, User * user);
+E void split_usermask(const char *mask, char **nick, char **user,
+ char **host);
+E char *create_mask(User * u);
#ifdef USE_MYSQL
/**** mysql.c ****/
@@ -853,7 +862,9 @@ E void db_mysql_save_ns_core(NickCore * nc);
E void db_mysql_save_ns_alias(NickAlias * na);
E void db_mysql_save_ns_req(NickRequest * nr);
E void db_mysql_save_cs_info(ChannelInfo * ci);
-E void db_mysql_save_os_db(unsigned int maxucnt, unsigned int maxutime, SList *ak, SList *sgl, SList *sql, SList *szl, HostCache *hc);
+E void db_mysql_save_os_db(unsigned int maxucnt, unsigned int maxutime,
+ SList * ak, SList * sgl, SList * sql,
+ SList * szl, HostCache * hc);
E void db_mysql_save_news(NewsItem * ni);
E void db_mysql_save_exceptions(Exception * e);
E void db_mysql_save_hs_core(HostCore * hc);
diff --git a/hostserv.c b/hostserv.c
index 187154641..da8c13bd8 100644
--- a/hostserv.c
+++ b/hostserv.c
@@ -1075,8 +1075,10 @@ void send_on(char *nick, char *vIdent, char *vhost)
send_cmd(s_HostServ, "SVSMODE %s +x", nick);
send_cmd(ServerName, "SETHOST %s %s", nick, vhost);
#endif
-
-
+#ifdef IRC_RAGE2
+ send_cmd(s_HostServ, "SVSMODE %s +z", nick);
+ send_cmd(ServerName, "VHOST %s %s", nick, vhost);
+#endif
}
/*************************************************************************/
@@ -1101,7 +1103,10 @@ void send_off(User * u)
send_cmd(s_HostServ, "SVSMODE %s -x", u->nick);
notice_lang(s_HostServ, u, HOST_OFF_UNREAL, u->nick);
#endif
-
+#ifdef IRC_RAGE2
+ send_cmd(s_HostServ, "SVSMODE %s -z", u->nick);
+ notice_lang(s_HostServ, u, HOST_OFF_UNREAL, u->nick);
+#endif
}
/*************************************************************************/
diff --git a/init.c b/init.c
index f3e52188d..87e5005de 100644
--- a/init.c
+++ b/init.c
@@ -37,6 +37,13 @@ extern void moduleAddMsgs(void);
ServiceUser, ServiceHost, ServerName, (name)); \
send_cmd(NULL, "SQLINE %s :Reserved for services", (nick)); \
} while (0)
+#elif defined(IRC_RAGE2)
+# define NICK(nick,name,modes) \
+ do { \
+ send_cmd(NULL, "SNICK %s %ld 1 %s %s 0 * %s 0 %s :%s", (nick), time(NULL), ServiceUser, \
+ ServiceHost, ServerName, (modes), (name)); \
+ send_cmd(NULL, "SQLINE %s :Reserved for services", (nick)); \
+ } while (0)
#elif defined(IRC_BAHAMUT)
# define NICK(nick,name,modes) \
do { \
@@ -81,6 +88,8 @@ void introduce_user(const char *user)
if (!user || stricmp(user, s_NickServ) == 0)
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_NickServ, desc_NickServ, "+S");
+#elif defined(IRC_RAGE2)
+ NICK(s_NickServ, desc_NickServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_NickServ, desc_NickServ, "+oS");
#else
@@ -89,6 +98,8 @@ void introduce_user(const char *user)
if (!user || stricmp(user, s_ChanServ) == 0)
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_ChanServ, desc_ChanServ, "+S");
+#elif defined(IRC_RAGE2)
+ NICK(s_ChanServ, desc_ChanServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_ChanServ, desc_ChanServ, "+oS");
#else
@@ -99,6 +110,8 @@ void introduce_user(const char *user)
if (s_HostServ && (!user || stricmp(user, s_HostServ) == 0))
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_HostServ, desc_HostServ, "+oS");
+#elif defined(IRC_RAGE2)
+ NICK(s_HostServ, desc_HostServ, "+dS");
#else
NICK(s_HostServ, desc_HostServ, "+o");
#endif
@@ -107,6 +120,8 @@ void introduce_user(const char *user)
if (!user || stricmp(user, s_MemoServ) == 0)
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_MemoServ, desc_MemoServ, "+S");
+#elif defined(IRC_RAGE2)
+ NICK(s_MemoServ, desc_MemoServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_MemoServ, desc_MemoServ, "+oS");
#else
@@ -115,6 +130,8 @@ void introduce_user(const char *user)
if (s_BotServ && (!user || stricmp(user, s_BotServ) == 0))
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_BotServ, desc_BotServ, "+S");
+#elif defined(IRC_RAGE2)
+ NICK(s_BotServ, desc_BotServ, "+dS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_BotServ, desc_BotServ, "+oS");
#else
@@ -123,6 +140,8 @@ void introduce_user(const char *user)
if (!user || stricmp(user, s_HelpServ) == 0)
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_HelpServ, desc_HelpServ, "+Sh");
+#elif defined(IRC_RAGE2)
+ NICK(s_HelpServ, desc_HelpServ, "+dSh");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_HelpServ, desc_HelpServ, "+oS");
#else
@@ -131,6 +150,8 @@ void introduce_user(const char *user)
if (!user || stricmp(user, s_OperServ) == 0)
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_OperServ, desc_OperServ, "+iS");
+#elif defined(IRC_RAGE2)
+ NICK(s_OperServ, desc_OperServ, "+diS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_OperServ, desc_OperServ, "+ioS");
#else
@@ -139,12 +160,16 @@ void introduce_user(const char *user)
if (s_DevNull && (!user || stricmp(user, s_DevNull) == 0))
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3)
NICK(s_DevNull, desc_DevNull, "+iS");
+#elif defined(IRC_RAGE2)
+ NICK(s_DevNull, desc_DevNull, "+diS");
#else
NICK(s_DevNull, desc_DevNull, "+i");
#endif
if (!user || stricmp(user, s_GlobalNoticer) == 0)
#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
NICK(s_GlobalNoticer, desc_GlobalNoticer, "+iS");
+#elif defined(IRC_RAGE2)
+ NICK(s_GlobalNoticer, desc_GlobalNoticer, "+diS");
#elif defined(IRC_UNREAL) || defined(IRC_VIAGRA)
NICK(s_GlobalNoticer, desc_GlobalNoticer, "+ioS");
#else
@@ -222,7 +247,7 @@ void introduce_user(const char *user)
#elif defined(IRC_ULTIMATE)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+pS",
1);
-#elif defined(IRC_ULTIMATE3)
+#elif defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
NEWNICK(bi->nick, bi->user, bi->host, bi->real, "+S",
1);
#else
@@ -781,7 +806,14 @@ int init(int ac, char **av)
else if (servernum == 3)
send_cmd(NULL, "PASS %s :TS", RemotePassword3);
send_cmd(NULL, "CAPAB NICKIP SSJ5 TS5 CLIENT");
-
+#elif defined(IRC_RAGE2)
+ if (servernum == 1)
+ send_cmd(NULL, "PASS %s :TS", RemotePassword);
+ else if (servernum == 2)
+ send_cmd(NULL, "PASS %s :TS", RemotePassword2);
+ else if (servernum == 3)
+ send_cmd(NULL, "PASS %s :TS", RemotePassword3);
+ send_cmd(NULL, "CAPAB SSJ3 SN2 VHOST");
#elif defined(IRC_BAHAMUT)
if (servernum == 1)
send_cmd(NULL, "PASS %s :TS", RemotePassword);
@@ -819,7 +851,10 @@ int init(int ac, char **av)
#else
send_cmd(NULL, "SERVER %s 1 :%s", ServerName, ServerDesc);
#endif
-#ifdef IRC_BAHAMUT
+#ifdef IRC_RAGE2
+ send_cmd(NULL, "SVINFO 5 5 0 %ld bluemoon 0", time(NULL));
+#endif
+#if defined(IRC_BAHAMUT) && !defined(IRC_RAGE2)
send_cmd(NULL, "SVINFO 3 1 0 :%ld", time(NULL));
#endif
#ifdef IRC_HYBRID
diff --git a/messages.c b/messages.c
index 1a1da4d75..571bf6286 100644
--- a/messages.c
+++ b/messages.c
@@ -304,7 +304,7 @@ static int m_nick(char *source, int ac, char **av)
set_umode(user, 1, &av[3]);
#else
#if defined(IRC_BAHAMUT)
-#if defined(IRC_ULTIMATE3)
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
User *user = do_nick(source, av[0], av[4], av[5], av[6], av[9],
strtoul(av[2], NULL, 10), strtoul(av[7], NULL,
0),
@@ -382,6 +382,26 @@ static int m_client(char *source, int ac, char **av)
/*************************************************************************/
+#ifdef IRC_RAGE2
+
+static int m_snick(char *source, int ac, char **av)
+{
+ if (ac != 2) {
+ User *user = do_nick(source, av[0], av[3], av[4], av[8], av[10],
+ strtoul(av[1], NULL, 10), strtoul(av[7], NULL,
+ 0),
+ strtoul(av[5], NULL, 0), av[6]);
+ if (user) {
+ set_umode(user, 1, &av[9]);
+ }
+ }
+ return MOD_CONT;
+}
+
+#endif
+
+/*************************************************************************/
+
#ifdef IRC_BAHAMUT
static int m_ns(char *source, int ac, char **av)
@@ -663,6 +683,7 @@ static int m_server(char *source, int ac, char **av)
}
/*************************************************************************/
+
#if defined(IRC_ULTIMATE3)
static int m_sethost(char *source, int ac, char **av)
@@ -687,6 +708,30 @@ static int m_sethost(char *source, int ac, char **av)
/*************************************************************************/
+#ifdef IRC_RAGE2
+
+static int m_vhost(char *source, int ac, char **av)
+{
+ User *u;
+
+ if (ac != 2)
+ return MOD_CONT;
+
+ u = finduser(av[0]);
+ if (!u) {
+ if (debug)
+ alog("user: VHOST for nonexistent user %s", av[0]);
+ return MOD_CONT;
+ }
+
+ change_user_host(u, av[1]);
+ return MOD_CONT;
+}
+
+#endif
+
+/*************************************************************************/
+
#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_VIAGRA)
static int m_chghost(char *source, int ac, char **av)
@@ -806,7 +851,7 @@ static int m_setname(char *source, int ac, char **av)
/*************************************************************************/
-#if defined(IRC_BAHAMUT) || defined(IRC_HYBRID) || defined(IRC_PTLINK)
+#if defined(IRC_BAHAMUT) || defined(IRC_HYBRID) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
static int m_sjoin(char *source, int ac, char **av)
{
@@ -1181,6 +1226,10 @@ void moduleAddMsgs(void) {
m = createMessage("CLIENT", m_client); addCoreMessage(IRCD,m);
m = createMessage("SMODE", NULL); addCoreMessage(IRCD,m);
#endif
+#ifdef IRC_RAGE2
+ m = createMessage("SNICK", m_snick); addCoreMessage(IRCD,m);
+ m = createMessage("VHOST", m_vhost); addCoreMessage(IRCD,m);
+#endif
}
/* *INDENT-ON* */
diff --git a/nickserv.c b/nickserv.c
index 0a05a58b3..0198a1c8d 100644
--- a/nickserv.c
+++ b/nickserv.c
@@ -2483,7 +2483,7 @@ int should_mode_change(int16 status, int16 mode)
}
break;
#endif
-#ifdef IRC_ULTIMATE3
+#if defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
case CUS_PROTECT:
if (status & CUS_PROTECT) {
return 0;
@@ -2510,7 +2510,7 @@ static int do_setmodes(User * u)
chan_set_user_status(c, u, CUS_OWNER);
} else
#endif
-#if defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_ULTIMATE3)
+#if defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
if (should_mode_change(uc->status, CUS_PROTECT)
&& check_should_protect(u, chan)) {
chan_set_user_status(c, u, CUS_PROTECT);
diff --git a/operserv.c b/operserv.c
index 07f76ca8b..b4d84f959 100644
--- a/operserv.c
+++ b/operserv.c
@@ -1614,7 +1614,7 @@ static int do_clearmodes(User * u)
int all = 0;
int count; /* For saving ban info */
char **bans; /* For saving ban info */
-#if defined (IRC_ULTIMATE) || defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) ||defined (IRC_VIAGRA)
+#ifdef HAS_EXCEPT
int exceptcount; /* For saving except info */
char **excepts; /* For saving except info */
#endif
@@ -1723,7 +1723,7 @@ static int do_clearmodes(User * u)
free(bans);
-#if defined (IRC_ULTIMATE) || defined (IRC_UNREAL) || defined (IRC_ULTIMATE3) || defined (IRC_VIAGRA)
+#ifdef HAS_EXCEPT
/* Clear excepts */
exceptcount = c->exceptcount;
excepts = scalloc(sizeof(char *) * exceptcount, 1);
diff --git a/services.h b/services.h
index e207e971b..1d8e54fad 100644
--- a/services.h
+++ b/services.h
@@ -134,22 +134,32 @@ typedef struct channel_ Channel;
/* Protocol tweaks */
#ifdef IRC_HYBRID
# define HAS_HALFOP
+# define HAS_EXCEPT /* Has +e (chan excepts) */
#endif
#ifdef IRC_VIAGRA
# define HAS_HALFOP
# define HAS_VHOST
# define HAS_VIDENT
+# define HAS_EXCEPT
#endif
#ifdef IRC_BAHAMUT
# define HAS_NICKIP
#endif
+#ifdef IRC_RAGE2
+# define HAS_HALFOP
+# define HAS_EXCEPT
+# define HAS_VHOST
+# define HAS_NICKVHOST
+#endif
+
#ifdef IRC_PTLINK
# define HAS_NICKVHOST
# define HAS_VHOST
# define HAS_FMODE
+# define HAS_EXCEPT
#endif
#ifdef IRC_ULTIMATE
@@ -158,6 +168,7 @@ typedef struct channel_ Channel;
# define HAS_LMODE /* Has +L chan mode */
# define HAS_VHOST
# define HAS_VIDENT /* Can the IRCD Change Idents on the fly */
+# define HAS_EXCEPT
#endif
#ifdef IRC_UNREAL
@@ -167,6 +178,7 @@ typedef struct channel_ Channel;
# define HAS_NICKVHOST
# define HAS_VHOST
# define HAS_VIDENT /* Can the IRCD Change Idents on the fly */
+# define HAS_EXCEPT
#endif
#ifdef IRC_ULTIMATE3
@@ -174,6 +186,7 @@ typedef struct channel_ Channel;
# define HAS_VHOST
# define HAS_NICKVHOST
# define HAS_VIDENT /* Can the IRCD Change Idents on the fly */
+# define HAS_EXCEPT
#endif
/*************************************************************************/
@@ -667,6 +680,10 @@ struct csmodeutil_ {
#define MUT_DEPROTECT 6
#define MUT_PROTECT 7
#endif
+#ifdef IRC_RAGE2
+#define MUT_DEPROTECT 6
+#define MUT_PROTECT 7
+#endif
#ifdef IRC_VIAGRA
#define MUT_DEPROTECT 6
#define MUT_PROTECT 7
@@ -752,12 +769,12 @@ struct user_ {
#define UMODE_p 0x04000000
#endif
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_RAGE2)
# define UMODE_x 0x40000000
#endif
/* Returns *current* user hostname */
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_RAGE2)
# define GetHost(x) ((x)->mode & UMODE_x ? (x)->vhost : (x)->host)
#elif defined(IRC_PTLINK)
# define GetHost(x) ((x)->mode & UMODE_o ? (x)->vhost ? (x)->vhost : (x)->host : (x)->host)
@@ -789,7 +806,14 @@ struct user_ {
(user), (host), ServerName, (real)); \
if ((qline)) send_cmd(NULL, "SQLINE %s :Reserved for services", (nick)); \
} while (0)
-#elif defined(IRC_BAHAMUT) && !defined(IRC_ULTIMATE3)
+#elif defined(IRC_RAGE2)
+# define NEWNICK(nick,user,host,real,modes,qline) \
+ do { \
+ send_cmd(NULL, "SNICK %s %ld 1 %s %s 0 * %s 0 %s :%s", (nick), time(NULL), (user), \
+ (host), ServerName, (modes), (real)); \
+ if ((qline)) send_cmd(NULL, "SQLINE %s :Reserved for services", (nick)); \
+ } while (0)
+#elif defined(IRC_BAHAMUT) && !defined(IRC_ULTIMATE3) && !defined(IRC_RAGE2)
# define NEWNICK(nick,user,host,real,modes,qline) \
do { \
send_cmd(NULL, "NICK %s 1 %ld %s %s %s %s 0 0 :%s", (nick), time(NULL), (modes), \
@@ -885,6 +909,10 @@ struct cumode_ {
#define CUS_PROTECT 0x0010 /* Protected users (+a) */
#endif
+#ifdef IRC_RAGE2
+#define CUS_PROTECT 0x0010 /* Protected users (+a) */
+#endif
+
/* Used by PTlink */
#ifdef IRC_PTLINK
#define CUS_PROTECT 0x0016 /* Protected users (+a) */
@@ -902,13 +930,17 @@ struct cumode_ {
# define CHAN_MAX_SYMBOLS 5
#elif defined(IRC_UNREAL)
# define CHAN_MAX_SYMBOLS 5
+#elif defined(IRC_RAGE2)
+# define CHAN_MAX_SYMBOLS 3
#else
# define CHAN_MAX_SYMBOLS 2
#endif
/* Binary modes that need to be cleared */
-#if defined(IRC_BAHAMUT)
+#if defined(IRC_RAGE2)
+#define MODESTOREMOVE "-iklmnpRstcOASCNM"
+#elif defined(IRC_BAHAMUT)
#define MODESTOREMOVE "-ciklmnpstOR"
#elif defined(IRC_ULTIMATE)
#define MODESTOREMOVE "-kiflmnpstxAIKLORS"
@@ -1063,6 +1095,14 @@ struct channel_ {
#define CMODE_K 0x00004000
#endif
+/* These modes are for IRC_RAGE2 servers only */
+#ifdef IRC_RAGE2
+#define CMODE_A 0x00000800
+#define CMODE_N 0x00001000
+#define CMODE_S 0x00002000
+#define CMODE_C 0x00004000
+#endif
+
/* These modes are for IRC_PTLINK servers only. */
#ifdef IRC_PTLINK
#define CMODE_A 0x00000400
diff --git a/users.c b/users.c
index c98b35079..f868ebdba 100644
--- a/users.c
+++ b/users.c
@@ -57,12 +57,14 @@ static unsigned long umodes[128] = {
0,
#endif
0, UMODE_r, 0, 0, 0, 0, UMODE_w,
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_RAGE2)
UMODE_x,
#else
0,
#endif
- 0, 0, 0, 0, 0, 0, 0
+ 0,
+ 0,
+ 0, 0, 0, 0, 0
};
/*************************************************************************/
@@ -160,7 +162,7 @@ static void update_host(User * user)
/*************************************************************************/
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_PTLINK)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_PTLINK) || defined(IRC_RAGE2)
/* Change the (virtual) hostname of a user. */
@@ -311,12 +313,14 @@ void set_umode(User * user, int ac, char **av)
user->mode |= UMODE_a;
}
#endif
-#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
+#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_RAGE2)
if (is_services_oper(user)) {
send_cmd(ServerName, "SVSMODE %s +a", user->nick);
user->mode |= UMODE_a;
}
+#endif
+#if defined(IRC_ULTIMATE) || defined(IRC_ULTIMATE3)
if (is_services_admin(user)) {
send_cmd(ServerName, "SVSMODE %s +P", user->nick);
user->mode |= UMODE_P;
@@ -345,7 +349,7 @@ void set_umode(User * user, int ac, char **av)
user->mode &= ~UMODE_r;
}
break;
-#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA)
+#if defined(IRC_ULTIMATE) || defined(IRC_UNREAL) || defined(IRC_ULTIMATE3) || defined(IRC_VIAGRA) || defined(IRC_RAGE2)
case 'x':
update_host(user);
break;
@@ -956,7 +960,7 @@ int is_oper(User * user)
/*************************************************************************/
/*************************************************************************/
-#if defined (IRC_ULTIMATE) || defined(IRC_ULTIMATE3) || defined(IRC_UNREAL) || defined(IRC_VIAGRA) || defined(IRC_HYBRID)
+#ifdef HAS_EXCEPT
/* Is the given user ban-excepted? */
int is_excepted(ChannelInfo * ci, User * user)
{
diff --git a/version.log b/version.log
index 9b99d6221..f07411d52 100644
--- a/version.log
+++ b/version.log
@@ -8,11 +8,15 @@
VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="2"
-VERSION_BUILD="92"
+VERSION_BUILD="93"
VERSION_EXTRA=""
# $Log$
#
+# BUILD : 1.7.2 (93)
+# BUGS : 46
+# NOTES : Applied the Rage2 IRCD patch provided by al
+#
# BUILD : 1.7.2 (92)
# BUGS : 43
# NOTES : Fixed moduleData error with memo Data handeling
diff --git a/version.sh b/version.sh
index 8e19f92a4..c29a030ac 100644
--- a/version.sh
+++ b/version.sh
@@ -53,10 +53,13 @@ const char version_build[] =
const char version_protocol[] =
#if defined(IRC_ULTIMATE3)
"UltimateIRCd 3.0.0.a26+"
-#define VER_IRCD "UltimateIRCd 3.0.* -"
+# define VER_IRCD "UltimateIRCd 3.0.* -"
#elif defined(IRC_VIAGRA)
"ViagraIRCd 1.3.x"
# define VER_IRCD "ViagraIRCd 1.3.* -"
+#elif defined(IRC_RAGE2)
+ "RageIRCd 2.0.x"
+# define VER_IRCD "RageIRCd 2.0.* -"
#elif defined(IRC_BAHAMUT)
"Bahamut 1.4.27+"
# define VER_IRCD "BahamutIRCd 1.4.* -"