diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-13 20:33:11 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-13 20:33:11 +0000 |
commit | 2d732f4dbf4ccd22c8a4424692cc72a89ffd49b7 (patch) | |
tree | fb1ff3f341b5ee7e801ad7ad00216a40ca131ede /include | |
parent | 36a6e7f22e5510d12bd8e11a5b25f29360fbd75c (diff) |
Change match direction of extbans to allow stacking
This allows you create stacked bans like:
+b m:r:*bot* to mute anyone with bot in their gecos
+e S:j:+#staff to allow voices in #staff to use color
It also deprecates extban M, which can be implemented using m:R:
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11711 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'include')
-rw-r--r-- | include/channels.h | 11 | ||||
-rw-r--r-- | include/modules.h | 41 |
2 files changed, 24 insertions, 28 deletions
diff --git a/include/channels.h b/include/channels.h index fb32f1156..416a34a50 100644 --- a/include/channels.h +++ b/include/channels.h @@ -412,16 +412,13 @@ class CoreExport Channel : public Extensible */ bool IsBanned(User* user); - /** Check whether an extban of a given type matches - * a given user for this channel. - * @param u The user to match bans against - * @param type The type of extban to check + /** Check a single ban for match */ - ModResult GetExtBanStatus(User *u, char type); + bool CheckBan(User* user, const std::string& banmask); - /** Overloaded version to check whether a particular string is extbanned + /** Get the status of an "action" type extban */ - ModResult GetExtBanStatus(const std::string &str, char type); + ModResult GetExtBanStatus(User *u, char type); /** Clears the cached max bans value */ diff --git a/include/modules.h b/include/modules.h index 21a6a8f19..f40cd49fd 100644 --- a/include/modules.h +++ b/include/modules.h @@ -403,7 +403,7 @@ enum Implementation I_OnChangeHost, I_OnChangeName, I_OnAddLine, I_OnDelLine, I_OnExpireLine, I_OnCleanup, I_OnUserPostNick, I_OnPreMode, I_On005Numeric, I_OnKill, I_OnRemoteKill, I_OnLoadModule, I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite, - I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckExtBan, I_OnCheckStringExtBan, + I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckChannelBan, I_OnExtBanCheck, I_OnStats, I_OnChangeLocalUserHost, I_OnChangeLocalUserGecos, I_OnPreTopicChange, I_OnPostTopicChange, I_OnEvent, I_OnRequest, I_OnGlobalOper, I_OnPostConnect, I_OnAddBan, I_OnDelBan, I_OnRawSocketAccept, I_OnRawSocketClose, I_OnRawSocketWrite, I_OnRawSocketRead, @@ -1105,31 +1105,30 @@ class CoreExport Module : public Extensible */ virtual ModResult OnCheckLimit(User* user, Channel* chan); - /** Called whenever a user joins a channel, to determine if banlist checks should go ahead or not. - * This method will always be called for each join, wether or not the user actually matches a channel ban, and - * determines the outcome of an if statement around the whole section of ban checking code. - * return 1 to explicitly allow the join to go ahead or 0 to ignore the event. - * @param user The user joining the channel - * @param chan The channel being joined - * @return 1 to explicitly allow the join, 0 to proceed as normal. Return -1 to explicitly deny the - * join to the channel. + /** + * Checks for a user's ban from the channel + * @param user The user to check + * @param chan The channel to check in + * @return MOD_RES_DENY to mark as banned, MOD_RES_ALLOW to skip the + * ban check, or MOD_RES_PASSTHRU to check bans normally */ - virtual ModResult OnCheckBan(User* user, Channel* chan); + virtual ModResult OnCheckChannelBan(User* user, Channel* chan); - /* Called whenever checking whether or not a user is matched by an applicable extended bantype. - * NOTE: may also trigger extra OnCheckStringExtBan events! - * @param u The user to check - * @param c The channel the user is on - * @param type The type of extended ban to check for. - * @returns 1 = exempt, 0 = no match, -1 = banned + /** + * Checks for a user's match of a single ban + * @param user The user to check for match + * @param chan The channel on which the match is being checked + * @param mask The mask being checked + * @return MOD_RES_DENY to mark as banned, MOD_RES_ALLOW to skip the + * ban check, or MOD_RES_PASSTHRU to check bans normally */ - virtual ModResult OnCheckExtBan(User *u, Channel *c, char type); + virtual ModResult OnCheckBan(User* user, Channel* chan, const std::string& mask); - /** Called whenever checking whether or not a string is extbanned. NOTE: one OnCheckExtBan will also trigger a number of - * OnCheckStringExtBan events for seperate host/IP comnbinations. - * @returns 1 = exempt, 0 = no match, -1 = banned + /** Checks for a match on a given extban type + * @return MOD_RES_DENY to mark as banned, MOD_RES_ALLOW to skip the + * ban check, or MOD_RES_PASSTHRU to check bans normally */ - virtual ModResult OnCheckStringExtBan(const std::string &s, Channel *c, char type); + virtual ModResult OnExtBanCheck(User* user, Channel* chan, char type); /** Called on all /STATS commands * This method is triggered for all /STATS use, including stats symbols handled by the core. |