summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViper <Viper@Anope.org>2010-09-10 16:32:23 +0200
committerViper <Viper@Anope.org>2010-09-10 16:32:23 +0200
commitac338266f40fb9769f68879db2c18ff33f45d281 (patch)
tree9680ae99c6bdabbbbb2dc4d5f2cb8238f8e911d0
parent7385580ffa43dfb810a2e3269711d37eaa81f80b (diff)
Fixed InspIRCd 1.1,1.2 and 2.0 protocol modules to oper pseudo-clients only when needed.
-rw-r--r--Changes1
-rw-r--r--src/protocol/inspircd11.c38
-rw-r--r--src/protocol/inspircd12.c18
-rw-r--r--src/protocol/inspircd20.c44
-rw-r--r--version.log4
5 files changed, 57 insertions, 48 deletions
diff --git a/Changes b/Changes
index cada4e76a..d8d8deae5 100644
--- a/Changes
+++ b/Changes
@@ -20,6 +20,7 @@ Anope Version 1.8 - GIT
07/01 F Fixed encrypting very long passwords when registering [#1172]
08/03 F Fixed tracking users vhosts when there is no vhost mode [#1178]
08/05 F Fixed tracking of our clients after nick changing on InspIRCd [#1180]
+09/10 F Fixed pseudo-clients always getting oper on InspIRCd. [ #00]
Provided by Han` <Han@mefalcon.org> - 2010
8/14 F Updated german language file. [ #00]
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 6a28f9fda..d9dfb3875 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -37,25 +37,25 @@ int inet_aton(const char *name, struct in_addr *addr)
IRCDVar myIrcd[] = {
{"InspIRCd 1.1", /* ircd name */
- "+oI", /* nickserv mode */
- "+oI", /* chanserv mode */
- "+oI", /* memoserv mode */
- "+oI", /* hostserv mode */
+ "+I", /* nickserv mode */
+ "+I", /* chanserv mode */
+ "+I", /* memoserv mode */
+ "+I", /* hostserv mode */
"+ioI", /* operserv mode */
- "+oI", /* botserv mode */
- "+oI", /* helpserv mode */
+ "+I", /* botserv mode */
+ "+I", /* helpserv mode */
"+iI", /* Dev/Null mode */
- "+ioI", /* Global mode */
- "+oI", /* nickserv alias mode */
- "+oI", /* chanserv alias mode */
- "+oI", /* memoserv alias mode */
- "+ioI", /* hostserv alias mode */
+ "+iI", /* Global mode */
+ "+I", /* nickserv alias mode */
+ "+I", /* chanserv alias mode */
+ "+I", /* memoserv alias mode */
+ "+I", /* hostserv alias mode */
"+ioI", /* operserv alias mode */
- "+oI", /* botserv alias mode */
- "+oI", /* helpserv alias mode */
+ "+I", /* botserv alias mode */
+ "+I", /* helpserv alias mode */
"+iI", /* Dev/Null alias mode */
- "+ioI", /* Global alias mode */
- "+sI", /* Used by BotServ Bots */
+ "+iI", /* Global alias mode */
+ "+I", /* Used by BotServ Bots */
5, /* Chan Max Symbols */
"-cijlmnpstuzACGHKNOQRSV", /* Modes to Remove */
"+ao", /* Channel Umode used by Botserv bots */
@@ -616,8 +616,9 @@ void inspircd_cmd_nick(char *nick, char *name, char *modes)
send_cmd(ServerName, "NICK %ld %s %s %s %s +%s 0.0.0.0 :%s",
(long int) time(NULL), nick, ServiceHost, ServiceHost,
ServiceUser, modes, name);
- /* Don't send ServerName as the source here... -GD */
- send_cmd(nick, "OPERTYPE Service");
+ if (strchr(modes, 'o') != NULL)
+ /* Don't send ServerName as the source here... -GD */
+ send_cmd(nick, "OPERTYPE Service");
}
void
@@ -784,7 +785,8 @@ inspircd_cmd_bot_nick(char *nick, char *user, char *host, char *real,
{
send_cmd(ServerName, "NICK %ld %s %s %s %s +%s 0.0.0.0 :%s",
(long int) time(NULL), nick, host, host, user, modes, real);
- send_cmd(nick, "OPERTYPE Bot");
+ if (strchr(modes, 'o') != NULL)
+ send_cmd(nick, "OPERTYPE Bot");
}
void inspircd_cmd_kick(char *source, char *chan, char *user, char *buf)
diff --git a/src/protocol/inspircd12.c b/src/protocol/inspircd12.c
index c6262e966..7dd46567b 100644
--- a/src/protocol/inspircd12.c
+++ b/src/protocol/inspircd12.c
@@ -40,19 +40,19 @@ int inet_aton(const char *name, struct in_addr *addr)
IRCDVar myIrcd[] = {
{"InspIRCd 1.2", /* ircd name */
- "+oI", /* nickserv mode */
- "+oI", /* chanserv mode */
+ "+I", /* nickserv mode */
+ "+I", /* chanserv mode */
"+I", /* memoserv mode */
- "+oI", /* hostserv mode */
+ "+I", /* hostserv mode */
"+ioI", /* operserv mode */
"+I", /* botserv mode */
"+I", /* helpserv mode */
"+iI", /* Dev/Null mode */
"+iI", /* Global mode */
- "+oI", /* nickserv alias mode */
- "+oI", /* chanserv alias mode */
+ "+I", /* nickserv alias mode */
+ "+I", /* chanserv alias mode */
"+I", /* memoserv alias mode */
- "+oI", /* hostserv alias mode */
+ "+I", /* hostserv alias mode */
"+ioI", /* operserv alias mode */
"+I", /* botserv alias mode */
"+I", /* helpserv alias mode */
@@ -660,7 +660,8 @@ void inspircd_cmd_nick(char *nick, char *name, char *modes)
nicknumbuf, (long int) time(NULL), nick, ServiceHost,
ServiceHost, ServiceUser, (long int) time(NULL), modes, name);
new_uid(nick, nicknumbuf);
- send_cmd(nicknumbuf, "OPERTYPE Service");
+ if (strchr(modes, 'o') != NULL)
+ send_cmd(nicknumbuf, "OPERTYPE Service");
}
void inspircd_cmd_guest_nick(char *nick, char *user, char *host,
@@ -868,7 +869,8 @@ void inspircd_cmd_bot_nick(char *nick, char *user, char *host, char *real,
nicknumbuf, (long int) time(NULL), nick, host, host, user,
(long int) time(NULL), modes, real);
new_uid(nick, nicknumbuf);
- send_cmd(nicknumbuf, "OPERTYPE Bot");
+ if (strchr(modes, 'o') != NULL)
+ send_cmd(nicknumbuf, "OPERTYPE Bot");
}
void inspircd_cmd_kick(char *source, char *chan, char *user, char *buf)
diff --git a/src/protocol/inspircd20.c b/src/protocol/inspircd20.c
index d14df4820..2cce12268 100644
--- a/src/protocol/inspircd20.c
+++ b/src/protocol/inspircd20.c
@@ -71,25 +71,25 @@ static void do_nothing(Channel *c, char *mask) { }
IRCDVar myIrcd[] = {
{"InspIRCd 2.0", /* ircd name */
- "+oI", /* nickserv mode */
- "+oI", /* chanserv mode */
- "+I", /* memoserv mode */
- "+oI", /* hostserv mode */
- "+ioI", /* operserv mode */
- "+I", /* botserv mode */
- "+I", /* helpserv mode */
- "+iI", /* Dev/Null mode */
- "+iI", /* Global mode */
- "+oI", /* nickserv alias mode */
- "+oI", /* chanserv alias mode */
- "+I", /* memoserv alias mode */
- "+oI", /* hostserv alias mode */
- "+ioI", /* operserv alias mode */
- "+I", /* botserv alias mode */
- "+I", /* helpserv alias mode */
- "+iI", /* Dev/Null alias mode */
- "+iI", /* Global alias mode */
- "+I", /* Used by BotServ Bots */
+ "+I", /* nickserv mode */
+ "+I", /* chanserv mode */
+ "+I", /* memoserv mode */
+ "+I", /* hostserv mode */
+ "+ioI", /* operserv mode */
+ "+I", /* botserv mode */
+ "+I", /* helpserv mode */
+ "+iI", /* Dev/Null mode */
+ "+iI", /* Global mode */
+ "+I", /* nickserv alias mode */
+ "+I", /* chanserv alias mode */
+ "+I", /* memoserv alias mode */
+ "+I", /* hostserv alias mode */
+ "+ioI", /* operserv alias mode */
+ "+I", /* botserv alias mode */
+ "+I", /* helpserv alias mode */
+ "+iI", /* Dev/Null alias mode */
+ "+iI", /* Global alias mode */
+ "+I", /* Used by BotServ Bots */
5, /* Chan Max Symbols */
"-cijlmnpstuzACGHKNOQRSV", /* Modes to Remove */
"+oa", /* Channel Umode used by Botserv bots */
@@ -707,7 +707,8 @@ void inspircd_cmd_nick(char *nick, char *name, char *modes)
nicknumbuf, (long int) time(NULL), nick, ServiceHost,
ServiceHost, ServiceUser, (long int) time(NULL), modes, name);
new_uid(nick, nicknumbuf);
- send_cmd(nicknumbuf, "OPERTYPE Service");
+ if (strchr(modes, 'o') != NULL)
+ send_cmd(nicknumbuf, "OPERTYPE Service");
}
void inspircd_cmd_guest_nick(char *nick, char *user, char *host,
@@ -875,7 +876,8 @@ void inspircd_cmd_bot_nick(char *nick, char *user, char *host, char *real,
nicknumbuf, (long int) time(NULL), nick, host, host, user,
(long int) time(NULL), modes, real);
new_uid(nick, nicknumbuf);
- send_cmd(nicknumbuf, "OPERTYPE Bot");
+ if (strchr(modes, 'o') != NULL)
+ send_cmd(nicknumbuf, "OPERTYPE Bot");
}
void inspircd_cmd_kick(char *source, char *chan, char *user, char *buf)
diff --git a/version.log b/version.log
index 372860357..50e9ccb01 100644
--- a/version.log
+++ b/version.log
@@ -8,9 +8,11 @@ VERSION_MAJOR="1"
VERSION_MINOR="8"
VERSION_PATCH="4"
VERSION_EXTRA="-git"
-VERSION_BUILD="3033"
+VERSION_BUILD="3035"
# $Log$ # Changes since the 1.8.4 Release
+#Revision 3035 - Fixed InspIRCd 1.1,1.2 and 2.0 protocol modules to oper pseudo-clients only when needed.
+#Revision 3034 - Fixed comments in insp20 protocol module to be accepted by all supported compilers.
#Revision 3031 - Added InspIRCd 2.0 support
#Revision 3030 - Fixed do_sjoin to properly find the server source on TS6 IRCds
#Revision 3029 - Fixed InspIRCd1.2 protocol module passing invalid users in the SJOIN string which made internal debug messages confusing/wrong