From b96de3df2015731bdba594998430e864e2d79a0e Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 11 Aug 2006 21:56:25 +0000 Subject: [PATCH] Document XLineManager git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4897 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/xline.h | 189 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 188 insertions(+), 1 deletion(-) diff --git a/include/xline.h b/include/xline.h index f393abc76..ad76fe8e5 100644 --- a/include/xline.h +++ b/include/xline.h @@ -134,66 +134,253 @@ bool DoQLine(ServerConfig* conf, const char* tag, char** entries, void** values, bool DoKLine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types); bool DoELine(ServerConfig* conf, const char* tag, char** entries, void** values, int* types); +/** XLineManager is a class used to manage glines, klines, elines, zlines and qlines. + */ class 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 XLineManager::GSortComparison ( const GLine one, const GLine two ); + + /** This functor is used by the std::sort() function to keep elines in order + */ static bool XLineManager::ESortComparison ( const ELine one, const ELine two ); + + /** This functor is used by the std::sort() function to keep zlines in order + */ static bool XLineManager::ZSortComparison ( const ZLine one, const ZLine two ); + + /** This functor is used by the std::sort() function to keep klines in order + */ static bool XLineManager::KSortComparison ( const KLine one, const KLine two ); + + /** This functor is used by the std::sort() function to keep qlines in order + */ static bool XLineManager::QSortComparison ( const QLine one, const QLine two ); public: /* Lists for temporary lines with an expiry time */ + + /** Temporary KLines */ std::vector klines; + + /** Temporary Glines */ std::vector glines; + + /** Temporary Zlines */ std::vector zlines; + + /** Temporary QLines */ std::vector qlines; + + /** Temporary ELines */ std::vector elines; /* Seperate lists for perm XLines that isnt checked by expiry functions */ + + /** Permenant KLines */ std::vector pklines; + + /** Permenant GLines */ std::vector pglines; + + /** Permenant ZLines */ std::vector pzlines; + + /** Permenant QLines */ std::vector pqlines; + + /** Permenant ELines */ std::vector pelines; - + + /** Constructor + * @param Instance A pointer to the creator object + */ XLineManager(InspIRCd* Instance); + /** 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 + */ char* matches_qline(const char* nick); + + /** Check if a hostname matches a GLine + * @return host The host to check against + * @return The reason for the line if there is a match, or NULL if there is no match + */ char* matches_gline(const char* host); + + /** Check if a IP matches a ZLine + * @return ipaddr The IP to check against + * @return The reason for the line if there is a match, or NULL if there is no match + */ char* matches_zline(const char* ipaddr); + + /** Check if a hostname matches a KLine + * @return host The host to check against + * @return The reason for the line if there is a match, or NULL if there is no match + */ char* matches_kline(const char* host); + + /** Check if a hostname matches a ELine + * @return host The host to check against + * @return The reason for the line if there is a match, or NULL if there is no match + */ char* matches_exception(const char* host); + /** 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 + */ 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); + /** Make a ZLine global + * @param ipaddr The zline to change + * @return True if the zline was updated + */ bool zline_make_global(const char* ipaddr); + + /** Make a QLine global + * @param nickname The qline to change + * @return True if the qline was updated + */ bool qline_make_global(const char* nickname); }; -- 2.39.5