alias 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 } }