summaryrefslogtreecommitdiff
path: root/src/xline.cpp
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2007-10-31 12:12:30 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2007-10-31 12:12:30 +0000
commit0c3eeb1ae4888d0e761f852c0073ab57ad628d0b (patch)
tree382f24a33b2d710e2ed911f5ffd626f7eeb18f45 /src/xline.cpp
parentbe1286835c016ed2602db8e42f7ca0b367767242 (diff)
Clean up XLine conf stuff a little bit, move most of it to configreader. Also, check elines and call ApplyLines on both rehash and startup.
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8425 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/xline.cpp')
-rw-r--r--src/xline.cpp95
1 files changed, 21 insertions, 74 deletions
diff --git a/src/xline.cpp b/src/xline.cpp
index 329b0e6e8..08226f650 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -63,82 +63,15 @@
* -- Brain
*/
-bool InitXLine(ServerConfig* conf, const char* tag)
-{
- return true;
-}
-
-bool DoneZLine(ServerConfig* conf, const char* tag)
-{
- // XXX we should really only call this once - after we've finished processing configuration all together
- conf->GetInstance()->XLines->ApplyLines();
- return true;
-}
-
-bool DoneQLine(ServerConfig* conf, const char* tag)
-{
- // XXX we should really only call this once - after we've finished processing configuration all together
- conf->GetInstance()->XLines->ApplyLines();
- return true;
-}
-
-bool DoneKLine(ServerConfig* conf, const char* tag)
-{
- // XXX we should really only call this once - after we've finished processing configuration all together
- conf->GetInstance()->XLines->ApplyLines();
- return true;
-}
-
-bool DoneELine(ServerConfig* conf, const char* tag)
-{
- // XXX we should really only call this once - after we've finished processing configuration all together
- conf->GetInstance()->XLines->ApplyLines();
- return true;
-}
-
-bool DoZLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types)
-{
- const char* reason = values[0].GetString();
- const char* ipmask = values[1].GetString();
-
- conf->GetInstance()->XLines->AddZLine(0,"<Config>",reason,ipmask);
- return true;
-}
-
-bool DoQLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types)
-{
- const char* reason = values[0].GetString();
- const char* nick = values[1].GetString();
-
- conf->GetInstance()->XLines->AddQLine(0,"<Config>",reason,nick);
- return true;
-}
-
-bool DoKLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types)
-{
- const char* reason = values[0].GetString();
- const char* host = values[1].GetString();
-
- conf->GetInstance()->XLines->AddKLine(0,"<Config>",reason,host);
- return true;
-}
-
-bool DoELine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types)
-{
- const char* reason = values[0].GetString();
- const char* host = values[1].GetString();
-
- conf->GetInstance()->XLines->AddELine(0,"<Config>",reason,host);
- return true;
-}
-
bool XLine::Matches(User *u)
{
return false;
}
-//XXX perhaps move into xlinemanager
-void CheckELines(InspIRCd *ServerInstance, std::map<std::string, XLine *> &ELines)
+/*
+ * Checks what users match a given vector of ELines and sets their ban exempt flag accordingly.
+ */
+void XLineManager::CheckELines(std::map<std::string, XLine *> &ELines)
{
if (ELines.empty())
return;
@@ -155,6 +88,19 @@ void CheckELines(InspIRCd *ServerInstance, std::map<std::string, XLine *> &ELine
}
}
+// this should probably be moved to configreader, but atm it relies on CheckELines above.
+bool DoneELine(ServerConfig* conf, const char* tag)
+{
+ for (std::vector<User*>::const_iterator u2 = conf->GetInstance()->local_users.begin(); u2 != conf->GetInstance()->local_users.end(); u2++)
+ {
+ User* u = (User*)(*u2);
+ u->exempt = false;
+ }
+
+ conf->GetInstance()->XLines->CheckELines(conf->GetInstance()->XLines->lookup_lines['E']);
+ return true;
+}
+
IdentHostPair XLineManager::IdentSplit(const std::string &ident_and_host)
{
@@ -212,8 +158,9 @@ bool XLineManager::AddELine(long duration, const char* source, const char* reaso
lookup_lines['E'][hostmask] = item;
// XXX we really only need to check one line (the new one) - this is a bit wasteful!
- CheckELines(ServerInstance, lookup_lines['E']);
-
+ // we should really create a temporary var here and pass that instead.
+ // hmm, perhaps we can merge this with line "application" somehow.. and just force a recheck on DelELine?
+ this->CheckELines(lookup_lines['E']);
return true;
}
@@ -316,7 +263,7 @@ void ELine::Unset()
}
if (ServerInstance->XLines->lookup_lines.find('E') != ServerInstance->XLines->lookup_lines.end())
- CheckELines(ServerInstance, ServerInstance->XLines->lookup_lines['E']);
+ ServerInstance->XLines->CheckELines(ServerInstance->XLines->lookup_lines['E']);
}
// returns a pointer to the reason if a nickname matches a qline, NULL if it didnt match