Hi everyone. Thanks very much for all of your suggestions for modules. I am taking them all into consideration and thinking how to implement them, the only thing is, some of them might be slightly different to what you asked for because of reasons, if I make the one you asked for =]
For example something you want might be (in-part) achievable with configuration options. For example:
CrazyCat
Hi Valware,
For years, I hoped for a module allowing to have an action (warn, kill, gline... same as spamfilter) on users which are not on any channel after a reasonnable delay.
Well, I know UnrealIRCd may have too many options heh... But you can indeed do that using just Spamfilter, and a bit of a hacky method heheh.
Here's what I mean:
Code: Select all
/* For CrazyCat, with love from Valware <3 /*
****************************************************
* This is a sort-of advanced configuration you *
* can use for banning users who lurk outside *
* of channels, after a specific duration. *
* This one waits for 30 minutes (1800 seconds) *
* and bans for 12 hours. It also only affects *
* users who have a low reputation (below 30) *
* but you can change any of these values *
* below to match the flow of your network. *
****************************************************
\* \*
*/
// change this to match what you prefer
// reputation less than 30
// have no joins found on our event check (PONG)
security-group lurker {
rule "reputation() < 30 && tag('JOINS') == 0";
}
// they've been here for 30 minutes and still a lurker
security-group lurker-to-be-banned {
rule "in_security_group('lurker') && online_time() > 1800";
}
/* This is a bit of a hack. We are making a check on lurkers
* every PING/PONG (which happens a LOT and you can configure
* when this happens) whether they are in a channel and keeping
* track using a "tag". So you can consider this spamfilter to
* be an event timer which runs whenever your allow {} block
* matching this user is, by default is 90 second intervals
*/
spamfilter {
match-type simple;
match 'PONG *';
target { raw; }
rule "in_security_group('lurker') && !in_security_group('lurker-to-be-banned') && in_channel('#*')";
action { set JOINS++; }
}
/* Ban them using our inventive and cool event timer
* if they did not join any channels after 30 mins
* as per security-group "lurker-to-be-banned"
*/
spamfilter {
match-type simple;
match 'PONG *';
target { raw; }
rule "in_security_group('lurker-to-be-banned')";
action { gzline; }
ban-time 12h;
reason "Lurking is not permitted";
}
As for the everyone else, let's see what your ideas inspire!
Thank you again. If you have any more ideas, please keep them coming.