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>2006-06-22 17:04:21 +0000
committerrob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2006-06-22 17:04:21 +0000
commitcff6e7eb1a90816f09eb61ddda9697cfc30fb2c1 (patch)
tree50182cb4bd6ca731eebfde462985edfedb792719
parent6690784bff9e62e9d1a742080294ca8008c4efe3 (diff)
BUILD : 1.7.14 (1069) BUGS : N/A NOTES : Added support for ircd modules to set extra modes based on services access (plexus needs this)
git-svn-id: svn://svn.anope.org/anope/trunk@1069 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@793 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes3
-rw-r--r--include/services.h3
-rw-r--r--src/core/ns_group.c15
-rw-r--r--src/core/ns_identify.c15
-rw-r--r--src/core/ns_register.c18
-rw-r--r--src/modules.c4
-rw-r--r--src/protocol/bahamut.c3
-rw-r--r--src/protocol/charybdis.c3
-rw-r--r--src/protocol/dreamforge.c3
-rw-r--r--src/protocol/hybrid.c3
-rw-r--r--src/protocol/inspircd.c3
-rw-r--r--src/protocol/plexus2.c3
-rw-r--r--src/protocol/plexus3.c3
-rw-r--r--src/protocol/ptlink.c3
-rw-r--r--src/protocol/rageircd.c3
-rw-r--r--src/protocol/ratbox.c3
-rw-r--r--src/protocol/shadowircd.c3
-rw-r--r--src/protocol/solidircd.c3
-rw-r--r--src/protocol/ultimate2.c3
-rw-r--r--src/protocol/ultimate3.c3
-rw-r--r--src/protocol/unreal31.c3
-rw-r--r--src/protocol/unreal32.c3
-rw-r--r--src/protocol/viagra.c3
-rw-r--r--version.log6
24 files changed, 105 insertions, 10 deletions
diff --git a/Changes b/Changes
index 3f6da537e..80b8c6318 100644
--- a/Changes
+++ b/Changes
@@ -3,6 +3,9 @@ Anope Version S V N
Provided by Anope Dev. <dev@anope.org> - 2006
06/14 A Indication in the version string if we're running on win32. [ #00]
06/20 A Added support for Visual Studio 2005. [#408]
+06/22 A Ability for ircd modules to set extra modes on id. [ #00]
+06/22 A Support startup flag. [ #00]
+06/21 A Module version check. [ #00]
04/08 F Fixed Charybdis support on win32. [#487]
04/08 F Fixed thread stuff on windows. [#488]
04/08 F Fixed SGLine stuff on inspircd (not supported). [#489]
diff --git a/include/services.h b/include/services.h
index 3d7d8b140..2ee228233 100644
--- a/include/services.h
+++ b/include/services.h
@@ -286,6 +286,9 @@ struct ircdvars_ {
char *adminset; /* Mode to set for admin */
char *adminunset; /* Mode to unset for admin */
char *modeonreg; /* Mode on Register */
+ char *rootmodeonid; /* Mode on ID for ROOTS */
+ char *adminmodeonid; /* Mode on ID for ADMINS */
+ char *opermodeonid; /* Mode on ID for OPERS */
char *modeonunreg; /* Mode on Unregister */
char *modeonnick; /* Mode on nick change */
int sgline; /* Supports SGline */
diff --git a/src/core/ns_group.c b/src/core/ns_group.c
index f652547a9..b50085c69 100644
--- a/src/core/ns_group.c
+++ b/src/core/ns_group.c
@@ -94,6 +94,8 @@ int do_group(User * u)
char *pass = strtok(NULL, " ");
int i;
char tsbuf[16];
+ char modes[512];
+ int len;
if (NSEmailReg && (findrequestnick(u->nick))) {
notice_lang(s_NickServ, u, NICK_REQUESTED);
@@ -229,10 +231,19 @@ int do_group(User * u)
snprintf(tsbuf, sizeof(tsbuf), "%lu",
(unsigned long int) u->timestamp);
if (ircd->modeonreg) {
+ len = strlen(ircd->modeonreg);
+ strncpy(modes,ircd->modeonreg,512);
+ if(ircd->rootmodeonid && (u->na->nc->flags & NI_SERVICES_ROOT)) {
+ strncat(modes,ircd->rootmodeonid,512-len);
+ } else if(ircd->adminmodeonid && (u->na->nc->flags & NI_SERVICES_ADMIN)) {
+ strncat(modes,ircd->adminmodeonid,512-len);
+ } else if(ircd->opermodeonid && (u->na->nc->flags & NI_SERVICES_OPER)) {
+ strncat(modes,ircd->opermodeonid,512-len);
+ }
if (ircd->tsonmode) {
- common_svsmode(u, ircd->modeonreg, tsbuf);
+ common_svsmode(u, modes, tsbuf);
} else {
- common_svsmode(u, ircd->modeonreg, NULL);
+ common_svsmode(u, modes, NULL);
}
}
diff --git a/src/core/ns_identify.c b/src/core/ns_identify.c
index 362cd4488..d69405484 100644
--- a/src/core/ns_identify.c
+++ b/src/core/ns_identify.c
@@ -79,6 +79,8 @@ int do_identify(User * u)
NickRequest *nr;
int res;
char tsbuf[16];
+ char modes[512];
+ int len;
if (!pass) {
syntax_error(s_NickServ, u, "IDENTIFY", NICK_IDENTIFY_SYNTAX);
@@ -121,10 +123,19 @@ int do_identify(User * u)
(unsigned long int) u->timestamp);
if (ircd->modeonreg) {
+ len = strlen(ircd->modeonreg);
+ strncpy(modes,ircd->modeonreg,512);
+ if(ircd->rootmodeonid && (u->na->nc->flags & NI_SERVICES_ROOT)) {
+ strncat(modes,ircd->rootmodeonid,512-len);
+ } else if(ircd->adminmodeonid && (u->na->nc->flags & NI_SERVICES_ADMIN)) {
+ strncat(modes,ircd->adminmodeonid,512-len);
+ } else if(ircd->opermodeonid && (u->na->nc->flags & NI_SERVICES_OPER)) {
+ strncat(modes,ircd->opermodeonid,512-len);
+ }
if (ircd->tsonmode) {
- common_svsmode(u, ircd->modeonreg, tsbuf);
+ common_svsmode(u, modes, tsbuf);
} else {
- common_svsmode(u, ircd->modeonreg, "");
+ common_svsmode(u, modes, "");
}
}
send_event(EVENT_NICK_IDENTIFY, 1, u->nick);
diff --git a/src/core/ns_register.c b/src/core/ns_register.c
index f2b3f1ad8..7f9cb0350 100644
--- a/src/core/ns_register.c
+++ b/src/core/ns_register.c
@@ -253,9 +253,9 @@ int do_confirm(User * u)
char *email = NULL;
int forced = 0;
User *utmp = NULL;
-#ifdef USE_ENCRYPTION
+ char modes[512];
int len;
-#endif
+
nr = findrequestnick(u->nick);
if (NSEmailReg) {
@@ -383,12 +383,22 @@ int do_confirm(User * u)
#endif
u->lastnickreg = time(NULL);
if (ircd->modeonreg) {
+ len = strlen(ircd->modeonreg);
+ strncpy(modes,ircd->modeonreg,512);
+ if(ircd->rootmodeonid && (u->na->nc->flags & NI_SERVICES_ROOT)) {
+ strncat(modes,ircd->rootmodeonid,512-len);
+ } else if(ircd->adminmodeonid && (u->na->nc->flags & NI_SERVICES_ADMIN)) {
+ strncat(modes,ircd->adminmodeonid,512-len);
+ } else if(ircd->opermodeonid && (u->na->nc->flags & NI_SERVICES_OPER)) {
+ strncat(modes,ircd->opermodeonid,512-len);
+ }
+
if (ircd->tsonmode) {
snprintf(tsbuf, sizeof(tsbuf), "%lu",
(unsigned long int) u->timestamp);
- common_svsmode(u, ircd->modeonreg, tsbuf);
+ common_svsmode(u, modes, tsbuf);
} else {
- common_svsmode(u, ircd->modeonreg, NULL);
+ common_svsmode(u, modes, NULL);
}
}
diff --git a/src/modules.c b/src/modules.c
index 19d1a0a84..70e87317b 100644
--- a/src/modules.c
+++ b/src/modules.c
@@ -586,7 +586,9 @@ int loadModule(Module * m, User * u)
if (func) {
version = (int (*)())ano_modsym(m->handle,"getAnopeBuildVersion");
if(version && version() >= VERSION_BUILD ) {
- alog("Module %s compiled against anope revision %d, this is %d",m->name,version(),VERSION_BUILD);
+ if(debug) {
+ alog("Module %s compiled against anope revision %d, this is %d",m->name,version(),VERSION_BUILD);
+ }
} else {
ano_modclose(m->handle);
ano_modclearerr();
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index 9f75128e5..62da0fbd6 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -49,6 +49,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for channel admin */
NULL, /* Mode to unset for channel admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index 074ff3b4d..75e292d09 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -48,6 +48,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for chan admin */
NULL, /* Mode to unset for chan admin */
NULL, /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
NULL, /* Mode on UnReg */
NULL, /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/dreamforge.c b/src/protocol/dreamforge.c
index 0786fa351..bb48eb34e 100644
--- a/src/protocol/dreamforge.c
+++ b/src/protocol/dreamforge.c
@@ -47,6 +47,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for chan admin */
NULL, /* Mode to unset for chan admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"+d", /* Mode on Nick Change */
0, /* Supports SGlines */
diff --git a/src/protocol/hybrid.c b/src/protocol/hybrid.c
index 5811a741a..f725de0c8 100644
--- a/src/protocol/hybrid.c
+++ b/src/protocol/hybrid.c
@@ -47,6 +47,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for admin */
NULL, /* Mode to unset for admin */
NULL, /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
NULL, /* Mode on UnReg */
NULL, /* Mode on Nick Change */
0, /* Supports SGlines */
diff --git a/src/protocol/inspircd.c b/src/protocol/inspircd.c
index c3630a3b7..d500be642 100644
--- a/src/protocol/inspircd.c
+++ b/src/protocol/inspircd.c
@@ -66,6 +66,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+r", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r", /* Mode on UnReg */
"-r", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/plexus2.c b/src/protocol/plexus2.c
index dc0efb66f..0ce4bbda1 100644
--- a/src/protocol/plexus2.c
+++ b/src/protocol/plexus2.c
@@ -45,6 +45,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for chan admin */
NULL, /* Mode to unset for chan admin */
"+R", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-R", /* Mode on UnReg */
"-R", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c
index 5e2910c46..c4185b6f3 100644
--- a/src/protocol/plexus3.c
+++ b/src/protocol/plexus3.c
@@ -45,6 +45,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for chan admin */
"-a", /* Mode to unset for chan admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/ptlink.c b/src/protocol/ptlink.c
index d30117e96..75400144e 100644
--- a/src/protocol/ptlink.c
+++ b/src/protocol/ptlink.c
@@ -47,6 +47,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for chan admin */
"-a", /* Mode to unset for chan admin */
"+r", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r", /* Mode on UnReg */
NULL, /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/rageircd.c b/src/protocol/rageircd.c
index e54808bbc..c09c8eb9a 100644
--- a/src/protocol/rageircd.c
+++ b/src/protocol/rageircd.c
@@ -47,6 +47,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-rd", /* Mode on UnReg */
"-r+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index a6e154bea..e91627ce6 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -49,6 +49,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for chan admin */
NULL, /* Mode to unset for chan admin */
NULL, /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
NULL, /* Mode on UnReg */
NULL, /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/shadowircd.c b/src/protocol/shadowircd.c
index 8e2a69c24..125012b92 100644
--- a/src/protocol/shadowircd.c
+++ b/src/protocol/shadowircd.c
@@ -51,6 +51,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+e", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-e", /* Mode on UnReg */
"-e", /* Mode on Nick Change */
0, /* Supports SGlines */
diff --git a/src/protocol/solidircd.c b/src/protocol/solidircd.c
index dc9e02cc6..884674c3c 100644
--- a/src/protocol/solidircd.c
+++ b/src/protocol/solidircd.c
@@ -49,6 +49,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for chan admin */
NULL, /* Mode to unset for chan admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/ultimate2.c b/src/protocol/ultimate2.c
index 4bf3d6b89..df92ec58a 100644
--- a/src/protocol/ultimate2.c
+++ b/src/protocol/ultimate2.c
@@ -47,6 +47,9 @@ IRCDVar myIrcd[] = {
NULL, /* Mode to set for chan admin */
NULL, /* Mode to remove for chan admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"-r+d", /* Mode on Nick Change */
0, /* Supports SGlines */
diff --git a/src/protocol/ultimate3.c b/src/protocol/ultimate3.c
index dbcd6a1fb..09ed1f89d 100644
--- a/src/protocol/ultimate3.c
+++ b/src/protocol/ultimate3.c
@@ -47,6 +47,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/unreal31.c b/src/protocol/unreal31.c
index a542a5ce0..40275140d 100644
--- a/src/protocol/unreal31.c
+++ b/src/protocol/unreal31.c
@@ -49,6 +49,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"-r+d", /* Mode on Nick Change */
0, /* Supports SGlines */
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 030073ece..bd3ae2322 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -49,6 +49,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"-r+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/src/protocol/viagra.c b/src/protocol/viagra.c
index b44114255..fc206a2b6 100644
--- a/src/protocol/viagra.c
+++ b/src/protocol/viagra.c
@@ -48,6 +48,9 @@ IRCDVar myIrcd[] = {
"+a", /* Mode to set for channel admin */
"-a", /* Mode to unset for channel admin */
"+rd", /* Mode On Reg */
+ NULL, /* Mode on ID for Roots */
+ NULL, /* Mode on ID for Admins */
+ NULL, /* Mode on ID for Opers */
"-r+d", /* Mode on UnReg */
"-r+d", /* Mode on Nick Change */
1, /* Supports SGlines */
diff --git a/version.log b/version.log
index 0b4cf5f10..c255f0d89 100644
--- a/version.log
+++ b/version.log
@@ -9,10 +9,14 @@ VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="14"
VERSION_EXTRA=""
-VERSION_BUILD="1068"
+VERSION_BUILD="1069"
# $Log$
#
+# BUILD : 1.7.14 (1069)
+# BUGS : N/A
+# NOTES : Added support for ircd modules to set extra modes based on services access (plexus needs this)
+#
# BUILD : 1.7.14 (1068)
# BUGS : N/A
# NOTES : Added -nothird and -support command line options