Informática Numaboa - Tutoriais e Programação
A praga dos spammeiros
- Detalhes
-
Categoria: Joomla
-
Atualização: Segunda, 02 Julho 2012 19:42
-
Autor: vovó Vicki
-
Acessos: 8627
Pagina 2 de 6
O plugin httpBL
Este é o código original do plugin - só traduzi as observações:
params;
// Pegar chave indicada no plugin
$key = $pluginparams->get( 'key' );
$jsecure = $pluginparams->get( 'jsecure', 1 );
$checkUsers = $pluginparams->get( 'check_users', 1 );
$checkAdmin = $pluginparams->get( 'check_admin', 1 );
// Pegar objeto User
$user =& JFactory::getUser();
// Não podemos continuar sem uma chave
if(empty($key)
|| (!$checkAdmin && $mainframe->isAdmin() )
|| (!$checkUsers && !$user->getParam('guest', 1) ) )
{
return;
}
// Definir adrs
$adrs = $_SERVER['REMOTE_ADDR'];
// Checar lista branca (whitelist) se necessário
if($jsecure){
$dispatcher =& JDispatcher::getInstance();
list($result) = $dispatcher->trigger('jsecureIsWhitelisted', array( $adrs ));
if($result){
return;
}
}
// Pegar o cache
$cache =& JFactory::getCache('httpBL', 'output');
// Colocamos no cache apenas $responce, não o resultado. Assim as configurações podem ser alteradas sem problemas.
$responce = $cache->get($adrs);
if(!$responce){
// Query
$ip = implode ( '.', array_reverse( explode( '.', $adrs ) ) );
$query = $key . '.' . $ip .'.dnsbl.httpbl.org';
$responce = gethostbyname( $query );
// Se a pesquisa falhar, ou não está listado ou erro
if($query == $responce){
// reescrever $responce
$responce = '0.0.0.0';
}
// Armazenar dados
$cache->store($responce, $adrs);
}
// Explodir $responce
$responce = explode( '.', $responce);
// Se a resposta for positiva,
if ( $responce[0] == 127 ) {
// Pegar os limites
$age = $pluginparams->get( 'age', 30 );
$threat = $pluginparams->get( 'threat', 25 );
// Quem deve ser bloqueado
$block_s = $pluginparams->get( 'block_s', 1 ) ? 1 : 0;
$block_h = $pluginparams->get( 'block_h', 1 ) ? 2 : 0;
$block_c = $pluginparams->get( 'block_c', 1 ) ? 4 : 0;
$block = $block_s | $block_h | $block_c;
// Redirecionar
$redirect = $pluginparams->get( 'redirect' );
// E aqui vamos nós
if ( $responce[1] < $age && $responce[2] > $threat && ($responce[3] & $block > 0)){
if($redirect){
header( "HTTP/1.1 301 Moved Permanently ");
header( "Location: $redirect" );
}
// Informar IP para JSecure se necessário
if($jsecure){
$dispatcher =& JDispatcher::getInstance();
if(($responce[3] & $block_h) > 0)
$dispatcher->trigger('jsecureReportIp', array( $adrs, $this->toString(), 'Blocked Harvester' ));
if(($responce[3] & ($block_c | $block_s)) > 0)
$dispatcher->trigger('jsecureReportIp', array( $adrs, $this->toString(), 'Blocked Comment Spammer' ));
}
// Este é o modo correto de fazer no Joomla! 1.5
JError::raiseError( 301, JText::_("Moved"));
}
}
}
}
?>