+ /** Constructor
+ * @param Instance A pointer to the creator object
+ */
+ XLineManager(InspIRCd* Instance);
+
+ 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
+ * @return hostmask The host to remove
+ * @return True if the line was deleted successfully
+ */
+ bool del_gline(const char* hostmask);
+
+ /** Delete a QLine
+ * @return nickname The nick to remove
+ * @return True if the line was deleted successfully
+ */
+ bool del_qline(const char* nickname);
+
+ /** Delete a ZLine
+ * @return ipaddr The IP to remove
+ * @return True if the line was deleted successfully
+ */
+ bool del_zline(const char* ipaddr);
+
+ /** Delete a KLine
+ * @return hostmask The host to remove
+ * @return True if the line was deleted successfully
+ */
+ bool del_kline(const char* hostmask);
+
+ /** Delete a ELine
+ * @return hostmask The host to remove
+ * @return True if the line was deleted successfully
+ */
+ bool del_eline(const char* hostmask);
+
+ /** 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);
+};