rendered paste bodyalias antiboth {
;
; Manipula el control anticlones/antibot
;
; $1 = { set; unset; check }, $2 = Network, $3 = Channel
;
var %icnt = $readini(%se_configfile, antibot, 0)
var %sitem = $null, %schanlst = $null
var %chancnt = 0, %schan = $null, %snet = $null
var %i = 1, %ind = 1
while ( %i <= %icnt ) {
;
; Lee cada linea de la configuración antibot.
; Formato de linea: $network!#canal01;#canal02;#canalN
;
%sitem = $readini( %se_configfile, antibot, %i )
%snet = $gettok(%sitem, 1, 33)
if ( $2 == %snet ) {
;
; Se encontró la red especificada.
;
%schanlst = $gettok(%sitem, 2, 33)
if ($1 == check) {
;
; Verifica si el canal especificado tiene habilitada la protección antibot.
;
%chancnt = $numtok(%schanlst, 59)
while (%ind <= %chancnt) {
%schan = $gettok(%schanlst, %ind, 59)
if ($3 == %schan ) {
return 1
}
inc %ind
}
return 0
}
elseif ( ($1 == set) || ($1 == unset) ) {
if ( $1 == unset ) {
;
; Elimina la protección del canal especificado.
;
%schanlst = $remtok(%schanlst, $3, 1, 59)
}
else {
;
; Agrega la protección del canal especificado.
;
%schanlst = $addtok(%schanlst, $3, 59)
}
%sitem = %snet $+ ! $+ %schanlst
;
; Actualiza los datos en el archivo de configuración.
;
writeini %se_configfile antibot %i %sitem
return 1
}
}
inc %i
}
if ( $1 == set ) {
;
; Agrega la red en el caso de que todavía no exista en la config.
;
%sitem = $2 $+ ! $+ $3
iniadd %se_configfile antibot %sitem
return 1
}
else {
return 0
}
}