A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

A praga dos spammeiros

Sex

27

Fev

2009


16:01

(5 votos, média 5.00 de 5) 


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")); } } } } ?>

Informações adicionais