Extended Bans
We have recently added support for extended bans to ircd-darenet, our server software. Extended bans gives channel operators more flexibility and control over their channel's ban list. The proper syntax for extended bans is as follows:
/mode #channel +b $type:mask
The following types of extended bans are currently supported:
Type | Name | Purpose |
---|---|---|
$a | Account | If a user's account name matches this ban, (s)he will be unable to join. |
$c | Channel | If a user is in a channel that matches this ban, (s)he will be unable to join. |
$j | Shared Bans | If a user matches a ban on the channel who's ban list is being shared, (s)he will be unable to join. |
$n | Nick Change | If a user matches this ban, (s)he will be unable to change their nickname while in the channel. |
$q | Quiet | If a user matches this ban, (s)he will be unable to send messages to the channel. |
$r | Realname | If a user's realname (gecos) matches this ban, (s)he will be unable to join. |
$t | Text | Allows you to specify text that will be blocked if a user's privmsg or notice to the channel contains it. * and ? wildcards supported. |
In This Guide: |
Quiet and Nick Change
$q (quiet) and $n (nick change) are similar to normal bans, except that they allow you to control what a user can do without preventing them from joining the channel. $q prevents users matching the ban from sending messages/notices to the channel, while $n prevents them from changing their nickname.
Syntax:
/mode #channel +b $q:nick!ident@host
/mode #channel +b $n:nick!ident@host
Examples:
Let's say that we wanted to allow AOL users to join the channel, but prevent them from speaking. This could be achieved by setting the following $q (quiet) extended ban:
/mode #channel +b $q:*!*@*.aol.com
If we wanted to also prevent AOL users from changing their nickname while their in our channel, we could also set the following #n (nick change) extended ban to achieve that:
/mode #channel +b $n:*!*@*.aol.com
Channel and Realname
$c and $r are channel and realname (gecos) bans, respectively.
When $c is used, it will prevent users who are currently in the channel specified from joining your channel. When $r is used, it will prevent users who's realname (gecos) matches the ban from joining your channel. Note, $r treats '_' as both the underscore character and a space.
Syntax:
/mode #channel +b $c:#channel
/mode #channel +b $r:realname
Examples:
Let's say we wanted to prevent all users who are inchannels with the word warez in their name from joining our channel. We could achieve this by setting the following $c (channel) extended ban:
/mode #channel +b $c:#*warez*
Let's say we also want to prevent all users with the word bot in their realname (gecos) from joining the channel, as well. To do this, we could set the following $r (realname) extended ban:
/mode #channel +b $r:*bot*
Account Bans
The $a (account) extended ban type allows you to ban (logged in) users who's account matches the specified ban mask. Note, these types of bans can only ever match users logged into their NickServ account.
Syntax:
/mode #channel +b $a:mask
Examples:
If we wanted to ban all users who's account names contained the word joe in them, we could set the following $a (account) extended ban to achieve this:
/mode #channel +b $a:*joe*
NOTE: Extended account bans act identical to the previous method of banning user's based on their account name (e.g. /mode #channel +b *!*@accountname.*
); however, the reverse logic function can also be used with extended account bans, which cannot presently do with the old method. We discuss the reverse logic function a little later in this guide.
Shared Bans
The $j (shared bans) extended ban type allows you to use another channel's ban list.
Syntax:
/mode #channel +b $j:mask
Examples:
Okay, for this example, our channel is #channel and we want to use #shared's channel ban list along with our own. To do this, we would set the following $c (shared bans) extended ban on #channel:
/mode #channel +b $j:#shared
Now, whenever a user tries to join #channel, they will be checked against #shared's channel ban list, in addition to #channel's channel ban list. If a match is found in either ban list, they will be prevented from joining.
Text Bans
$t extended bans, also known as text bans, allow channel operators to specify text that will be blocked if a user's privmsg or noticed to the channel contains it. * and ? wildcards are supported. Also, please keep in mind that this also affects channel operators, halfops and voices.
Syntax:
/mode #channel +b $t:mask
So, for example, if you wanted to block all channel messages/notices that contained the word "damn", you could set the following text ban:
/mode #channel +b $t:damn
Reverse Logic
If "!" is specified in an extended ban, then it will have a reverse effect. Please note this does not work with quiets. Instead, use excepts.
Syntax:
/mode #channel +b $!<type>:mask
Example:
Let's say we wanted to an extended channel ban on #darenet with the "!" (reverse) flag, we'd use:
/mode #channel +b $!c:#darenet
This would prevent anyone from joining #channel if they are not already in #darenet as well.
Assistance
Should you need assistance using the new extended bans feature, feel free to stop by #Support