File: flood.mpi

package info (click to toggle)
madoka 4.2.3-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 960 kB
  • ctags: 45
  • sloc: perl: 1,006; makefile: 45; sh: 4
file content (39 lines) | stat: -rw-r--r-- 970 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# madoka 4.2 flood
#
# flood.mpi
#    Copyright(c)1998- cookie / The madoka project
#

&list_add($plugin_list, 'flood');
&list_add($per_sec, 'flood');
$t_count = 0;
1;

sub flood {
  $cl_fld = ($cl_fld < 100) ? 0 : $cl_fld - 100 if $fld == $fld_tm;
  $fld -- if $fld > $fld_tm;
  &mes("[flood] $fld / $fld_tm / $cl_fld\n", 'D')
    if $fld > $fld_tm || $cl_fld > 0;
  &send('sv', ' ') if $#mes_buf >= 0;
  &ctcp() if $t_count == 0;
}

sub flood_send {
  my $mes = $_[0];
  $mes =~ s/\r*\n$//;
  if ($mes && $mes ne ' ') {
    $fld_tm = time;
    $fld = $fld_tm if $fld < $fld_tm;
    if (($fld <= $fld_tm + 8 && $cl_fld + length($mes) < 500) ||
        $mes =~ /\001DCC /) {
      print SERVER "$mes\r\n";
      $fld += 2;
      $cl_fld += length($mes);
      my($chan, $pr) = ($mes =~ /^PRIVMSG ([^ ]+) :(.*)/);
      my($chanr, $chanv) = &alias_chan($chan);
      &mes(">$chanv:$us_nick< $pr\n", $chanr) if $pr;
    } else {
      unshift(@mes_buf, $mes);
    }
  }
}