summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-10-25 06:32:47 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2009-10-25 06:32:47 +0000
commita43424dbb94831342b41d6823522eaa1ce4fe881 (patch)
treeccdbd09c25a86e7bff43f5adb4f90ae02eabebb5 /src
parent13f92e03bef779626802149df23e458aea489b27 (diff)
Added internal tracking of InspIRCd1.2 channel modes BFfjMPT and user modes BcdGHIkQRSW, also added tracking of Unreal3.2s channel mode j
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2588 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/protocol/inspircd12.cpp88
-rw-r--r--src/protocol/unreal32.c1
2 files changed, 71 insertions, 18 deletions
diff --git a/src/protocol/inspircd12.cpp b/src/protocol/inspircd12.cpp
index a700d0b69..d0f758518 100644
--- a/src/protocol/inspircd12.cpp
+++ b/src/protocol/inspircd12.cpp
@@ -1032,6 +1032,11 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
if (strstr(av[1], "m_services_account.so")) {
has_servicesmod = 1;
+ ModeManager::AddChannelMode('r', new ChannelModeRegistered());
+ ModeManager::AddChannelMode('R', new ChannelMode(CMODE_REGISTEREDONLY));
+ ModeManager::AddChannelMode('M', new ChannelMode(CMODE_REGMODERATED));
+ ModeManager::AddUserMode('r', new UserMode(UMODE_REGISTERED));
+ ModeManager::AddUserMode('R', new UserMode(UMODE_REGPRIV));
}
if (strstr(av[1], "m_svshold.so")) {
has_svsholdmod = 1;
@@ -1053,10 +1058,75 @@ int anope_event_capab(const char *source, int ac, const char **av)
}
if (strstr(av[1], "m_hidechans.so")) {
has_hidechansmod = 1;
+ ModeManager::AddUserMode('I', new UserMode(UMODE_PRIV));
}
if (strstr(av[1], "m_servprotect.so")) {
ircd->pseudoclient_mode = "+Ik";
+ ModeManager::AddUserMode('k', new UserMode(UMODE_PROTECTED));
}
+
+ /* Add channel modes to Anope, but only if theyre supported by the IRCd */
+ if (strstr(av[1], "m_blockcolor.so"))
+ ModeManager::AddChannelMode('c', new ChannelMode(CMODE_BLOCKCOLOR));
+ if (strstr(av[1], "m_auditorium.so"))
+ ModeManager::AddChannelMode('u', new ChannelMode(CMODE_AUDITORIUM));
+ if (strstr(av[1], "m_sslmodes.so"))
+ ModeManager::AddChannelMode('z', new ChannelMode(CMODE_SSL));
+ if (strstr(av[1], "m_allowinvite.so"))
+ ModeManager::AddChannelMode('A', new ChannelMode(CMODE_ALLINVITE));
+ if (strstr(av[1], "m_noctcp.so"))
+ ModeManager::AddChannelMode('C', new ChannelMode(CMODE_NOCTCP));
+ if (strstr(av[1], "m_censor.so"))
+ ModeManager::AddChannelMode('G', new ChannelMode(CMODE_FILTER));
+ if (strstr(av[1], "m_knock.so"))
+ ModeManager::AddChannelMode('K', new ChannelMode(CMODE_NOKNOCK));
+ if (strstr(av[1], "m_redirect.so"))
+ ModeManager::AddChannelMode('L', new ChannelModeParam(CMODE_REDIRECT));
+ if (strstr(av[1], "m_nonicks.so"))
+ ModeManager::AddChannelMode('N', new ChannelMode(CMODE_NONICK));
+ if (strstr(av[1], "m_operchans.so"))
+ ModeManager::AddChannelMode('O', new ChannelModeOper());
+ if (strstr(av[1], "m_nokicks.so"))
+ ModeManager::AddChannelMode('Q', new ChannelMode(CMODE_NOKICK));
+ if (strstr(av[1], "m_stripcolor.so"))
+ ModeManager::AddChannelMode('S', new ChannelMode(CMODE_STRIPCOLOR));
+ if (strstr(av[1], "m_callerid.so"))
+ ModeManager::AddUserMode('g', new UserMode(UMODE_CALLERID));
+ if (strstr(av[1], "m_helpop.so"))
+ ModeManager::AddUserMode('h', new UserMode(UMODE_HELPOP));
+ if (strstr(av[1], "m_cloaking.so"))
+ ModeManager::AddUserMode('x', new UserMode(UMODE_CLOAK));
+ if (strstr(av[1], "m_blockcaps.so"))
+ ModeManager::AddChannelMode('B', new ChannelMode(CMODE_BLOCKCAPS));
+ if (strstr(av[1], "m_nickflood.so"))
+ ModeManager::AddChannelMode('F', new ChannelModeParam(CMODE_NICKFLOOD));
+ if (strstr(av[1], "m_messageflood.so"))
+ ModeManager::AddChannelMode('f', new ChannelModeParam(CMODE_FLOOD));
+ if (strstr(av[1], "m_joinflood.so"))
+ ModeManager::AddChannelMode('j', new ChannelModeParam(CMODE_JOINFLOOD));
+ if (strstr(av[1], "m_permchannels.so"))
+ ModeManager::AddChannelMode('P', new ChannelMode(CMODE_PERM));
+ if (strstr(av[1], "m_nonotice.so"))
+ ModeManager::AddChannelMode('T', new ChannelMode(CMODE_NONOTICE));
+
+ /* User modes */
+ if (strstr(av[1], "m_botmode.so"))
+ ModeManager::AddUserMode('B', new UserMode(UMODE_BOT));
+ if (strstr(av[1], "m_commonchans.so"))
+ ModeManager::AddUserMode('c', new UserMode(UMODE_COMMONCHANS));
+ if (strstr(av[1], "m_deaf.so"))
+ ModeManager::AddUserMode('d', new UserMode(UMODE_DEAF));
+ if (strstr(av[1], "m_censor.so"))
+ ModeManager::AddUserMode('G', new UserMode(UMODE_FILTER));
+ if (strstr(av[1], "m_hideoper.so"))
+ ModeManager::AddUserMode('H', new UserMode(UMODE_HIDEOPER));
+ if (strstr(av[1], "m_invisible.so"))
+ ModeManager::AddUserMode('Q', new UserMode(UMODE_HIDDEN));
+ if (strstr(av[1], "m_stripcolor.so"))
+ ModeManager::AddUserMode('S', new UserMode(UMODE_STRIPCOLOR));
+ if (strstr(av[1], "m_showwhois.so"))
+ ModeManager::AddUserMode('W', new UserMode(UMODE_WHOIS));
+
} else if (strcasecmp(av[0], "END") == 0) {
if (!has_globopsmod) {
send_cmd(NULL, "ERROR :m_globops is not loaded. This is required by Anope");
@@ -1182,13 +1252,9 @@ bool ChannelModeFlood::IsValid(const char *value)
void moduleAddModes()
{
/* Add user modes */
- ModeManager::AddUserMode('g', new UserMode(UMODE_CALLERID));
- ModeManager::AddUserMode('h', new UserMode(UMODE_HELPOP));
ModeManager::AddUserMode('i', new UserMode(UMODE_INVIS));
ModeManager::AddUserMode('o', new UserMode(UMODE_OPER));
- ModeManager::AddUserMode('r', new UserMode(UMODE_REGISTERED));
ModeManager::AddUserMode('w', new UserMode(UMODE_WALLOPS));
- ModeManager::AddUserMode('x', new UserMode(UMODE_CLOAK));
/* b/e/I */
ModeManager::AddChannelMode('b', new ChannelModeBan());
@@ -1201,28 +1267,14 @@ void moduleAddModes()
ModeManager::AddChannelMode('q', new ChannelModeStatus(CMODE_OWNER, CUS_OWNER, '~'));
/* Add channel modes */
- ModeManager::AddChannelMode('c', new ChannelMode(CMODE_BLOCKCOLOR));
ModeManager::AddChannelMode('i', new ChannelMode(CMODE_INVITE));
ModeManager::AddChannelMode('k', new ChannelModeKey());
ModeManager::AddChannelMode('l', new ChannelModeParam(CMODE_LIMIT));
ModeManager::AddChannelMode('m', new ChannelMode(CMODE_MODERATED));
ModeManager::AddChannelMode('n', new ChannelMode(CMODE_NOEXTERNAL));
ModeManager::AddChannelMode('p', new ChannelMode(CMODE_PRIVATE));
- ModeManager::AddChannelMode('r', new ChannelModeRegistered());
ModeManager::AddChannelMode('s', new ChannelMode(CMODE_SECRET));
ModeManager::AddChannelMode('t', new ChannelMode(CMODE_TOPIC));
- ModeManager::AddChannelMode('u', new ChannelMode(CMODE_AUDITORIUM));
- ModeManager::AddChannelMode('z', new ChannelMode(CMODE_SSL));
- ModeManager::AddChannelMode('A', new ChannelMode(CMODE_ALLINVITE));
- ModeManager::AddChannelMode('C', new ChannelMode(CMODE_NOCTCP));
- ModeManager::AddChannelMode('G', new ChannelMode(CMODE_FILTER));
- ModeManager::AddChannelMode('K', new ChannelMode(CMODE_NOKNOCK));
- ModeManager::AddChannelMode('L', new ChannelModeParam(CMODE_REDIRECT));
- ModeManager::AddChannelMode('N', new ChannelMode(CMODE_NONICK));
- ModeManager::AddChannelMode('O', new ChannelModeOper());
- ModeManager::AddChannelMode('Q', new ChannelMode(CMODE_NOKICK));
- ModeManager::AddChannelMode('R', new ChannelMode(CMODE_REGISTEREDONLY));
- ModeManager::AddChannelMode('S', new ChannelMode(CMODE_STRIPCOLOR));
}
class ProtoInspIRCd : public Module
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 86dd0004e..52f7beaaf 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -1194,6 +1194,7 @@ void moduleAddModes()
ModeManager::AddChannelMode('c', new ChannelMode(CMODE_BLOCKCOLOR));
ModeManager::AddChannelMode('f', new ChannelModeFlood());
ModeManager::AddChannelMode('i', new ChannelMode(CMODE_INVITE));
+ ModeManager::AddChannelMode('j', new ChannelModeParam(CMODE_JOINFLOOD));
ModeManager::AddChannelMode('k', new ChannelModeKey());
ModeManager::AddChannelMode('l', new ChannelModeParam(CMODE_LIMIT));
ModeManager::AddChannelMode('m', new ChannelMode(CMODE_MODERATED));