Changeset 65567 in spip-zone
- Timestamp:
- Sep 5, 2012, 1:22:57 PM (8 years ago)
- Location:
- _plugins_/nospam
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/nospam/inc/nospam.php
r65561 r65567 173 173 } 174 174 175 /** 176 * Compare les domaines des liens fournis avec la presence dans la base 177 * 178 * @param array $liens 179 * liste des liens html 180 * @param int $seuil 181 * seuil de detection de presence : nombre d'enregistrement qui ont deja un lien avec le meme domaine 182 * @param string $table 183 * table sql 184 * @param array $champs 185 * champs a prendre en compte dans la detection 186 * @param null|string $condstatut 187 * condition sur le statut='spam' pour ne regarder que les enregistrement en statut spam 188 * @return bool 189 */ 190 function rechercher_presence_liens_spammes($liens,$seuil,$table,$champs,$condstatut=null){ 191 include_spip("inc/filtres"); 192 193 if (is_null($condstatut)) 194 $condstatut = "statut=".sql_quote('spam'); 195 if ($condstatut) 196 $condstatut = "$condstatut AND "; 197 198 $hosts = array(); 199 foreach ($liens as $lien){ 200 $url = extraire_attribut($lien,"href"); 201 if ($parse = parse_url($url) 202 AND $parse['host']) 203 $hosts[] = $parse['host']; 204 } 205 206 $hosts = array_unique($hosts); 207 $hosts = array_filter($hosts); 208 209 // pour chaque host figurant dans un lien, regarder si on a pas deja eu des spams avec ce meme host 210 // auquel cas on refuse poliment le message 211 foreach($hosts as $h){ 212 $like = " LIKE ".sql_quote("%$h%"); 213 $where = $condstatut . "(".implode("$like OR ",$champs)."$like)"; 214 if (sql_countsel($table,$where)>=$seuil){ 215 return $h; 216 } 217 } 218 return false; 219 } 175 220 ?> -
_plugins_/nospam/nospam/verifier_formulaire_forum.php
r65562 r65567 45 45 AND count($infos['liens'])){ 46 46 47 $hosts = array();48 foreach ($infos['liens'] as $lien){49 $url = extraire_attribut($lien,"href");50 if ($parse = parse_url($url)51 AND $parse['host'])52 $hosts[] = $parse['host'];53 }54 47 55 $hosts = array_unique($hosts); 56 $hosts = array_filter($hosts); 57 58 // pour chaque host figurant dans un lien, regarder si on a pas deja eu des spams avec ce meme host 59 // auquel cas on refuse poliment le message 60 foreach($hosts as $h){ 61 if (sql_countsel("spip_forum","statut=".sql_quote('spam')." AND texte LIKE ".sql_quote("%$h%"))>=_SPAM_URL_MAX_OCCURENCES){ 62 spip_log("Refus message de forum qui contient un lien vers $h","nospam"); 63 $flux['data']['texte'] = _T('nospam:erreur_url_deja_spammee'); 64 break; // pas la peine de continuer avec les autres liens 65 } 48 if ($h = rechercher_presence_liens_spammes($infos['liens'],_SPAM_URL_MAX_OCCURENCES,'spip_forum',array('texte'))){ 49 spip_log("Refus message de forum qui contient un lien vers $h","nospam"); 50 $flux['data']['texte'] = _T('nospam:erreur_url_deja_spammee'); 66 51 } 67 52 } -
_plugins_/nospam/nospam_pipelines.php
r65564 r65567 155 155 // s'il y a du contenu caché avec des styles => spam direct 156 156 $flux['data']['statut'] = 'spam'; 157 }elseif ($infos['nombre_liens'] > 0) { 157 } 158 elseif ($infos['nombre_liens'] > 0) { 158 159 // si un lien a un titre de moins de 3 caracteres, c'est louche... 159 160 if ($infos['caracteres_texte_lien_min'] < 3) { … … 170 171 $flux['data']['statut'] = $stat; 171 172 spip_log("\t".$flux['data']['auteur']."\t".$GLOBALS['ip']."\t"."requalifié en ".$stat." car nombre_liens >= ". $s,'nospam'); 172 } 173 } 174 175 if ($flux['data']['statut'] != 'spam'){ 176 $champs = array_unique(array('texte',$champ)); 177 if ($h = rechercher_presence_liens_spammes($infos['liens'],1,'spip_forum',$champs)){ 178 $flux['data']['statut'] = 'spam'; 179 spip_log("\t".$flux['data']['auteur']."\t".$GLOBALS['ip']."\t"."requalifié en spam car lien $h deja dans un spam",'nospam'); 180 } 181 } 173 182 } 174 183 } 184 175 185 176 186 // verifier qu'un message identique n'a pas ete publie il y a peu -
_plugins_/nospam/plugin.xml
r65564 r65567 10 10 <icon>images/nospam-32.png</icon> 11 11 <licence>(c) 2008 GPL</licence> 12 <version>1.0. 1</version>12 <version>1.0.2</version> 13 13 <etat>stable</etat> 14 14 <description><multi>
Note: See TracChangeset
for help on using the changeset viewer.