+ /** 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);
+
+ 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);