If the amount set by +l has been reached, users will be sent to this channel

M

A registered nickname (+r) is required to talk

m

Moderated channel. Only +v/o/h users may speak

N

No nick name changes permitted

n

No messages from outside channels

O

Only IRCops may join

o <nick>

Gives a user channel operator status

p

Makes channel private

q <nick>

Sets channel owner

Q

Only U:Lined servers can kick users

R

Requires a registered nickname to join

S

Strips all incoming colors

s

Makes channel secret

t

Only chanops can set topic

T

No NOTICE's allowed in the channel

u

Auditorium – Makes /names and /who #channel only show channel ops

V

/invite is not allowed

v <nick>

Gives a voice to users. (May speak in +m channels)

z

Only clients on a Secure (SSL) Connection may join

Mode

Description

User Modes

A

Server Admin (Set in Oper Block)

a

Services Admin (Set in Oper Block)

B

Marks you as being a Bot

C

Co-Admin (Set in Oper Block)

d

Makes it so you can not receive channel PRIVMSGs

G

Filters out all the bad words per configuration

g

Can send & read globops and locops

H

Hide IRCop Status (IRCop Only)

h

Available for help (HelpOp) (Set in OperBlock)

i

Invisible (not shown in /who)

N

Network Administrator (Set in Oper Block)

O

Local IRC Operator (Set in Oper Block)

o

Global IRC Operator (Set in Oper Block)

p

Hides the channels you are in from /whois

q

Only U:Lines can kick you (Services Admins Only)

R

Allows you to only receive PRIVMSGs/NOTICEs from registered (+r) users

r

Identifies the nick as being registered

S

Used to protect Services Daemons

s

Can listen to server notices (see section 3.3 above for more information)

T

Prevents you from receiving CTCPs

t

Says you are using a /vhost

V

Marks you as a WebTV user

v

Receives infected DCC Send Rejection notices

W

Lets you see when people do a /whois on you (IRCops Only)

w

Can listen to wallop messages

x

Gives user a hidden hostname

z

Indicates that you are an SSL client

Further info from the docs

3.12 - Anti-Flood features

Throttling
Throttling is a method that allows you to limit how fast a user can disconnect and then reconnect to your server.
You can config it in your set::throttle block to allow X connections in YY seconds from the same IP.Channel modes
There are also some channel modes which can be very effective against floods. To name a few:K = no /knock, N = no nickchanges, C = no CTCPs, M = only registered users can talk, j = join throttling (per-user basis)
As of beta18 there's also a much more advanced channelmode +f...Channel mode f
Instead of using scripts and bots to protect against channel floods it is now build into the ircd.
An example +f mode is: *** Blah sets mode: +f [10j]:15
This means 10 joins per 15 seconds are allowed in the channel, if the limit is hit, the channel will be set +i automatically.
The following floodtypes are available:

type:

name:

default action:

other avail. actions:

comments

c

CTCPs

auto +C

m, M

j

joins

auto +i

R

k

knocks

auto +K

(counted for local clients only)

m

messages/notices

auto +m

M

n

nickchanges

auto +N

t

text

kick

b

per-user messages/notices like the old +f. Will kick or ban the user.

Example:

*** ChanOp sets mode: +f [20j,50m,7n]:15
<ChanOp> lalala
*** Evil1 (~fdsdsfddf@Clk-17B4D84B.blah.net) has joined #test
*** Evil2 (~jcvibhcih@Clk-3472A942.xx.someispcom) has joined #test
*** Evil3 (~toijhlihs@Clk-38D374A3.aol.com) has joined #test
*** Evil4 (~eihjifihi@Clk-5387B42F.dfdfd.blablalba.be) has joined #test
-- snip XX lines --
*** Evil21 (~jiovoihew@Clk-48D826C3.e.something.org) has joined #test-server1.test.net:#test *** Channel joinflood detected (limit is 20 per 15 seconds), putting +i*** server1.test.net sets mode: +i
<Evil2> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil12> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil15> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil10> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
<Evil8> fsdjfdshfdkjfdkjfdsgdskjgsdjgsdsdfsfdujsflkhsfdl
-- snip XX lines --
-server1.test.net:#test *** Channel msg/noticeflood detected (limit is 50 per 15 seconds), putting +m*** server1.test.net sets mode: +m*** Evil1 is now known as Hmmm1*** Evil2 is now known as Hmmm2*** Evil3 is now known as Hmmm3*** Evil4 is now known as Hmmm4*** Evil5 is now known as Hmmm5*** Evil6 is now known as Hmmm6*** Evil7 is now known as Hmmm7*** Evil8 is now known as Hmmm8-server1.test.net:#test *** Channel nickflood detected (limit is 7 per 15 seconds), putting +N*** server1.test.net sets mode: +N

In fact, it can get even more advanced/complicated:
Instead of the default action, you can for some floodtypes specify another one, for example: +f [20j#R,50m#M]:15
This will set the channel +R if the joinlimit is reached (>20 joins in 15 seconds),
and will set the channel +M if the msg limit is reached (>50 messages in 15 seconds).

There's also a "remove mode after X minutes" feature: +f [20j#R5]:15 will set the channel +R if the
limit is reached and will set -R after 5 minutes.
A server can have a default unsettime (set::modef-default-unsettime), so if you type +f [20j]:15 it could get
transformed into +f [20j#i10]:15, it's just a default, you can still set [20j#i2]:15 or something like that,
and you can also disable the remove-chanmode completely by doing a +f [20j#i0]:15 (an explicit 0).

The old +f mode (msgflood per-user) is also still available as 't', +f 10:6 is now called +f [10t]:6 and
+f *20:10 is now +f [20t#b]:10. Currently the ircd will automatically convert old +f mode types to new ones.
Note that there's no unsettime feature available for 't' bans ([20t#b30]:15 does not work).

What the best +f mode is heavily depends on the channel... how many users does it have? do you have a game that makes users
msg a lot (eg: trivia) or do users often use popups? is it some kind of mainchannel or in auto-join? etc..
There's no perfect channelmode +f that is good for all channels, but to get you started have a look at the next example and modify
it to suit your needs:
+f [30j#i10,40m#m10,7c#C15,10n#N15,30k#K10]:15
30 joins per 15 seconds, if limit is reached set channel +i for 10 minutes
40 messages per 15 seconds, if limit is reached set channel +m for 10 minutes
7 ctcps per 15 seconds, if limit is reached set channel +C for 15 minutes
10 nickchanges per 15 seconds, if limit is reached set channel +N for 15 minutes
30 knocks per 15 seconds, if limit is reached set channel +K for 10 minutes
If it's some kind of large user channel (>75 users?) you will want to increase the join sensitivity (to eg: 50) and the
message limit as well (to eg: 60 or 75).
Especially the remove-mode times are a matter of taste.. you should think like.. what if no op is available to handle
the situation, do I want to have the channel locked for like 15 minutes (=not nice for users) or 5 minutes (=likely the flooders
will just wait 5m and flood again). It also depends on the floodtype, users unable to join (+i) or speak (+m) is worse than
having them unable to change their nick (+N) or send ctcps to the channel (+C) so you might want to use different removal times.
Channel mode j
The +f mode includes a feature to prevent join floods, however this feature is "global." For
example, if it is set to 5:10 and 5 different users join in 10 seconds, the flood
protection is triggered. Channel mode +j is different. This mode works on a per-user basis.
Rather than protecting against join floods, it is designed to protect against join-part floods
(revolving door floods). The mode takes a parameter of the form X:Y where X is the number of
joins and Y is the number of seconds. If a user exceeds this limit, he/she will be prevented
from joining the channel.

3.13 - Ban types

Basic bantypes and cloaked hosts
UnrealIRCd supports the basic bantypes like +b nick!user@host.
Also, if a masked host of someone is 'rox-ACB17294.isp.com' and you place a ban *!*@rox-ACB17294.isp.com,
then if the user sets himself -x (and his hosts becomes for example 'dial-123.isp.com) then the ban
will still match. Bans are always checked against real hosts AND masked hosts.
IP bans are also available (eg: *!*@128.*) and are also always checked.

Bans on cloaked IPs require some explanation:
If a user has the IP 1.2.3.4 his cloaked host could be 341C6CEC.8FC6128B.303AEBC6.IP.
If you ban *!*@341C6CEC.8FC6128B.303AEBC6.IP you would ban *!*@1.2.3.4 (obvious...)
If you ban *!*@*.8FC6128B.303AEBC6.IP you ban *!*@1.2.3.*
If you ban *!*@*.303AEBC6.IP you ban *!*@1.2.*
This information might be helpful to you when deciding how broad a ban should be.

Extended bantypes
Extended bans look like ~[!]<type>:<stuff>. Currently the following types are available:

type:

name

explanation:

~q

quiet

People matching these bans can join but are unable to speak,
unless they have +v or higher. Ex: ~q:*!*@blah.blah.com

~n

nickchange

People matching these bans cannot change nicks,
unless they have +v or higher. Ex: ~n:*!*@*.aol.com

~c

[prefix]channel

If the user is in 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.
Ex: +b ~c:#lamers, +e ~c:@#trusted

~r

realname

If the realname of a user matches this then (s)he is unable to join.Ex: ~r:*Stupid_bot_script*
NOTE: an underscore ('_') matches both a space (' ') and an underscore ('_'), so this ban would match
'Stupid bot script v1.4'.

These bantypes are also supported in the channel exception list (+e).
Modules can also add other extended ban types.

3.14 - Spamfilter

Spamfilter is a new system to fight spam, advertising, worms and other things. It works a bit like
the badwords system but has several advantages.

shuns the current session of the user (if [s]he reconnects the shun is gone)

shun

puts a shun on the host

kline

puts a kline on the host

gline

puts a gline on the host

zline

puts a zline on the host

gzline

puts a gzline (global zline) on the host

block

block the message only

dccblock

mark the user so (s)he's unable to send any DCCs

viruschan

part all channels, join set::spamfilter::virus-help-channel, disables all commands
except PONG, ADMIN, and msg/notices to set::spamfilter::virus-help-channel

[tkltime]

The duration of the *line/shun added by the filter, use '-' to use the default or to skip
(eg: if action = 'block')

[reason]

Block/*line/shun reason.. you CANNOT use spaces in this, but underscores ('_') will be translated
into spaces at runtime. And double underscore ('__') gets an underscore ('_'). Again, use '-' to use the default reason.

[regex]

this is the actual regex or 'bad word' where we should block on and perform the action at

Here's an example: /spamfilter add pc gline - - Come watch me on my webcam
If the text come watch me on my webcam is found in either a private msg or a channel msg
then the message will be blocked and a gline will be added immediately.
Another example: /spamfilter add pc block - - come to irc..+..+
This is a regex that will match on Hi, come to irc.blah.net etc....
And an example with specified time/reason:/spamfilter add p gline 3h Please_go_to_www.viruscan.xx/nicepage/virus=blah Come watch me on my webcam
If come watch me on my webcam is found in a private msg then the user is glined for 3 hours
with the reason Please go to www.viruscan.xx/nicepage/virus=blah.

Spamfilters added with /spamfilter are network-wide. They work regardless of whether the user/channel
has mode +G set, only opers and ulines (services) are exempted from filtering.

You can also add spamfilters in the config file but these will be local spamfilters (not
network-wide, though you could use remote includes for this).
The syntax of these spamfilter { } blocks are explained here
Example:

set::spamfilter::ban-time allows you to modify the default ban time for *lines/shuns added by spamfilter (default: 1 day)set::spamfilter::ban-reason allows you to specify a default reason (default: 'Spam/advertising')set::spamfilter::virus-help-channel allows you to specify the channel to join for action 'viruschan' (default: #help)set::spamfilter::virus-help-channel-deny allows you to block any normal joins to virus-help-channel (default: no)