-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-#ifndef __XLINE_H
-#define __XLINE_H
-
-// include the common header files
-
-#include <string>
-#include <deque>
-#include <vector>
-#include "users.h"
-#include "channels.h"
-
-const int APPLY_GLINES = 1;
-const int APPLY_KLINES = 2;
-const int APPLY_QLINES = 4;
-const int APPLY_ZLINES = 8;
-const int APPLY_PERM_ONLY = 16;
-const int APPLY_ALL = APPLY_GLINES | APPLY_KLINES | APPLY_QLINES | APPLY_ZLINES;
-
-/** XLine is the base class for ban lines such as G lines and K lines.
- */
-class CoreExport XLine : public classbase
-{
- public:
-
- /** Create an XLine.
- * @param s_time The set time
- * @param d The duration of the xline
- * @param src The sender of the xline
- * @param re The reason of the xline
- */
- XLine(time_t s_time, long d, const char* src, const char* re)
- : set_time(s_time), duration(d)
- {
- source = strdup(src);
- reason = strdup(re);
- expiry = set_time + duration;
- }
-
- /** Destructor
- */
- virtual ~XLine()
- {
- free(reason);
- free(source);
- }
- /** The time the line was added.
- */
- time_t set_time;
-
- /** The duration of the ban, or 0 if permenant
- */
- long duration;
-
- /** Source of the ban. This can be a servername or an oper nickname
- */
- char* source;
-
- /** Reason for the ban
- */
- char* reason;
-
- /** Expiry time
- */
- time_t expiry;
-};
-
-/** KLine class
- */
-class CoreExport KLine : public XLine
-{
- public:
- /** Create a K-Line.
- * @param s_time The set time
- * @param d The duration of the xline
- * @param src The sender of the xline
- * @param re The reason of the xline
- * @param ident Ident to match
- * @param host Host to match
- */
- KLine(time_t s_time, long d, const char* src, const char* re, const char* ident, const char* host) : XLine(s_time, d, src, re)
- {
- identmask = strdup(ident);
- hostmask = strdup(host);
- }
-
- /** Destructor
- */
- ~KLine()
- {
- free(identmask);
- free(hostmask);
- }
-
- /** Ident mask
- */
- char* identmask;
- /** Host mask
- */
- char* hostmask;
-};
-
-/** GLine class
- */
-class CoreExport GLine : public XLine
-{
- public:
- /** Create a G-Line.
- * @param s_time The set time
- * @param d The duration of the xline
- * @param src The sender of the xline
- * @param re The reason of the xline
- * @param ident Ident to match
- * @param host Host to match
- */
- GLine(time_t s_time, long d, const char* src, const char* re, const char* ident, const char* host) : XLine(s_time, d, src, re)
- {
- identmask = strdup(ident);
- hostmask = strdup(host);
- }
-
- /** Destructor
- */
- ~GLine()
- {
- free(identmask);
- free(hostmask);
- }
-
- /** Ident mask
- */
- char* identmask;
- /** Host mask
- */
- char* hostmask;
-};
-
-/** ELine class
- */
-class CoreExport ELine : public XLine
-{
- public:
- /** Create an E-Line.
- * @param s_time The set time
- * @param d The duration of the xline
- * @param src The sender of the xline
- * @param re The reason of the xline
- * @param ident Ident to match
- * @param host Host to match
- */
- ELine(time_t s_time, long d, const char* src, const char* re, const char* ident, const char* host) : XLine(s_time, d, src, re)
- {
- identmask = strdup(ident);
- hostmask = strdup(host);
- }
-
- ~ELine()
- {
- free(identmask);
- free(hostmask);
- }
-
- /** Ident mask
- */
- char* identmask;
- /** Host mask
- */
- char* hostmask;
-};
-
-/** ZLine class
- */
-class CoreExport ZLine : public XLine
-{
- public:
- /** Create a Z-Line.
- * @param s_time The set time
- * @param d The duration of the xline
- * @param src The sender of the xline
- * @param re The reason of the xline
- * @param ip IP to match
- */
- ZLine(time_t s_time, long d, const char* src, const char* re, const char* ip) : XLine(s_time, d, src, re)
- {
- ipaddr = strdup(ip);
- }
-
- /** Destructor
- */
- ~ZLine()
- {
- free(ipaddr);
- }
-
- /** IP mask
- */
- char* ipaddr;
-};
-
-/** QLine class
- */
-class CoreExport QLine : public XLine
-{
- public:
- /** Create a G-Line.
- * @param s_time The set time
- * @param d The duration of the xline
- * @param src The sender of the xline
- * @param re The reason of the xline
- * @param nickname Nickname to match
- */
- QLine(time_t s_time, long d, const char* src, const char* re, const char* nickname) : XLine(s_time, d, src, re)
- {
- nick = strdup(nickname);
- }
-
- /** Destructor
- */
- ~QLine()
- {
- free(nick);
- }
-
- /** Nickname mask
- */
- char* nick;
-};
-
-/* Required forward declarations
- */
-class ServerConfig;
-class InspIRCd;
-
-/** Initialize x line
- */
-bool InitXLine(ServerConfig* conf, const char* tag);
-
-/** Done adding zlines from the config
- */
-bool DoneZLine(ServerConfig* conf, const char* tag);
-/** Done adding qlines from the config
- */
-bool DoneQLine(ServerConfig* conf, const char* tag);
-/** Done adding klines from the config
- */
-bool DoneKLine(ServerConfig* conf, const char* tag);
-/** Done adding elines from the config
- */
-bool DoneELine(ServerConfig* conf, const char* tag);
-
-/** Add a config-defined zline
- */
-bool DoZLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);
-/** Add a config-defined qline
- */
-bool DoQLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);
-/** Add a config-defined kline
- */
-bool DoKLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);
-/** Add a config-defined eline
- */
-bool DoELine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);
-
-/** Contains an ident and host split into two strings
- */
-typedef std::pair<std::string, std::string> IdentHostPair;
-
-/** XLineManager is a class used to manage glines, klines, elines, zlines and qlines.
- */
-class CoreExport XLineManager
-{
- protected:
- /** The owner/creator of this class
- */
- InspIRCd* ServerInstance;
-
- /** This functor is used by the std::sort() function to keep glines in order
- */
- static bool GSortComparison ( const GLine* one, const GLine* two );
-
- /** This functor is used by the std::sort() function to keep elines in order
- */
- static bool ESortComparison ( const ELine* one, const ELine* two );
-
- /** This functor is used by the std::sort() function to keep zlines in order
- */
- static bool ZSortComparison ( const ZLine* one, const ZLine* two );
-
- /** This functor is used by the std::sort() function to keep klines in order
- */
- static bool KSortComparison ( const KLine* one, const KLine* two );
-
- /** This functor is used by the std::sort() function to keep qlines in order
- */
- static bool QSortComparison ( const QLine* one, const QLine* two );
- public:
- /* Lists for temporary lines with an expiry time */
-
- /** Temporary KLines */
- std::vector<KLine*> klines;
-
- /** Temporary Glines */
- std::vector<GLine*> glines;
-
- /** Temporary Zlines */
- std::vector<ZLine*> zlines;
-
- /** Temporary QLines */
- std::vector<QLine*> qlines;
-
- /** Temporary ELines */
- std::vector<ELine*> elines;
-
- /* Seperate lists for perm XLines that isnt checked by expiry functions */
-
- /** Permenant KLines */
- std::vector<KLine*> pklines;
-
- /** Permenant GLines */
- std::vector<GLine*> pglines;
-
- /** Permenant ZLines */
- std::vector<ZLine*> pzlines;
-
- /** Permenant QLines */
- std::vector<QLine*> pqlines;
-
- /** Permenant ELines */
- std::vector<ELine*> pelines;
-
- /** Constructor
- * @param Instance A pointer to the creator object
- */
- XLineManager(InspIRCd* Instance);
-
- /** Split an ident and host into two seperate strings.
- * This allows for faster matching.
- */
- IdentHostPair IdentSplit(const std::string &ident_and_host);
-
- /** Add a new GLine
- * @param duration The duration of the line
- * @param source The source of the line
- * @param reason The reason for the line
- * @param hostmask The hostmask
- * @return True if the line was added successfully
- */
- bool add_gline(long duration, const char* source, const char* reason, const char* hostmask);
-
- /** Add a new QLine
- * @param duration The duration of the line
- * @param source The source of the line
- * @param reason The reason for the line
- * @param nickname The nickmask
- * @return True if the line was added successfully
- */
- bool add_qline(long duration, const char* source, const char* reason, const char* nickname);
-
- /** Add a new ZLine
- * @param duration The duration of the line
- * @param source The source of the line
- * @param reason The reason for the line
- * @param ipaddr The IP mask
- * @return True if the line was added successfully
- */
- bool add_zline(long duration, const char* source, const char* reason, const char* ipaddr);
-
- /** Add a new KLine
- * @param duration The duration of the line
- * @param source The source of the line
- * @param reason The reason for the line
- * @param hostmask The hostmask
- * @return True if the line was added successfully
- */
- bool add_kline(long duration, const char* source, const char* reason, const char* hostmask);
-
- /** Add a new ELine
- * @param duration The duration of the line
- * @param source The source of the line
- * @param reason The reason for the line
- * @param hostmask The hostmask
- * @return True if the line was added successfully
- */
- bool add_eline(long duration, const char* source, const char* reason, const char* hostmask);
-
- /** Delete a GLine
- * @param hostmask The host to remove
- * @param simulate If this is true, don't actually remove the line, just return
- * @return True if the line was deleted successfully
- */
- bool del_gline(const char* hostmask, bool simulate = false);
-
- /** Delete a QLine
- * @param nickname The nick to remove
- * @param simulate If this is true, don't actually remove the line, just return
- * @return True if the line was deleted successfully
- */
- bool del_qline(const char* nickname, bool simulate = false);
-
- /** Delete a ZLine
- * @param ipaddr The IP to remove
- * @param simulate If this is true, don't actually remove the line, just return
- * @return True if the line was deleted successfully
- */
- bool del_zline(const char* ipaddr, bool simulate = false);
-
- /** Delete a KLine
- * @param hostmask The host to remove
- * @param simulate If this is true, don't actually remove the line, just return
- * @return True if the line was deleted successfully
- */
- bool del_kline(const char* hostmask, bool simulate = false);
-
- /** Delete a ELine
- * @param hostmask The host to remove
- * @param simulate If this is true, don't actually remove the line, just return
- * @return True if the line was deleted successfully
- */
- bool del_eline(const char* hostmask, bool simulate = false);
-
- /** Check if a nickname matches a QLine
- * @return nick The nick to check against
- * @return The reason for the line if there is a match, or NULL if there is no match
- */
- QLine* matches_qline(const char* nick, bool permonly = false);
-
- /** Check if a hostname matches a GLine
- * @param user The user to check against
- * @return The reason for the line if there is a match, or NULL if there is no match
- */
- GLine* matches_gline(userrec* user, bool permonly = false);
-
- /** Check if a IP matches a ZLine
- * @param ipaddr The IP to check against
- * @return The reason for the line if there is a match, or NULL if there is no match
- */
- ZLine* matches_zline(const char* ipaddr, bool permonly = false);
-
- /** Check if a hostname matches a KLine
- * @param user The user to check against
- * @return The reason for the line if there is a match, or NULL if there is no match
- */
- KLine* matches_kline(userrec* user, bool permonly = false);
-
- /** Check if a hostname matches a ELine
- * @param user The user to check against
- * @return The reason for the line if there is a match, or NULL if there is no match
- */
- ELine* matches_exception(userrec* user, bool permonly = false);
-
- /** Expire any pending non-permenant lines
- */
- void expire_lines();
-
- /** Apply any new lines
- * @param What The types of lines to apply, from the set
- * APPLY_GLINES | APPLY_KLINES | APPLY_QLINES | APPLY_ZLINES | APPLY_ALL
- * | APPLY_LOCAL_ONLY
- */
- void apply_lines(const int What);
-
- /** Handle /STATS K
- * @param user The username making the query
- * @param results The string_list to receive the results
- */
- void stats_k(userrec* user, string_list &results);
-
- /** Handle /STATS G
- * @param user The username making the query
- * @param results The string_list to receive the results
- */
- void stats_g(userrec* user, string_list &results);
-
- /** Handle /STATS Q
- * @param user The username making the query
- * @param results The string_list to receive the results
- */
- void stats_q(userrec* user, string_list &results);
-
- /** Handle /STATS Z
- * @param user The username making the query
- * @param results The string_list to receive the results
- */
- void stats_z(userrec* user, string_list &results);
-
- /** Handle /STATS E
- * @param user The username making the query
- * @param results The string_list to receive the results
- */
- void stats_e(userrec* user, string_list &results);
-
- /** Change creation time of a GLine
- * @param host The hostname to change
- * @param create_Time The new creation time
- */
- void gline_set_creation_time(const char* host, time_t create_time);
-
- /** Change creation time of a QLine
- * @param nick The nickmask to change
- * @param create_Time The new creation time
- */
- void qline_set_creation_time(const char* nick, time_t create_time);
-
- /** Change creation time of a ZLine
- * @param ip The ipmask to change
- * @param create_Time The new creation time
- */
- void zline_set_creation_time(const char* ip, time_t create_time);
-
- /** Change creation time of a ELine
- * @param host The hostname to change
- * @param create_Time The new creation time
- */
- void eline_set_creation_time(const char* host, time_t create_time);
-};
-
-#endif
-
+/* +------------------------------------+\r * | Inspire Internet Relay Chat Daemon |\r * +------------------------------------+\r *\r * InspIRCd: (C) 2002-2007 InspIRCd Development Team\r * See: http://www.inspircd.org/wiki/index.php/Credits\r *\r * This program is free but copyrighted software; see\r * the file COPYING for details.\r *\r * ---------------------------------------------------\r */\r\r#ifndef __XLINE_H\r#define __XLINE_H\r\r// include the common header files\r\r#include <string>\r#include <deque>\r#include <vector>\r#include "users.h"\r#include "channels.h"\r\rconst int APPLY_GLINES = 1;\rconst int APPLY_KLINES = 2;\rconst int APPLY_QLINES = 4;\rconst int APPLY_ZLINES = 8;\rconst int APPLY_PERM_ONLY = 16;\rconst int APPLY_ALL = APPLY_GLINES | APPLY_KLINES | APPLY_QLINES | APPLY_ZLINES;\r\r/** XLine is the base class for ban lines such as G lines and K lines.\r */\rclass CoreExport XLine : public classbase\r{\r public:\r\r /** Create an XLine.\r * @param s_time The set time\r * @param d The duration of the xline\r * @param src The sender of the xline\r * @param re The reason of the xline\r */\r XLine(time_t s_time, long d, const char* src, const char* re)\r : set_time(s_time), duration(d)\r {\r source = strdup(src);\r reason = strdup(re);\r expiry = set_time + duration;\r }\r\r /** Destructor\r */\r virtual ~XLine()\r {\r free(reason);\r free(source);\r }\r /** The time the line was added.\r */\r time_t set_time;\r \r /** The duration of the ban, or 0 if permenant\r */\r long duration;\r \r /** Source of the ban. This can be a servername or an oper nickname\r */\r char* source;\r \r /** Reason for the ban\r */\r char* reason;\r\r /** Expiry time\r */\r time_t expiry;\r};\r\r/** KLine class\r */\rclass CoreExport KLine : public XLine\r{\r public:\r /** Create a K-Line.\r * @param s_time The set time\r * @param d The duration of the xline\r * @param src The sender of the xline\r * @param re The reason of the xline\r * @param ident Ident to match\r * @param host Host to match\r */\r KLine(time_t s_time, long d, const char* src, const char* re, const char* ident, const char* host) : XLine(s_time, d, src, re)\r {\r identmask = strdup(ident);\r hostmask = strdup(host);\r }\r\r /** Destructor\r */\r ~KLine()\r {\r free(identmask);\r free(hostmask);\r }\r\r /** Ident mask\r */\r char* identmask;\r /** Host mask\r */\r char* hostmask;\r};\r\r/** GLine class\r */\rclass CoreExport GLine : public XLine\r{\r public:\r /** Create a G-Line.\r * @param s_time The set time\r * @param d The duration of the xline\r * @param src The sender of the xline\r * @param re The reason of the xline\r * @param ident Ident to match\r * @param host Host to match\r */\r GLine(time_t s_time, long d, const char* src, const char* re, const char* ident, const char* host) : XLine(s_time, d, src, re)\r {\r identmask = strdup(ident);\r hostmask = strdup(host);\r }\r\r /** Destructor\r */\r ~GLine()\r {\r free(identmask);\r free(hostmask);\r }\r\r /** Ident mask\r */\r char* identmask;\r /** Host mask\r */\r char* hostmask;\r};\r\r/** ELine class\r */\rclass CoreExport ELine : public XLine\r{\r public:\r /** Create an E-Line.\r * @param s_time The set time\r * @param d The duration of the xline\r * @param src The sender of the xline\r * @param re The reason of the xline\r * @param ident Ident to match\r * @param host Host to match\r */\r ELine(time_t s_time, long d, const char* src, const char* re, const char* ident, const char* host) : XLine(s_time, d, src, re)\r {\r identmask = strdup(ident);\r hostmask = strdup(host);\r }\r\r ~ELine()\r {\r free(identmask);\r free(hostmask);\r }\r\r /** Ident mask\r */\r char* identmask;\r /** Host mask\r */\r char* hostmask;\r};\r\r/** ZLine class\r */\rclass CoreExport ZLine : public XLine\r{\r public:\r /** Create a Z-Line.\r * @param s_time The set time\r * @param d The duration of the xline\r * @param src The sender of the xline\r * @param re The reason of the xline\r * @param ip IP to match\r */\r ZLine(time_t s_time, long d, const char* src, const char* re, const char* ip) : XLine(s_time, d, src, re)\r {\r ipaddr = strdup(ip);\r }\r\r /** Destructor\r */\r ~ZLine()\r {\r free(ipaddr);\r }\r\r /** IP mask\r */\r char* ipaddr;\r};\r\r/** QLine class\r */\rclass CoreExport QLine : public XLine\r{\r public:\r /** Create a G-Line.\r * @param s_time The set time\r * @param d The duration of the xline\r * @param src The sender of the xline\r * @param re The reason of the xline\r * @param nickname Nickname to match\r */\r QLine(time_t s_time, long d, const char* src, const char* re, const char* nickname) : XLine(s_time, d, src, re)\r {\r nick = strdup(nickname);\r }\r\r /** Destructor\r */\r ~QLine()\r {\r free(nick);\r }\r\r /** Nickname mask\r */\r char* nick;\r};\r\r/* Required forward declarations\r */\rclass ServerConfig;\rclass InspIRCd;\r\r/** Initialize x line\r */\rbool InitXLine(ServerConfig* conf, const char* tag);\r\r/** Done adding zlines from the config\r */\rbool DoneZLine(ServerConfig* conf, const char* tag);\r/** Done adding qlines from the config\r */\rbool DoneQLine(ServerConfig* conf, const char* tag);\r/** Done adding klines from the config\r */\rbool DoneKLine(ServerConfig* conf, const char* tag);\r/** Done adding elines from the config\r */\rbool DoneELine(ServerConfig* conf, const char* tag);\r\r/** Add a config-defined zline\r */\rbool DoZLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);\r/** Add a config-defined qline\r */\rbool DoQLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);\r/** Add a config-defined kline\r */\rbool DoKLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);\r/** Add a config-defined eline\r */\rbool DoELine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types);\r\r/** Contains an ident and host split into two strings\r */\rtypedef std::pair<std::string, std::string> IdentHostPair;\r\r/** XLineManager is a class used to manage glines, klines, elines, zlines and qlines.\r */\rclass CoreExport XLineManager\r{\r protected:\r /** The owner/creator of this class\r */\r InspIRCd* ServerInstance;\r\r /** This functor is used by the std::sort() function to keep glines in order\r */\r static bool GSortComparison ( const GLine* one, const GLine* two );\r\r /** This functor is used by the std::sort() function to keep elines in order\r */\r static bool ESortComparison ( const ELine* one, const ELine* two );\r\r /** This functor is used by the std::sort() function to keep zlines in order\r */\r static bool ZSortComparison ( const ZLine* one, const ZLine* two );\r\r /** This functor is used by the std::sort() function to keep klines in order\r */\r static bool KSortComparison ( const KLine* one, const KLine* two );\r\r /** This functor is used by the std::sort() function to keep qlines in order\r */\r static bool QSortComparison ( const QLine* one, const QLine* two );\r public:\r /* Lists for temporary lines with an expiry time */\r\r /** Temporary KLines */\r std::vector<KLine*> klines;\r\r /** Temporary Glines */\r std::vector<GLine*> glines;\r\r /** Temporary Zlines */\r std::vector<ZLine*> zlines;\r\r /** Temporary QLines */\r std::vector<QLine*> qlines;\r\r /** Temporary ELines */\r std::vector<ELine*> elines;\r\r /* Seperate lists for perm XLines that isnt checked by expiry functions */\r\r /** Permenant KLines */\r std::vector<KLine*> pklines;\r\r /** Permenant GLines */\r std::vector<GLine*> pglines;\r\r /** Permenant ZLines */\r std::vector<ZLine*> pzlines;\r\r /** Permenant QLines */\r std::vector<QLine*> pqlines;\r\r /** Permenant ELines */\r std::vector<ELine*> pelines;\r \r /** Constructor\r * @param Instance A pointer to the creator object\r */\r XLineManager(InspIRCd* Instance);\r\r /** Split an ident and host into two seperate strings.\r * This allows for faster matching.\r */\r IdentHostPair IdentSplit(const std::string &ident_and_host);\r\r /** Add a new GLine\r * @param duration The duration of the line\r * @param source The source of the line\r * @param reason The reason for the line\r * @param hostmask The hostmask\r * @return True if the line was added successfully\r */\r bool add_gline(long duration, const char* source, const char* reason, const char* hostmask);\r\r /** Add a new QLine\r * @param duration The duration of the line\r * @param source The source of the line\r * @param reason The reason for the line\r * @param nickname The nickmask\r * @return True if the line was added successfully\r */\r bool add_qline(long duration, const char* source, const char* reason, const char* nickname);\r\r /** Add a new ZLine\r * @param duration The duration of the line\r * @param source The source of the line\r * @param reason The reason for the line\r * @param ipaddr The IP mask\r * @return True if the line was added successfully\r */\r bool add_zline(long duration, const char* source, const char* reason, const char* ipaddr);\r\r /** Add a new KLine\r * @param duration The duration of the line\r * @param source The source of the line\r * @param reason The reason for the line\r * @param hostmask The hostmask\r * @return True if the line was added successfully\r */\r bool add_kline(long duration, const char* source, const char* reason, const char* hostmask);\r\r /** Add a new ELine\r * @param duration The duration of the line\r * @param source The source of the line\r * @param reason The reason for the line\r * @param hostmask The hostmask\r * @return True if the line was added successfully\r */\r bool add_eline(long duration, const char* source, const char* reason, const char* hostmask);\r\r /** Delete a GLine\r * @param hostmask The host to remove\r * @param simulate If this is true, don't actually remove the line, just return\r * @return True if the line was deleted successfully\r */\r bool del_gline(const char* hostmask, bool simulate = false);\r\r /** Delete a QLine\r * @param nickname The nick to remove\r * @param simulate If this is true, don't actually remove the line, just return\r * @return True if the line was deleted successfully\r */\r bool del_qline(const char* nickname, bool simulate = false);\r\r /** Delete a ZLine\r * @param ipaddr The IP to remove\r * @param simulate If this is true, don't actually remove the line, just return\r * @return True if the line was deleted successfully\r */\r bool del_zline(const char* ipaddr, bool simulate = false);\r\r /** Delete a KLine\r * @param hostmask The host to remove\r * @param simulate If this is true, don't actually remove the line, just return\r * @return True if the line was deleted successfully\r */\r bool del_kline(const char* hostmask, bool simulate = false);\r\r /** Delete a ELine\r * @param hostmask The host to remove\r * @param simulate If this is true, don't actually remove the line, just return\r * @return True if the line was deleted successfully\r */\r bool del_eline(const char* hostmask, bool simulate = false);\r\r /** Check if a nickname matches a QLine\r * @return nick The nick to check against\r * @return The reason for the line if there is a match, or NULL if there is no match\r */\r QLine* matches_qline(const char* nick, bool permonly = false);\r\r /** Check if a hostname matches a GLine\r * @param user The user to check against\r * @return The reason for the line if there is a match, or NULL if there is no match\r */\r GLine* matches_gline(userrec* user, bool permonly = false);\r\r /** Check if a IP matches a ZLine\r * @param ipaddr The IP to check against\r * @return The reason for the line if there is a match, or NULL if there is no match\r */\r ZLine* matches_zline(const char* ipaddr, bool permonly = false);\r\r /** Check if a hostname matches a KLine\r * @param user The user to check against\r * @return The reason for the line if there is a match, or NULL if there is no match\r */\r KLine* matches_kline(userrec* user, bool permonly = false);\r\r /** Check if a hostname matches a ELine\r * @param user The user to check against\r * @return The reason for the line if there is a match, or NULL if there is no match\r */\r ELine* matches_exception(userrec* user, bool permonly = false);\r\r /** Expire any pending non-permenant lines\r */\r void expire_lines();\r\r /** Apply any new lines\r * @param What The types of lines to apply, from the set\r * APPLY_GLINES | APPLY_KLINES | APPLY_QLINES | APPLY_ZLINES | APPLY_ALL\r * | APPLY_LOCAL_ONLY\r */\r void apply_lines(const int What);\r\r /** Handle /STATS K\r * @param user The username making the query\r * @param results The string_list to receive the results\r */\r void stats_k(userrec* user, string_list &results);\r\r /** Handle /STATS G\r * @param user The username making the query\r * @param results The string_list to receive the results\r */\r void stats_g(userrec* user, string_list &results);\r\r /** Handle /STATS Q\r * @param user The username making the query\r * @param results The string_list to receive the results\r */\r void stats_q(userrec* user, string_list &results);\r\r /** Handle /STATS Z\r * @param user The username making the query\r * @param results The string_list to receive the results\r */\r void stats_z(userrec* user, string_list &results);\r\r /** Handle /STATS E\r * @param user The username making the query\r * @param results The string_list to receive the results\r */\r void stats_e(userrec* user, string_list &results);\r\r /** Change creation time of a GLine\r * @param host The hostname to change\r * @param create_Time The new creation time\r */\r void gline_set_creation_time(const char* host, time_t create_time);\r\r /** Change creation time of a QLine\r * @param nick The nickmask to change\r * @param create_Time The new creation time\r */\r void qline_set_creation_time(const char* nick, time_t create_time);\r\r /** Change creation time of a ZLine\r * @param ip The ipmask to change\r * @param create_Time The new creation time\r */\r void zline_set_creation_time(const char* ip, time_t create_time);\r\r /** Change creation time of a ELine\r * @param host The hostname to change\r * @param create_Time The new creation time\r */\r void eline_set_creation_time(const char* host, time_t create_time);\r};\r\r#endif\r\r
\ No newline at end of file