View Issue Details

IDProjectCategoryView StatusLast Update
0001860unrealircdpublic2004-06-11 21:27
ReporterGouraudShading Assigned To 
PrioritynormalSeverityfeatureReproducibilityalways
Status closedResolutionopen 
Product Version3.2 
Summary0001860: Join-flood protection
DescriptionIt would be nice to protect my network with a
set::anti-flood::join-flood option. Many people is joinflooding, and I can stop them only with tempshun.
3rd party modules

Activities

Stealth

2004-06-03 14:53

reporter   ~0006560

Last edited: 2004-06-03 15:01

You might want to set chanmode +f to all the channels that are affected by the flooding. For information on chanmode +f, consult the docs (http://www.vulnscan.org/unrealircd/unreal32docs.html#feature_antiflood)

Another thing you can do if u have services is: set set::modes-on-join to +R

edited on: 2004-06-03 15:01

codemastr

2004-06-03 15:01

reporter   ~0006561

You could also try AngryWolf's JoinThrottle module (www.angrywolf.org)

aquanight

2004-06-03 17:44

reporter   ~0006564

Last edited: 2004-06-03 17:45

Another common(?) anti-joinflood technique (used on ircds lacking Unreal's +f or AngryWolf's jointhrottle (interestingly, #unreal-support uses the method I'm about to describe as well)) is to set the channel limit to a certian number more than the current number of channel members, and also delaying the update to effectively limit the number of joins in a given time span.

Sample mIRC script (most ppl (that I've seen) use eggdrop for this though):
------
alias setlimit {
  ;Syntax: /setlimit <chan> <joinlimit>
  ;Minimal error checking. Oh well.
  ;Doesn't work with can_override/personal u-line. Op yourself before use.
  if ($1 == $null) return
  if ($2 == $null) retrun
  ;Op validation, so we don't flood the screen with errors every xx seconds.
  if (!$me isop $1) return
  ;Limit check to see if we need to change it, so we don't flood the channel
  ;with +l changes every xx seconds.
  if ($chan($1).limit == $calc($nick($1,0) + $2)) return
  mode $1 +l $calc($nick($1,0) + $2)
}
/timerChannelName 0 5 /setlimit #ChannelName 15
------
(I'd recommend naming the timer so you can shut it off easily with /timer<n> off. I'd also recommend naming it the same as the channel name, so you can make an on PART script to shut it off automatically.)
More or less allowing 15 joins in the span of 5 seconds (3 joins per second). Of course, +f [15j]:5 is much better, but this method can easily be changed with a simple script tweak, whereas +f requires unsetting it and setting again (and remembering the whole floodstring).
(BTW, it's best to use the alias like that so that the counts and such are evaluated at execution, instead of just once when the timer is set.)

edited on: 2004-06-03 17:45

GouraudShading

2004-06-04 10:39

reporter   ~0006577

Oh, I'm sorry my note wasn't plain enough, You didn't understand my problem. I know the +f chanmode, also I'm using it, but some people join too much channel too quick. I'd like a feature, that allows only x joins per y seconds, like set::anti-flood::nick-flood <count>:<period> allows only 'count' nickchanges per 'period' seconds. So I'd like a "global" join-flood protection, not protect some favorite chan.

syzop

2004-06-04 11:53

administrator   ~0006580

GouraudShading: I see.. I don't think that's a good idea however, there are a lot of people that automaticly join like 5 or 10 channels (via perform, via join-channels-on-reconnect, etc). I don't see how 'people joining too many channels too quickly' can be a problem? If you have spammers joining like 30 channels (either 5-every-time or 1-every-time etc) and then spamming an url or whatever the TARGETLIMIT stuff should kick in (which is 20 per 5 minutes or something, feel free to test it ;p).

aquanight: note that the +l stuff doesn't work against quick-join-part floods, like when X00 bots continusly do quick-joinparts it can still flood everyone off (*and a bot/script is often too late to react*), something chanmode +f can protects against ;). [it's exactly after such a joinpart flood in #unreal-support that I decided to code chanmode +f because I was fed up with it].

aquanight

2004-06-04 12:01

reporter   ~0006581

In any case, for global protection, you can use AngryWolf's cmdflood module:

cmdflood {
    join 5:10s; // 1 join per 2 seconds.
};

I don't know if this creates the "fake lag" or just drops the flooding joins, but see if this works for you.

@syzop: Very true. Which is why I said +f [15j]:5 is better for the purpsoe. There probably a lot of other things that +f catches that +l won't. And I'm well aware of script/bot lag ;) .

Issue History

Date Modified Username Field Change
2004-06-03 14:40 GouraudShading New Issue
2004-06-03 14:53 Stealth Note Added: 0006560
2004-06-03 15:01 codemastr Note Added: 0006561
2004-06-03 15:01 Stealth Note Edited: 0006560
2004-06-03 17:44 aquanight Note Added: 0006564
2004-06-03 17:45 aquanight Note Edited: 0006564
2004-06-04 10:39 GouraudShading Note Added: 0006577
2004-06-04 11:53 syzop Note Added: 0006580
2004-06-04 12:01 aquanight Note Added: 0006581
2004-06-11 21:27 syzop Status new => closed