summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-02-22 20:30:45 -0500
committerAdam <Adam@anope.org>2011-02-22 20:30:45 -0500
commitb15410fd3acb47fb305383c74ad0f03add6e38e0 (patch)
tree149c3d8846c9b08cf93358e579c080c24f8b5dee
parentc83b2b73d7c5f264dedb67b878d116b5b10a4742 (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.cpp8
-rw-r--r--modules/protocol/inspircd12.cpp9
-rw-r--r--modules/protocol/inspircd20.cpp24
-rw-r--r--modules/protocol/unreal32.cpp8
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]));
}
}
}