Hi all,
Due to the recent flood attacks we're having, I was thinking about
adding two more IRCd(+Services) features to help us:
1. eXtended Channel Flags (XCF) will have the following options:
JOIN_CONNECT_TIME - Number of seconds the user must be online to be able to join
TALK_CONNECT_TIME - Number of seconds the user must be online to be
able to talk on the channel
TALK_JOIN_TIME - Number of seconds the user must be on the channel to
be able to tlak on the channel
MAX_BANS - Will let us increase the ban limit for specific channels
that are being flooded
NO_NOTICE - Will prevent /notice's from being sent to the channel
NO_CTCP - Will prevent /ctcp's from being sent to the channel
NO_PART_MSG - Will prevent /part messages from being used on the channel
EXEMPT_OPPED - Will exempt opped users from these flags
EXEMPT_VOICED - Will exempt voiced users from these flags
EXEMPT_IDENTD - Will exempt users with enabled identd from these flags
EXEMPT_REGISTERED - Will exempt registered+identified users (umode +r)
from these flags
EXEMPT_INVITES - Will exempt users who match the invites list (cmode
+I) from these flags
GREETMSG - Will show a message to everyone who joins the channel (to
warn them they might be flagged)
These flags will be controlled by services (will be available to IRC
Operators [temporary]) as well as to channel managers/founders.
(I know /notice's and /ctcp's behaviors are client issues, however,
during a huge flood, it doesn't really matter to me and I want to
minimize the flood effect on users)
The services->ircd server command will be something like:
SVSXCF <option:value> [<option:value>] [<option:value>] …
For example:
SVSXCF JOIN_CONNECT_TIME:300 TALK_JOIN_TIME:60 NO_NOTICE:ON NO_CTCP:ON
EXEMPT_OPPED:ON EXEMPT_VOICED:ON EXEMPT_REGISTERED:ON EXEMPT_IDENTD:ON
In this example, users will only be able to join the channel after
being online for 300 seconds and will only be able to talk on the
channel after 60 seconds (+r'ed users and users with identd will be
exempted from both, while voiced+opped users will be exempted from the
60 seconds delay).
IRC Operators will be able to use /CHECK CHANNEL <channel> to see its
flags. Channel managers/founders will have a ChanServ command for that
(we might enable it to all AOPs+, I'm unsure yet and we can always
change it later).
2. Services Approved Joins: a (server) command that in combination
with cmode +r will require channel joins to be approved by services.*
- When a user will join these channels, the IRCd will send the request
to services.* instead of having the user join the channel, services
will do a few internal checks (including checking that the user isn't
akicked so if a user is akicked, services just won't allow them to
join instead of kickban'ing them) and if everything is good, it will
approve the join and send a command back to the IRCd to do the actual
join.
When services are down, the join command will function normally.
When services are lagged, the join command will be lagged as well (for
these specific channels).
This will let us do a lot of things dynamically without upgrading all
servers (just services) like, for example, allowing channel ops or IRC
Operators approve or deny specific joins (services can automatically
approve or deny the request if it isn't approved/denied within X
seconds to be on the safe side).
Thoughts?
-Kobi.
(Kobi_S @ DALnet)