diff options
author | Adam <Adam@anope.org> | 2011-02-22 20:30:45 -0500 |
---|---|---|
committer | Adam <Adam@anope.org> | 2011-02-22 20:30:45 -0500 |
commit | b15410fd3acb47fb305383c74ad0f03add6e38e0 (patch) | |
tree | 149c3d8846c9b08cf93358e579c080c24f8b5dee | |
parent | c83b2b73d7c5f264dedb67b878d116b5b10a4742 (diff) |
Store modes in the databases told to us during runtime that we don't have information any about. Allows mlocking things like InspIRCds +w etc. Also fixes part of #1235
-rw-r--r-- | modules/protocol/inspircd11.cpp | 8 | ||||
-rw-r--r-- | modules/protocol/inspircd12.cpp | 9 | ||||
-rw-r--r-- | modules/protocol/inspircd20.cpp | 24 | ||||
-rw-r--r-- | modules/protocol/unreal32.cpp | 8 |
4 files changed, 18 insertions, 31 deletions
diff --git a/modules/protocol/inspircd11.cpp b/modules/protocol/inspircd11.cpp index 84764d2fa..96867071c 100644 --- a/modules/protocol/inspircd11.cpp +++ b/modules/protocol/inspircd11.cpp @@ -404,7 +404,7 @@ class InspircdIRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelModeInvex('I')); continue; default: - ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t])); } } @@ -417,7 +417,7 @@ class InspircdIRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelModeKey('k')); continue; default: - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t])); } } @@ -436,7 +436,7 @@ class InspircdIRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, "CMODE_REDIRECT", 'L', true)); continue; default: - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t], true)); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true)); } } @@ -506,7 +506,7 @@ class InspircdIRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelMode(CMODE_NOINVITE, "CMODE_NOINVITE", 'V')); continue; default: - ModeManager::AddChannelMode(new ChannelMode(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t])); } } } diff --git a/modules/protocol/inspircd12.cpp b/modules/protocol/inspircd12.cpp index 554e31b61..eb84601ef 100644 --- a/modules/protocol/inspircd12.cpp +++ b/modules/protocol/inspircd12.cpp @@ -419,9 +419,8 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage case 'a': ModeManager::AddChannelMode(new ChannelModeStatus(CMODE_PROTECT , "CMODE_PROTECT", 'a', '@')); continue; - // XXX mode g default: - ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t])); } } @@ -434,7 +433,7 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage ModeManager::AddChannelMode(new ChannelModeKey('k')); continue; default: - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t])); } } @@ -462,7 +461,7 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage ModeManager::AddChannelMode(new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", 'l', true)); continue; default: - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t], true)); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true)); } } @@ -544,7 +543,7 @@ class Inspircd12IRCdMessage : public InspircdIRCdMessage ModeManager::AddChannelMode(new ChannelMode(CMODE_SSL, "CMODE_SSL", 'z')); continue; default: - ModeManager::AddChannelMode(new ChannelMode(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t])); } } } diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp index 4891b7e41..93928b318 100644 --- a/modules/protocol/inspircd20.cpp +++ b/modules/protocol/inspircd20.cpp @@ -391,8 +391,6 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage cm = new ChannelMode(CMODE_ALLINVITE, "CMODE_ALLINVITE", modechar[0]); else if (modename.equals_cs("auditorium")) cm = new ChannelMode(CMODE_AUDITORIUM, "CMODE_AUDITORIUM", modechar[0]); - else if (modename.equals_cs("autoop")) - continue; // XXX Not currently tracked else if (modename.equals_cs("ban")) cm = new ChannelModeBan(modechar[0]); else if (modename.equals_cs("banexception")) @@ -407,20 +405,12 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage cm = new ChannelMode(CMODE_FILTER, "CMODE_FILTER", modechar[0]); else if (modename.equals_cs("delayjoin")) cm = new ChannelMode(CMODE_DELAYEDJOIN, "CMODE_DELAYEDJOIN", modechar[0]); - else if (modename.equals_cs("delaymsg")) - continue; - else if (modename.equals_cs("exemptchanops")) - continue; // XXX - else if (modename.equals_cs("filter")) - continue; // XXX else if (modename.equals_cs("flood")) cm = new ChannelModeFlood(modechar[0], true); else if (modename.equals_cs("founder")) cm = new ChannelModeStatus(CMODE_OWNER, "CMODE_OWNER", modechar[1], modechar[0]); else if (modename.equals_cs("halfop")) cm = new ChannelModeStatus(CMODE_HALFOP, "CMODE_HALFOP", modechar[1], modechar[0]); - else if (modename.equals_cs("history")) - continue; // XXX else if (modename.equals_cs("invex")) cm = new ChannelModeInvex(modechar[0]); else if (modename.equals_cs("inviteonly")) @@ -435,8 +425,6 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage cm = new ChannelModeParam(CMODE_LIMIT, "CMODE_LIMIT", modechar[0], true); else if (modename.equals_cs("moderated")) cm = new ChannelMode(CMODE_MODERATED, "CMODE_MODERATED", modechar[0]); - else if (modename.equals_cs("namebase")) - continue; // XXX else if (modename.equals_cs("nickflood")) cm = new ChannelModeParam(CMODE_NICKFLOOD, "CMODE_NICKFLOOD", modechar[0], true); else if (modename.equals_cs("noctcp")) @@ -477,7 +465,8 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage cm = new ChannelModeStatus(CMODE_VOICE, "CMODE_VOICE", modechar[1], modechar[0]); /* Unknown status mode, (customprefix) - add it */ else if (modechar.length() == 2) - cm = new ChannelModeStatus(CMODE_END, "", modechar[1], modechar[0]); + cm = new ChannelModeStatus(CMODE_END, modechar[0], modechar[1], modechar[0]); + /* else don't do anything here, we will get it in CAPAB CAPABILITIES */ if (cm) ModeManager::AddChannelMode(cm); @@ -585,8 +574,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage { if (ModeManager::FindChannelModeByChar(modebuf[t])) continue; - // XXX list modes needs a bit of a rewrite - ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t])); } sep.GetToken(modebuf); @@ -594,7 +582,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage { if (ModeManager::FindChannelModeByChar(modebuf[t])) continue; - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t])); } sep.GetToken(modebuf); @@ -602,7 +590,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage { if (ModeManager::FindChannelModeByChar(modebuf[t])) continue; - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t], true)); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true)); } sep.GetToken(modebuf); @@ -610,7 +598,7 @@ class Inspircd20IRCdMessage : public InspircdIRCdMessage { if (ModeManager::FindChannelModeByChar(modebuf[t])) continue; - ModeManager::AddChannelMode(new ChannelMode(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t])); } } else if (capab.find("USERMODES") != Anope::string::npos) diff --git a/modules/protocol/unreal32.cpp b/modules/protocol/unreal32.cpp index 35af8ad70..594764900 100644 --- a/modules/protocol/unreal32.cpp +++ b/modules/protocol/unreal32.cpp @@ -538,7 +538,7 @@ class Unreal32IRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelModeInvex('I')); continue; default: - ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeList(CMODE_END, modebuf[t], modebuf[t])); } } @@ -557,7 +557,7 @@ class Unreal32IRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelModeParam(CMODE_REDIRECT, "CMODE_REDIRECT", 'L')); continue; default: - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t])); } } @@ -573,7 +573,7 @@ class Unreal32IRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelModeParam(CMODE_JOINFLOOD, "CMODE_JOINFLOOD", 'j', true)); continue; default: - ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, "", modebuf[t], true)); + ModeManager::AddChannelMode(new ChannelModeParam(CMODE_END, modebuf[t], modebuf[t], true)); } } @@ -649,7 +649,7 @@ class Unreal32IRCdMessage : public IRCdMessage ModeManager::AddChannelMode(new ChannelMode(CMODE_FILTER, "CMODE_FILTER", 'G')); continue; default: - ModeManager::AddChannelMode(new ChannelMode(CMODE_END, "", modebuf[t])); + ModeManager::AddChannelMode(new ChannelMode(CMODE_END, modebuf[t], modebuf[t])); } } } |