diff options
-rw-r--r-- | Changes | 3 | ||||
-rw-r--r-- | include/services.h | 3 | ||||
-rw-r--r-- | src/core/ns_group.c | 15 | ||||
-rw-r--r-- | src/core/ns_identify.c | 15 | ||||
-rw-r--r-- | src/core/ns_register.c | 18 | ||||
-rw-r--r-- | src/modules.c | 4 | ||||
-rw-r--r-- | src/protocol/bahamut.c | 3 | ||||
-rw-r--r-- | src/protocol/charybdis.c | 3 | ||||
-rw-r--r-- | src/protocol/dreamforge.c | 3 | ||||
-rw-r--r-- | src/protocol/hybrid.c | 3 | ||||
-rw-r--r-- | src/protocol/inspircd.c | 3 | ||||
-rw-r--r-- | src/protocol/plexus2.c | 3 | ||||
-rw-r--r-- | src/protocol/plexus3.c | 3 | ||||
-rw-r--r-- | src/protocol/ptlink.c | 3 | ||||
-rw-r--r-- | src/protocol/rageircd.c | 3 | ||||
-rw-r--r-- | src/protocol/ratbox.c | 3 | ||||
-rw-r--r-- | src/protocol/shadowircd.c | 3 | ||||
-rw-r--r-- | src/protocol/solidircd.c | 3 | ||||
-rw-r--r-- | src/protocol/ultimate2.c | 3 | ||||
-rw-r--r-- | src/protocol/ultimate3.c | 3 | ||||
-rw-r--r-- | src/protocol/unreal31.c | 3 | ||||
-rw-r--r-- | src/protocol/unreal32.c | 3 | ||||
-rw-r--r-- | src/protocol/viagra.c | 3 | ||||
-rw-r--r-- | version.log | 6 |
24 files changed, 105 insertions, 10 deletions
@@ -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 |