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: 8626
Pagina 6 de 6
O plugin (semi)final
params;
// get API key
$key = $pluginparams->get( 'key' );
$checkUsers = $pluginparams->get( 'check_users', 1 );
$checkAdmin = $pluginparams->get( 'check_admin', 1 );
// get User object
$user = & JFactory::getUser();
// we are useless with out key
if(empty($key)
|| (!$checkAdmin && $mainframe->isAdmin() )
|| (!$checkUsers && !$user->getParam('guest', 1) ) )
{
return;
}
// set adrs
$adrs = $_SERVER['REMOTE_ADDR'];
// get the cache
$cache =& JFactory::getCache('httpBL', 'output');
$cache->setCaching( 1 );
// We only cache response not the outcome. So settings can be changed without problems.
$response = $cache->get($adrs);
if( !$response ) {
// Query
$ip = implode ( '.', array_reverse( explode( '.', $adrs ) ) );
$query = $key . '.' . $ip .'.dnsbl.httpbl.org';
$response = gethostbyname( $key . '.' . $ip . '.dnsbl.httpbl.org' );
// Ver se é um dos spammeiros de plantão que não foram pegos no honey pot
if( $query == $response ) {
$response = '0.0.0.0';
$uri = $_SERVER['REQUEST_URI'];
$req = $_SERVER['REQUEST_METHOD'];
if( strpos( $uri, 'http://' ) !== false ) $response = '127.0.50.15';
if( strpos( $uri, '/destaque?texto=' ) !== false ) $response = '127.0.50.23';
}
// store data
$cache->store($response, $adrs);
}
// explode response
$resp = $response;
$response = explode( '.', $response);
// If the response is positive,
if ( $response[0] == 127 ) {
// Get thresholds
$age = $pluginparams->get( 'age', 30 );
$threat = $pluginparams->get( 'threat' , 25 );
// Who to block
$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;
// Redirect
$redirect = $pluginparams->get( 'redirect' );
// lazy if so here we go
if ( $response[1] < $age && $response[2] > $threat && ($response[3] & $block > 0)){
if($redirect){
header( "HTTP/1.1 301 Moved Permanently ");
header( "Location: $redirect" );
}
// Colocar no script
$regra = "iptables -A INPUT -s $adrs -j DROP # $resp ";
switch( $response[3] ) {
case 1: $regra .= 'S';
break;
case 2: $regra .= 'H';
break;
case 3: $regra .= 'S H';
break;
case 4: $regra .= 'C';
break;
case 5: $regra .= 'S C';
break;
case 6: $regra .= 'H C';
break;
case 7: $regra .= 'S H C';
break;
case 15: $regra .= 'Meu filtro: http';
break;
case 23: $regra .= 'Meu filtro: destaque';
break;
}
$data = date("d.m.Y H:i:s", time());
$regra .= ' ('.$data .' )'.chr(10);
$handler = fopen( "/home/numaboa.com/logs/cassados", "a" );
fwrite( $handler, $regra );
fclose( $handler );
// Finalmente colocar no iptables rezando para que já tenha sido
// redirecionado para o Honey Pot ou tenha recebido o erro 301
// Alguns milisegundos fazem toda a diferença!
shell_exec("sudo /usr/sbin/iptables -A INPUT -s $adrs -j DROP");
// Is this the correct way to handle in Joomla! 1.5
JError::raiseError( 301, JText::_("Moved"));
}
}
}
}
Finalmentes
Espero que estas dicas sirvam para alguém. Para mim o processo foi doído (doido também), mas valeu.
Abraços da vó Vicki, um tanto exausta
отзывы drift casino казиносковорода из нержавейки с толстым дном отзывыдать отзывлобановский депутатновости свежие украинаdeeoалександр лобановский