KLoWnX — File Browser

klownX / klownX / flood_prot-1.mrc

flood_prot-1.mrc — 18.24 KB — Download this file

alias fld.settings-write { writeini $fld.settings-loc $1 $2 $3- }
alias fld.settings-read { return $readini -n $fld.settings-loc $1 $2 }
alias fld.settings-loc { return [ $mIRCdir $+ [ protection\ ] $+ [ settings.ini ] ] }
alias fld.rpt-loc { return [ $mIRCdir $+ [ protection\ ] $+ [ $hash($1,$bits) ] $+ [ \repeatflood.ini ] ] }
alias fld-loc { return [ $mIRCdir $+ [ protection\ ] $+ [ $hash($1,$bits) ] $+ [ \textflood.ini ] ] }
alias fld.rpt-read { return $readini -n $fld.rpt-loc($1) 1 $replace($replace($2,$chr(91),$chr(165)),$chr(93),$chr(167)) } 
alias fld.read { return $readini -n $fld-loc($1) 1 $replace($replace($2,$chr(91),$chr(165)),$chr(93),$chr(167)) } 
alias fld.rpt-remini { remini $fld.rpt-loc($1) 1 $replace($replace($2,$chr(91),$chr(165)),$chr(93),$chr(167)) }
alias fld-remini { remini $fld-loc($1) 1 $replace($replace($2,$chr(91),$chr(165)),$chr(93),$chr(167)) }
alias fld.rpt-write {
  if (($chr(91) !isin $1-) && ($chr(93) !isin $1-)) { writeini $fld.rpt-loc($1) 1 $2 $3- }
  else { writeini $fld.rpt-loc($1) 1 $replace($replace($2,$chr(91),$chr(165)),$chr(93),$chr(167)) $3- }
}
alias fld.write { 
  if (($chr(91) !isin $1-) && ($chr(93) !isin $1-)) { writeini $fld-loc($1) 1 $2 $3- }
  else { writeini $fld-loc($1) 1 $replace($replace($2,$chr(91),$chr(165)),$chr(93),$chr(167)) $3- }
}
alias fld_chk.userlevel { 
  if (mCT !isin $level($address($me,5))) { .rlevel -r =1,mCT |  .guser =1,mCT $me 5  } 
  else { halt } 
}
on 1:START:{
  unset %NEWFLOOD*
  unset %fld*
  unset %on.START*
  if ($finddir($mIRCdir,protection,0) == 0) { mkdir $mIRCdir $+ protection }
  set %on.START-loc $mIRCdir $+ protection\
  set %on.START-c1 $finddir(%on.START-loc,*,0) 
  :on.START-loop
  inc %on.START.l1 1
  if (%on.START.l1 <= %on.START-c1) { 
    if ($exists( [ $finddir(%on.START-loc,*,%on.START.l1) $+ [ \repeatflood.ini ] ] ) == $true) { .remove $finddir(%on.START-loc,*,%on.START.l1) $+ \repeatflood.ini }
    if ($exists( [ $finddir(%on.START-loc,*,%on.START.l1) $+ [ \textflood.ini ] ] ) == $true) { .remove $finddir(%on.START-loc,*,%on.START.l1) $+ \textflood.ini }
    goto on.START-loop
  }
  else { unset %on.START* }
}
on 1:QUIT:{ 
  unset %V-check.* 
  set %V-check.count $comchan($nick,0)
  :V-check.loop
  inc %V-check.loop 1
  if (%V-check.loop <= %V-check.count) { 
    set %V-check.t2 $lower($comchan($nick,%V-check.loop))
    set %V-check.fld.t1 [ $fld.read(%V-check.t2,$address($nick,5)) ]  
    set %V-check.fld-rpt.t1 [ $fld.rpt-read(%V-check.t2,$address($nick,5)) ]  
    if (%V-check.fld.t1) { fld-remini %V-check.t2 $address($nick,5) }
    if (%V-check.fld-rpt.t1) { fld.rpt-remini %V-check.t2 $address($nick,5) }
    goto V-check.loop
  }
  else { unset %V-check.* }
}
on 1:KICK:%NEWFLOOD:{
  set %V-check.t2 $lower(#)
  set %V-check.fld.t1 [ $fld.read(%V-check.t2,$address($knick,5)) ] 
  set %V-check.fld-rpt.t1 [ $fld.rpt-read(%V-check.t2,$address($knick,5)) ]
  if (%V-check.fld.t1) { fld-remini %V-check.t2 $address($knick,5) }
  if (%V-check.fld-rpt.t1) { fld.rpt-remini %V-check.t2 $address($knick,5) }
  unset %V-check.*
}
on +mCT:JOIN:#:{
  if ($fld.settings-read($¥_l(#),State) == On) { 
    ¥fld_turn.ON # | ¥fld_r-add.target NEWFLOOD # 
    fld.settings-write # LastExpiryTime $ctime 
    echo 2 -a  Flood Protection for # is on.
  } 
  else { echo 2 -a  Flood Protection for # is off. } 
  ¥fld_r-files #
}
on 1:JOIN:#:{
  ; Fall back routine if userlevels don't set properly. 
  if ($nick == $me) { 
    .rlevel -r =1,mCT
    .guser =1,mCT $me 5
    if ($fld.settings-read($¥_l(#),State) == On) { 
      ¥fld_turn.ON # | ¥fld_r-add.target NEWFLOOD # 
      fld.settings-write # LastExpiryTime $ctime 
      echo 2 -a  Flood Protection for # is on.
    } 
    else { echo 2 -a  Flood Protection for # is off. } 
    ¥fld_r-files #
  }
}
on 1:CONNECT:{ 
  .rlevel -r =1,mCT 
  .guser =1,mCT $me 5 
  .timer 1 4 fld_chk.userlevel 
  echo 2 -s Flood Protection is loaded. 
}
on 1:DISCONNECT:{ 
  .rlevel -r =1,mCT
  unset %fld_dc.* 
  set %fld_dc.c1 $chan(0)
  :fld_dc.loop
  inc %fld_dc.l1 1 
  if (%fld_dc.l1 <= %fld_dc.c1) {
    ¥fld_turn.OFF $chan(%fld_dc.l1) 1
    ¥fld_r-files $chan(%fld_dc.l1) 
    goto fld_dc.loop 
  }
  else { unset %fld_dc.* %NEWFLOOD* | halt }
}
on +mCT:KICK:%NEWFLOOD:{ ¥fld_turn.OFF # 1 | set %NEWFLOOD $remtok(%NEWFLOOD,#,1,44) | ¥fld_r-files # } 
on +mCT:PART:%NEWFLOOD:{ ¥fld_turn.OFF # 1 | set %NEWFLOOD $remtok(%NEWFLOOD,#,1,44) | ¥fld_r-files # }
on +mCT:NICK:{ .rlevel -r =1,mCT | .guser =1,mCT $newnick 5 } 
on 1:NICK:{
  ; %<#channel>.nckfld.c-lim : limit.
  ; %<#channel>.nckfld.c-time : time. 
  ; [NB: put in for future expansion. Please ignore] 
  unset %fld_n-* 
  if ($comchan($newnick,0) > 0) { 
    if ($comchan($newnick,0) == 1) { 
      set %fld_n-li1 $comchan($newnick,1) 
      set %fld_n-a1 $nick $+ ! $+ $address
      set %fld_n-c1 1
      goto fld_n-next 
    }
    else {
      set %fld_n-c1 $comchan($newnick,0)
      :fld_n-loop.a 
      inc %fld_n-l1 1
      if (%fld_n-l1 <= %fld_n-c1) { 
        ¥fld_r-add.target fld_n-li1 $comchan($newnick,%fld_n-l1) 
        goto fld_n-loop.a
      }
      else {
        set %fld_n-a1 $nick $+ ! $+ $address
        goto fld_n-next
      }
    }
    :fld_n-next 
    inc %fld_n-l2 1
    if ($count(%fld_n-li1,$chr(44)) == 0) { set %fld_n-li2 $lower(%fld_n-li1) }
    else { set %fld_n-li2 $lower($gettok(%fld_n-li1,%fld_n-l2,44)) }
    if (%fld_n-l2 <= %fld_n-c1) { 
      set %fld_n-a2 $puttok(%fld_n-a1,$newnick,1,33)
      set %fld_n-t1 $¥_l(%fld_n-li2) 
      set %fld_n-t2 [ $fld.read(%fld_n-li2,%fld_n-a1) ]  
      if (%fld_n-t2) {
        fld-remini %fld_n-t1 %fld_n-a1
        fld.write %fld_n-t1 %fld_n-a2 %fld_n-t2       
        goto fld_n-rep 
      }
      else { goto fld_n-rep }
      :fld_n-rep 
      set %fld_n-t3 [ $fld.rpt-read(%fld_n-li2,%fld_n-a1) ]
      if (%fld_n-t3) { 
        .remini $fld.rpt-loc(%fld_n-t1) 1 %fld_n-a1
        fld.rpt-remini %fld_n-t1 %fld_n-a1
        fld.rpt-write %fld_n-t1 %fld_n-a2 %fld_n-t3
        if (%fld_n-c1 == 1) { unset %fld_n-* | halt }
        else { goto fld_n-next }
      }        
    } 
    else { unset %fld_n-* | halt }
  }
}
on +1!:TEXT:*:%NEWFLOOD:{
  if (($nick !isop #) && ($fulladdress)) { 
    if (($me !isop #) && (o !isin $usermode)) { halt } 
    elseif ((o isin $usermode) && ( [ % $+ [ [ # ] $+ .fld_Don'tKillUsersForFlooding? ] ] )) { halt }
    set %NEWFLOOD.t1 $¥_l(#)
    if ($fld.rpt-read(%NEWFLOOD.t1,$fulladdress)) { 
      set %fld-r.tt1 $fld.rpt-read(%NEWFLOOD.t1,$fulladdress) 
      if ($gettok(%fld-r.tt1,3-,44) != $1-) {
        fld.rpt-write %NEWFLOOD.t1 $fulladdress 1, $+ $ctime $+ , $+ $1- 
        goto fld.chk 
      } 
      set %fld-r.t1 $calc($gettok(%fld-r.tt1,1,44) + 1) 
      set %fld-r.t2 $gettok(%fld-r.tt1,2,44)
      set %fld-r.t3 $calc($ctime - %fld-r.t2)     
      fld.rpt-write %NEWFLOOD.t1 $fulladdress %fld-r.t1 $+ , $+ %fld-r.t2 $+ , $+ $1- 
      if (%fld-r.t1 >= 3) { 
        if ($me isop #) {
          if (%fld-r.t3 <= 6) { goto d_select.branch->react_a }
          elseif ((%fld-r.t1 >= 5) && (%fld-r.t3 <= 10)) { goto d_select.branch->react_a } 
          else { fld.rpt-write %NEWFLOOD.t1 $fulladdress 1, $+ $ctime $+ , $+ $1-  | halt }        
          :d_select.branch->react_a
          raw -q MODE # +b $address($nick, [ % $+ [ [ # ] $+ .fld.rpt-c.banmask ] ] ) 
          raw -q KICK # $nick : $+ Don't repeat. (Automated Protection)
          set %unbanQ.pre-emptiveBAN.timer-delay. $+ $address($nick, [ % $+ [ [ # ] $+ .fld.rpt-c.banmask ] ] ) $fulladdress $+ $chr(44) $+ 120
          fld.rpt-remini %NEWFLOOD.t1 $fulladdress    
          halt
        }
        elseif ((o isin $usermode) && (%fld-r.t1 >= 4) && (%fld-r.t3 <= 4)) { 
          if ( [ % $+ [ [ # ] $+ .fld.rpt-c.s ] ] ) { goto d_select.branch->react_b }
          elseif (%fld-r.t1 >= 6) { goto d_select.branch->react_b }
          else { goto fld.chk }
          :d_select.branch->react_b
          raw -q KILL $nick : $+ Channel flooding
          fld.rpt-remini %NEWFLOOD.t1 $fulladdress       
          halt 
        }
      }
    }
    else { fld.rpt-write %NEWFLOOD.t1 $fulladdress [ 1, $+ [ $ctime ] $+ , $+ [ $1- ] ] }
    :fld.chk
    if ($fld.read(%NEWFLOOD.t1,$fulladdress)) { 
      set %fld-t.tt1 [ $fld.read(%NEWFLOOD.t1,$fulladdress) ] 
      set %fld-t.t1 $calc($gettok(%fld-t.tt1,1,44) + 1)
      set %fld-t.t2 $gettok(%fld-t.tt1,2,44) 
      fld.write %NEWFLOOD.t1 $fulladdress [ %fld-t.t1 $+ , $+ [ %fld-t.t2 ] ] 
      set %fld-t.t3 $calc($ctime - %fld-t.t2)
      if (%fld-t.t1 >= [ % $+ [ [ # ] $+ .fld.c-lim ] ] ) { 
        if (%fld-t.t3 == 0) { goto punish }
        elseif (%fld-t.t3 <= [ % $+ [ [ # ] $+ .fld.c-time ] ] ) { goto punish }
        else { goto reset }
        :punish
        if ($me isop #) { 
          raw -q MODE # +b $address($nick, [ % $+ [ [ # ] $+ .fld.c-banmask ] ] ) 
          set %unbanQ.pre-emptiveBAN.timer-delay. $+ [ $address($nick, [ % $+ [ [ # ] $+ .fld.c-banmask ] ] ) ] $fulladdress $+ $chr(44) $+ 60
          raw -q KICK # $nick : $+ You seem to be flooding. (Automated Protection)
          fld-remini %NEWFLOOD.t1 $fulladdress  
          halt
        } 
        elseif (o isin $usermode) { 
          raw -q KILL $nick : $+ Channel flooding
          fld-remini %NEWFLOOD.t1 $fulladdress  
          halt 
        }
      }
      else { halt }
    }
    else { goto reset }
    :reset
    unset %fld-t.*
    fld.write %NEWFLOOD.t1 $fulladdress [ 1, $+ [ $ctime ] ] 
    if ($fld.settings-read(#,LastExpiryTime)) { 
      if ($calc(($ctime - $fld.settings-read(#,LastExpiryTime)) / 60) >= [ % $+ [ [ # ] $+ .fld_expiry.time ] ] ) { 
        fld.settings-write # LastExpiryTime $ctime     
        expiry.sync # es | halt 
      }
      elseif ($calc(( [ $file($fld.rpt-loc(%NEWFLOOD.t1)).size ] ) / 1024) >= [ % $+ [ [ # ] $+ .fld_expiry.size ] ] ) {
        fld.settings-write # LastExpiryTime $ctime
        expiry.sync # es | halt 
      }
    }
    else { fld.settings-write # LastExpiryTime $ctime } 
  }
}
on +1!:ACTION:*:%NEWFLOOD:{
  if (($nick !isop #) && ($fulladdress)) { 
    if (($me !isop #) && (o !isin $usermode)) { halt } 
    elseif ((o isin $usermode) && ( [ % $+ [ [ # ] $+ .fld_Don'tKillUsersForFlooding? ] ] )) { halt }
    set %NEWFLOOD.t1 $¥_l(#)
    if ($fld.rpt-read(%NEWFLOOD.t1,$fulladdress)) { 
      set %fld-r.tt1 $fld.rpt-read(%NEWFLOOD.t1,$fulladdress) 
      if ($gettok(%fld-r.tt1,3-,44) != $1-) {
        fld.rpt-write %NEWFLOOD.t1 $fulladdress 1, $+ $ctime $+ , $+ $1- 
        goto fld.chk 
      } 
      set %fld-r.t1 $calc($gettok(%fld-r.tt1,1,44) + 1) 
      set %fld-r.t2 $gettok(%fld-r.tt1,2,44)
      set %fld-r.t3 $calc($ctime - %fld-r.t2)     
      fld.rpt-write %NEWFLOOD.t1 $fulladdress %fld-r.t1 $+ , $+ %fld-r.t2 $+ , $+ $1- 
      if (%fld-r.t1 >= 3) { 
        if ($me isop #) {
          if (%fld-r.t3 <= 6) { goto d_select.branch->react_a }
          elseif ((%fld-r.t1 >= 5) && (%fld-r.t3 <= 10)) { goto d_select.branch->react_a } 
          else { fld.rpt-write %NEWFLOOD.t1 $fulladdress 1, $+ $ctime $+ , $+ $1-  | halt }        
          :d_select.branch->react_a
          raw -q MODE # +b $address($nick, [ % $+ [ [ # ] $+ .fld.rpt-c.banmask ] ] ) 
          raw -q KICK # $nick : $+ Don't repeat. (Automated Protection)
          set %unbanQ.pre-emptiveBAN.timer-delay. $+ $address($nick, [ % $+ [ [ # ] $+ .fld.rpt-c.banmask ] ] ) $fulladdress $+ $chr(44) $+ 120
          fld.rpt-remini %NEWFLOOD.t1 $fulladdress    
          halt
        }
        elseif ((o isin $usermode) && (%fld-r.t1 >= 4) && (%fld-r.t3 <= 4)) { 
          if ( [ % $+ [ [ # ] $+ .fld.rpt-c.s ] ] ) { goto d_select.branch->react_b }
          elseif (%fld-r.t1 >= 6) { goto d_select.branch->react_b }
          else { goto fld.chk }
          :d_select.branch->react_b
          raw -q KILL $nick : $+ Channel flooding
          fld.rpt-remini %NEWFLOOD.t1 $fulladdress       
          halt 
        }
      }
    }
    else { fld.rpt-write %NEWFLOOD.t1 $fulladdress [ 1, $+ [ $ctime ] $+ , $+ [ $1- ] ] }
    :fld.chk
    if ($fld.read(%NEWFLOOD.t1,$fulladdress)) { 
      set %fld-t.tt1 [ $fld.read(%NEWFLOOD.t1,$fulladdress) ] 
      set %fld-t.t1 $calc($gettok(%fld-t.tt1,1,44) + 1)
      set %fld-t.t2 $gettok(%fld-t.tt1,2,44) 
      fld.write %NEWFLOOD.t1 $fulladdress [ %fld-t.t1 $+ , $+ [ %fld-t.t2 ] ] 
      set %fld-t.t3 $calc($ctime - %fld-t.t2)
      if (%fld-t.t1 >= [ % $+ [ [ # ] $+ .fld.c-lim ] ] ) { 
        if (%fld-t.t3 == 0) { goto punish }
        elseif (%fld-t.t3 <= [ % $+ [ [ # ] $+ .fld.c-time ] ] ) { goto punish }
        else { goto reset }
        :punish
        if ($me isop #) { 
          raw -q MODE # +b $address($nick, [ % $+ [ [ # ] $+ .fld.c-banmask ] ] ) 
          set %unbanQ.pre-emptiveBAN.timer-delay. $+ [ $address($nick, [ % $+ [ [ # ] $+ .fld.c-banmask ] ] ) ] $fulladdress $+ $chr(44) $+ 60
          raw -q KICK # $nick : $+ You seem to be flooding. (Automated Protection)
          fld-remini %NEWFLOOD.t1 $fulladdress  
          halt
        } 
        elseif (o isin $usermode) { 
          raw -q KILL $nick : $+ Channel flooding
          fld-remini %NEWFLOOD.t1 $fulladdress  
          halt 
        }
      }
      else { halt }
    }
    else { goto reset }
    :reset
    unset %fld-t.*
    fld.write %NEWFLOOD.t1 $fulladdress [ 1, $+ [ $ctime ] ] 
    if ($fld.settings-read(#,LastExpiryTime)) { 
      if ($calc(($ctime - $fld.settings-read(#,LastExpiryTime)) / 60) >= [ % $+ [ [ # ] $+ .fld_expiry.time ] ] ) { 
        fld.settings-write # LastExpiryTime $ctime     
        expiry.sync # es | halt 
      }
      elseif ($calc(( [ $file($fld.rpt-loc(%NEWFLOOD.t1)).size ] ) / 1024) >= [ % $+ [ [ # ] $+ .fld_expiry.size ] ] ) {
        fld.settings-write # LastExpiryTime $ctime
        expiry.sync # es | halt 
      }
    }
    else { fld.settings-write # LastExpiryTime $ctime } 
  }
}
on +1!:NOTICE:*:%NEWFLOOD:{
  if (($nick !isop #) && ($fulladdress)) { 
    if (($me !isop #) && (o !isin $usermode)) { halt } 
    elseif ((o isin $usermode) && ( [ % $+ [ [ # ] $+ .fld_Don'tKillUsersForFlooding? ] ] )) { halt }
    set %NEWFLOOD.t1 $¥_l(#)
    if ($fld.rpt-read(%NEWFLOOD.t1,$fulladdress)) { 
      set %fld-r.tt1 $fld.rpt-read(%NEWFLOOD.t1,$fulladdress) 
      if ($gettok(%fld-r.tt1,3-,44) != $1-) {
        fld.rpt-write %NEWFLOOD.t1 $fulladdress 1, $+ $ctime $+ , $+ $1- 
        goto fld.chk 
      } 
      set %fld-r.t1 $calc($gettok(%fld-r.tt1,1,44) + 1) 
      set %fld-r.t2 $gettok(%fld-r.tt1,2,44)
      set %fld-r.t3 $calc($ctime - %fld-r.t2)     
      fld.rpt-write %NEWFLOOD.t1 $fulladdress %fld-r.t1 $+ , $+ %fld-r.t2 $+ , $+ $1- 
      if (%fld-r.t1 >= 3) { 
        if ($me isop #) {
          if (%fld-r.t3 <= 6) { goto d_select.branch->react_a }
          elseif ((%fld-r.t1 >= 5) && (%fld-r.t3 <= 10)) { goto d_select.branch->react_a } 
          else { fld.rpt-write %NEWFLOOD.t1 $fulladdress 1, $+ $ctime $+ , $+ $1-  | halt }        
          :d_select.branch->react_a
          raw -q MODE # +b $address($nick, [ % $+ [ [ # ] $+ .fld.rpt-c.banmask ] ] ) 
          raw -q KICK # $nick : $+ Don't repeat. (Automated Protection)
          set %unbanQ.pre-emptiveBAN.timer-delay. $+ $address($nick, [ % $+ [ [ # ] $+ .fld.rpt-c.banmask ] ] ) $fulladdress $+ $chr(44) $+ 120
          fld.rpt-remini %NEWFLOOD.t1 $fulladdress    
          halt
        }
        elseif ((o isin $usermode) && (%fld-r.t1 >= 4) && (%fld-r.t3 <= 4)) { 
          if ( [ % $+ [ [ # ] $+ .fld.rpt-c.s ] ] ) { goto d_select.branch->react_b }
          elseif (%fld-r.t1 >= 6) { goto d_select.branch->react_b }
          else { goto fld.chk }
          :d_select.branch->react_b
          raw -q KILL $nick : $+ Channel flooding
          fld.rpt-remini %NEWFLOOD.t1 $fulladdress       
          halt 
        }
      }
    }
    else { fld.rpt-write %NEWFLOOD.t1 $fulladdress [ 1, $+ [ $ctime ] $+ , $+ [ $1- ] ] }
    :fld.chk
    if ($fld.read(%NEWFLOOD.t1,$fulladdress)) { 
      set %fld-t.tt1 [ $fld.read(%NEWFLOOD.t1,$fulladdress) ] 
      set %fld-t.t1 $calc($gettok(%fld-t.tt1,1,44) + 1)
      set %fld-t.t2 $gettok(%fld-t.tt1,2,44) 
      fld.write %NEWFLOOD.t1 $fulladdress [ %fld-t.t1 $+ , $+ [ %fld-t.t2 ] ] 
      set %fld-t.t3 $calc($ctime - %fld-t.t2)
      if (%fld-t.t1 >= [ % $+ [ [ # ] $+ .fld.c-lim ] ] ) { 
        if (%fld-t.t3 == 0) { goto punish }
        elseif (%fld-t.t3 <= [ % $+ [ [ # ] $+ .fld.c-time ] ] ) { goto punish }
        else { goto reset }
        :punish
        if ($me isop #) { 
          raw -q MODE # +b $address($nick, [ % $+ [ [ # ] $+ .fld.c-banmask ] ] ) 
          set %unbanQ.pre-emptiveBAN.timer-delay. $+ [ $address($nick, [ % $+ [ [ # ] $+ .fld.c-banmask ] ] ) ] $fulladdress $+ $chr(44) $+ 60
          raw -q KICK # $nick : $+ You seem to be flooding. (Automated Protection)
          fld-remini %NEWFLOOD.t1 $fulladdress  
          halt
        } 
        elseif (o isin $usermode) { 
          raw -q KILL $nick : $+ Channel flooding
          fld-remini %NEWFLOOD.t1 $fulladdress  
          halt 
        }
      }
      else { halt }
    }
    else { goto reset }
    :reset
    unset %fld-t.* %fld-r.*
    fld.write %NEWFLOOD.t1 $fulladdress [ 1, $+ [ $ctime ] ] 
    if ($fld.settings-read(#,LastExpiryTime)) { 
      if ($calc(($ctime - $fld.settings-read(#,LastExpiryTime)) / 60) >= [ % $+ [ [ # ] $+ .fld_expiry.time ] ] ) { 
        fld.settings-write # LastExpiryTime $ctime     
        expiry.sync # es | halt 
      }
      elseif ($calc(( [ $file($fld.rpt-loc(%NEWFLOOD.t1)).size ] ) / 1024) >= [ % $+ [ [ # ] $+ .fld_expiry.size ] ] ) {
        fld.settings-write # LastExpiryTime $ctime
        expiry.sync # es | halt 
      }
    }
    else { fld.settings-write # LastExpiryTime $ctime } 
  }
}
on 1:LOAD:{
  .ial on 
  echo 2 -s 02K07L13ø12W05ñ07×1 Flood Protection Loaded
  if (($script(unbanq.mrc) == $null) && ($exists(unbanq.mrc))) { .load -rs UnbanQ.mrc } 
  if (($script(flood_prot-2.mrc) == $null) && ($exists(flood_prot-2.mrc))) { .load -rs flood_prot-2.mrc } 
  if ($finddir($mIRCdir,protection,0) == 0) { mkdir $mIRCdir $+ protection }
  if ($server) { .rlevel =1,mCT | .guser =1,mCT $me 5 } 
}