* * Flood protection for TekNap * Author: Brian Weiss - 2000 * fudd @ EFnet IRC / opennap * * *NOTE* If AUTO_MUZZLE is enabled then this will do nothing for PUBLIC * floods. * * TODO: * - Add flood protection exception support */ /* Remember, this is in seconds. */ assign AUTO_IGNORE_TIME 30 assign FLOOD_PROTECTION 1 alias fprot (arg, void) { switch ($arg) { (0) {^assign FLOOD_PROTECTION 0} (1) {^assign FLOOD_PROTECTION 1} (off) {^assign FLOOD_PROTECTION 0} (on) {^assign FLOOD_PROTECTION 1} (*) {@ FLOOD_PROTECTION = FLOOD_PROTECTION ? [0] : [1]} } xecho -b ** Flood protection ${FLOOD_PROTECTION ? [enabled] : [disabled]} } /fprot 1 alias ignore (nick, void) { if (nick) { ^local nickitm @ nickitm = finditem(ignores $nick) if (nickitm <= -1) { @ setitem(ignores $numitems(ignores) $nick) ^on ^join ^"% $nick *" ^on ^leave ^"% $nick *" ^on ^msg ^"$nick *" //ignore $nick raw 322 $nick } }{ ^local ignorecmd @ ignorecmd = CMDCHARS ## CMDCHARS ## [ignore] eval $ignorecmd } } alias unignore (nick, void) { if (nick) { ^local nickitm @ nickitm = finditem(ignores $nick) if (nickitm > -1) { @ delitem(ignores $getitem(ignores $nickitm)) ^on ^join -"% $nick *" ^on ^leave -"% $nick *" ^on ^msg -"$nick *" # msg $nick You're unignored now.. Please don't flood anymore. //ignore -remove $nick raw 323 $nick } }{ ^local ignorecmd @ ignorecmd = CMDCHARS ## CMDCHARS ## [ignore] eval $ignorecmd } } on #^flood 420 "*" if (FLOOD_PROTECTION) { ^local chan $2 ^local nick $0 ^local type $1 switch ($type) { (PUBLIC) { /* If auto-muzzle is enabled, let it handle the flooder */ if (!AUTO_MUZZLE) { xecho -b PUBLIC flooding detected from $nick - Ignoring for $AUTO_IGNORE_TIME seconds # msg $nick I'm ignoring you for $AUTO_IGNORE_TIME seconds for flooding.. ignore $nick timer $AUTO_IGNORE_TIME unignore $nick } } (JOINS) { xecho -b JOIN flooding detected from $nick - Ignoring for $AUTO_IGNORE_TIME seconds ignore $nick timer $AUTO_IGNORE_TIME unignore $nick } (MSGS) { if (nick != [OperServ] && nick != [ChanServ]) { xecho -b MSG flooding detected from $nick - Ignoring for $AUTO_IGNORE_TIME seconds ignore $nick timer $AUTO_IGNORE_TIME unignore $nick } } } } on ^322 ^"*" on ^323 ^"*"