summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-12-15 10:30:25 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2005-12-15 10:30:25 +0000
commit8ed28d1f98d4d4c653201f0c4273e74dd8a122e6 (patch)
tree4e43ce34e4c61d090b67adb7158e9eda70105746
parentf9debc231fe8f75dab13cc4332ba63f080967bb2 (diff)
Added CullList class
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2458 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--include/cull_list.h54
-rw-r--r--src/cull_list.cpp97
-rw-r--r--src/xline.cpp63
3 files changed, 153 insertions, 61 deletions
diff --git a/include/cull_list.h b/include/cull_list.h
new file mode 100644
index 000000000..eb76f3797
--- /dev/null
+++ b/include/cull_list.h
@@ -0,0 +1,54 @@
+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.
+ * E-mail:
+ * <brain@chatspike.net>
+ * <Craig@chatspike.net>
+ *
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
+#ifndef __CULLLIST_H__
+#define __CULLLIST_H__
+
+// include the common header files
+
+#include <typeinfo>
+#include <iostream>
+#include <string>
+#include <deque>
+#include <sstream>
+#include <vector>
+#include "users.h"
+#include "channels.h"
+
+class CullItem
+{
+ private:
+ userrec* user;
+ std::string reason;
+ public:
+ CullItem(userrec* u, std::string r);
+ userrec* GetUser();
+ std::string GetReason();
+};
+
+
+class CullList
+{
+ private:
+ std::vector<CullItem> list;
+ char exempt[65535];
+ public:
+ CullList();
+ void AddItem(userrec* user, std::string reason);
+ int Apply();
+};
+
+#endif
diff --git a/src/cull_list.cpp b/src/cull_list.cpp
new file mode 100644
index 000000000..d931b567c
--- /dev/null
+++ b/src/cull_list.cpp
@@ -0,0 +1,97 @@
+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.
+ * E-mail:
+ * <brain@chatspike.net>
+ * <Craig@chatspike.net>
+ *
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
+using namespace std;
+
+#include "inspircd_config.h"
+#include "inspircd.h"
+#include "inspircd_io.h"
+#include "inspircd_util.h"
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/errno.h>
+#include <time.h>
+#include <string>
+#ifdef GCC3
+#include <ext/hash_map>
+#else
+#include <hash_map>
+#endif
+#include <map>
+#include <sstream>
+#include <vector>
+#include <deque>
+#include "users.h"
+#include "ctables.h"
+#include "globals.h"
+#include "modules.h"
+#include "dynamic.h"
+#include "wildcard.h"
+#include "message.h"
+#include "commands.h"
+#include "xline.h"
+#include "inspstring.h"
+#include "helperfuncs.h"
+#include "hashcomp.h"
+#include "typedefs.h"
+#include "cull_list.h"
+
+CullItem::CullItem(userrec* u, std::string r)
+{
+ this->user = u;
+ this->reason = r;
+}
+
+userrec* CullItem::GetUser()
+{
+ return this->user;
+}
+
+std::string CullItem::GetReason()
+{
+ return this->reason;
+}
+
+CullList::CullList()
+{
+ list.clear();
+ memset(exempt,0,65535);
+}
+
+void CullList::AddItem(userrec* user, std::string reason)
+{
+ if ((user->fd > -1) && (exempt[user->fd] == 0))
+ {
+ CullItem item(user,reason);
+ list.push_back(item);
+ exempt[user->fd] = 1;
+ }
+}
+
+int CullList::Apply()
+{
+ int n = 0;
+ while (list.size())
+ {
+ std::vector<CullItem>::iterator a = list.begin();
+ userrec* u = a->GetUser();
+ std::string reason = a->GetReason();
+ kill_link(u,reason.c_str());
+ list.erase(list.begin());
+ n++;
+ }
+ return n;
+}
diff --git a/src/xline.cpp b/src/xline.cpp
index c6c4cd8a9..93732fa2a 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -2,7 +2,7 @@
* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
+ * Inspire is copyright (C) 2002-2005 ChatSpike-Dev.
* E-mail:
* <brain@chatspike.net>
* <Craig@chatspike.net>
@@ -47,6 +47,7 @@ using namespace std;
#include "helperfuncs.h"
#include "hashcomp.h"
#include "typedefs.h"
+#include "cull_list.h"
extern ServerConfig *Config;
@@ -642,70 +643,10 @@ void expire_lines()
}
-class CullItem
-{
- private:
- userrec* user;
- std::string reason;
- public:
- CullItem(userrec* u, std::string r)
- {
- this->user = u;
- this->reason = r;
- }
-
- userrec* GetUser()
- {
- return this->user;
- }
-
- std::string GetReason()
- {
- return this->reason;
- }
-};
-
-
-class CullList
-{
- private:
- std::vector<CullItem> list;
- char exempt[65535];
- public:
- CullList()
- {
- memset(exempt,0,65535);
- line = ltype;
- }
-
- AddItem(userrec* user, std::string reason)
- {
- if ((user->fd > -1) && (exempt[user->fd] == 0))
- {
- CullItem item(user,reason);
- list.push_back(item);
- exempt[user->fd] = 1;
- }
- }
-
- Apply()
- {
- while (list.size())
- {
- std::vector<CullItem>::iterator a = list.begin();
- userrec* u = a->GetUser();
- std::string reason = a->GetReason();
- kill_link(u,reason);
- list.erase(list.begin());
- }
- }
-}
-
// applies lines, removing clients and changing nicks etc as applicable
void apply_lines(const int What)
{
- bool go_again = true;
char reason[MAXBUF];
char host[MAXBUF];