Extended Bans are a special type of bans (+b), exempts (+e) and invite exceptions (+I) providing “extended” functionality.
These bans start with a tilde, followed by a letter denoting the extban type. For example +b ~q denotes a quiet extban. UnrealIRCd comes with a number of built-in extbans (loaded through Modules). 3rd party modules may introduce even more types.
The following ban type can be used in front of any (ext)ban:
|t||extbans/timed ban||Timed ban that will make a ban unset after the specified number of minutes.||+b ~t:3:*!*@hostname|
The following ban types specify which actions (join, nick-change or speaking) are affected by a ban:
|q||extbans/quiet||People matching these bans can join but are unable to speak, unless they have +v or higher.||+b ~q:*!*@*.blah.com|
|n||extbans/nick change||People matching these bans cannot change nicks unless they have +v or higher.||+b ~n:*!*@*.aol.com|
|j||extbans/join||When a user matches this (s)he may not join the channel but if already in the channel then all activities are permitted such as speaking or changing the nick. This can be useful to ban an entire ISP and then manually /INVITE people to the channel so once joined they can behave as normal.||+b ~j:*!*@*.aol.com|
|m||extbans/msgbypass||Bypass message restrictions. This extended ban is only available as +e and not as +b. Syntax: +e ~m:type:mask.|
Valid types are: external (bypass +n), moderated (bypass +m/+M), censor (bypass +G), color (bypass +S/+c) and notice (bypass +T).
These ban types introduce new criteria which can be used:
|a||extbans/account||If a user is logged in to services with this account name, then this ban will match. This is slightly different than ~R, in the sense that a user with nick ABC may be logged in under account XYZ. Not all services packages support this, in which case you will have to use ~R instead.||+e ~a:SomeAccount +I ~a:SomeAccount|
|c||extbans/in-channel||If the user is on this channel then (s)he is unable to join. A prefix can also be specified (+/%/@/&/~) which means that it will only match if the user has that rights or higher on the specified channel.||+b ~c:#lamers +e ~c:@#trustedops|
|O||extbans/oper class||If the user is an IRCop and the oper::operclass matches this name then the ban/invex will match. You can use this to for example create *admin* only channels.||+iI ~O:*admin*|
|r||extbans/real name||If the real name (gecos) of a user matches this then (s)he is unable to join. Since real names may contain spaces you can use an underscore to match a space (and underscore)||+b ~r:*Stupid_bot_script*|
|R||extbans/regnick||If a user has identified services for this nick then this ban will match. This means this ban is generally only useful for ban exemptions (+e) and invite exceptions (+I).||+e ~R:Nick +I ~R:Nick|
|S||extbans/certfp||When a user is using SSL/TLS with a client certificate then you can match the user by his/her SSL fingerprint (the one you see in /WHOIS). Useful for ban exemptions (+e) and invite exceptions (+I).||+e ~S:0000000etc +I ~S:0000000etc|
|T||extbans/text ban||Channel-specific text filtering. Supports two actions: ‘censor’ and ‘block’, see examples on the right.||+b ~T:censor:*badword* +b ~T:block:*something*|
You may also stack extended bans from the 2nd group with the 3rd group. For example: +b ~q:~c:#lamers would quiet all users who have joined #lamers.
Ban types from the 3rd group can be used to invite exceptions (+I). For example, you can put the channel +i and then use +I ~c:@#trusted and/or +I ~a:accountname.