diff options
-rw-r--r-- | include/xline.h | 189 |
1 files changed, 188 insertions, 1 deletions
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<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); + /** 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); }; |