Changeset 106243 in spip-zone for _plugins_/nospam


Ignore:
Timestamp:
Sep 13, 2017, 12:43:51 PM (17 months ago)
Author:
marcimat@…
Message:

Indentation (pas de changement).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/nospam/nospam_pipelines.php

    r99102 r106243  
    88
    99if (!defined("_ECRIRE_INC_VERSION")) return;
    10 if (!defined('_SPAM_URL_MAX_OCCURENCES')) define('_SPAM_URL_MAX_OCCURENCES',3);
    11 if (!defined('_SPAM_ENCRYPT_NAME')) define('_SPAM_ENCRYPT_NAME',false);
     10if (!defined('_SPAM_URL_MAX_OCCURENCES')) define('_SPAM_URL_MAX_OCCURENCES', 3);
     11if (!defined('_SPAM_ENCRYPT_NAME')) define('_SPAM_ENCRYPT_NAME', false);
    1212
    1313/**
     
    2020        if (!isset($GLOBALS['formulaires_no_spam']))
    2121                $GLOBALS['formulaires_no_spam'] = array();
    22         $formulaires = array_merge($GLOBALS['formulaires_no_spam'], array('inscription','forum', 'ecrire_auteur', 'signature', 'recommander','newsletter_subscribe','newsletter_unsubscribe'));
     22        $formulaires = array_merge($GLOBALS['formulaires_no_spam'], array('inscription', 'forum', 'ecrire_auteur', 'signature', 'recommander', 'newsletter_subscribe', 'newsletter_unsubscribe'));
    2323        return pipeline('nospam_lister_formulaires', $formulaires);
    2424}
     
    6464 * @param string $texte
    6565 */
    66 function nospam_inserer_nobot(&$texte){
     66function nospam_inserer_nobot(&$texte) {
    6767        if ((false === strpos($texte, 'name="email_nobot"'))
    6868                AND (false !== $pos = strpos($texte, '</form>'))
    6969        ) {
    7070                // essayer de s'inserer au hasard entre 2 div/li du form
    71                 if (preg_match_all(",<(div|li)\b[^>]*class=['\"]editer[^>]*,ims",$texte,$m)
    72                         AND $i = rand(0,count($m[0])-1)
    73                   AND $p = strpos($texte,$m[0][$i])){
    74                         $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => '','div'=>$m[1][$i]));
     71                if (preg_match_all(",<(div|li)\b[^>]*class=['\"]editer[^>]*,ims", $texte, $m)
     72                        AND $i = rand(0, count($m[0]) - 1)
     73                        AND $p = strpos($texte, $m[0][$i])) {
     74                        $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => '', 'div' => $m[1][$i]));
    7575                        $texte = substr_replace($texte, $nobot, $p, 0);
    76                 }
    77                 // et sinon a la fin juste avant la(les) balise(s) </form>
     76                } // et sinon a la fin juste avant la(les) balise(s) </form>
    7877                else {
    7978                        $nobot = recuperer_fond("inclure/nobot", array('email_nobot' => ''));
     
    8180                }
    8281        }
    83         if (_SPAM_ENCRYPT_NAME){
     82        if (_SPAM_ENCRYPT_NAME) {
    8483                // recuperer toutes les balises input, textarea, select
    85                 $balises = array_merge(extraire_balises($texte,'input'));
    86                 foreach($balises as $k=>$b){
    87                         if (in_array(extraire_attribut($b,"type"),array("hidden","file")))
     84                $balises = array_merge(extraire_balises($texte, 'input'));
     85                foreach ($balises as $k => $b) {
     86                        if (in_array(extraire_attribut($b, "type"), array("hidden", "file")))
    8887                                unset($balises[$k]);
    8988                }
    9089                $balises = array_merge($balises,
    91                         extraire_balises($texte,'textarea'),
    92                         extraire_balises($texte,'select'));
     90                        extraire_balises($texte, 'textarea'),
     91                        extraire_balises($texte, 'select'));
    9392
    9493                $key = "";
    95                 if (preg_match(",<input type='hidden' name='_jeton' value='([^>]*)' />,Uims",$texte,$m))
     94                if (preg_match(",<input type='hidden' name='_jeton' value='([^>]*)' />,Uims", $texte, $m))
    9695                        $key = $m[1];
    9796
    98                 foreach($balises as $k=>$b){
    99                         if ($name = extraire_attribut($b,"name")
    100                           AND strncmp($name,"session_",8)!==0){
     97                foreach ($balises as $k => $b) {
     98                        if ($name = extraire_attribut($b, "name")
     99                                AND strncmp($name, "session_", 8) !== 0) {
    101100                                // cas des truc[chose] : on ne brouille que truc
    102                                 $crypted_name = explode("[",$name);
    103                                 $crypted_name[0] = nospam_name_encode($crypted_name[0],$key);
    104                                 $crypted_name = implode("[",$crypted_name);
    105                                 $b_e = inserer_attribut($b,"name",$crypted_name);
    106                                 $texte = str_replace($b,$b_e,$texte);
    107                         }
    108                 }
    109         }
    110 }
    111 
    112 function nospam_name_encode($name,$key=""){
    113         static $private_key=array();
    114         static $encoded=array();
     101                                $crypted_name = explode("[", $name);
     102                                $crypted_name[0] = nospam_name_encode($crypted_name[0], $key);
     103                                $crypted_name = implode("[", $crypted_name);
     104                                $b_e = inserer_attribut($b, "name", $crypted_name);
     105                                $texte = str_replace($b, $b_e, $texte);
     106                        }
     107                }
     108        }
     109}
     110
     111function nospam_name_encode($name, $key = "") {
     112        static $private_key = array();
     113        static $encoded = array();
    115114        if (isset($encoded[$key][$name]))
    116115                return $encoded[$key][$name];
    117116        if (!$name) return $name;
    118         if (!isset($private_key[$key])){
     117        if (!isset($private_key[$key])) {
    119118                $private_key[$key] = nospam_private_key($key);
    120119                if (!function_exists('_xor'))
    121120                        include_spip("inc/filtres");
    122121        }
    123         $cname = _xor("xx_$name",$key);
     122        $cname = _xor("xx_$name", $key);
    124123        $cname = base64_encode($cname);
    125         $cname = "x_".rtrim(strtr(base64_encode($cname), '+/', '-_'), '=');
     124        $cname = "x_" . rtrim(strtr(base64_encode($cname), '+/', '-_'), '=');
    126125        return $encoded[$key][$name] = $cname;
    127126}
    128127
    129 function nospam_name_decode($name,$key=""){
    130         static $private_key=array();
    131         static $decoded=array();
     128function nospam_name_decode($name, $key = "") {
     129        static $private_key = array();
     130        static $decoded = array();
    132131        if (isset($decoded[$key][$name]))
    133132                return $decoded[$key][$name];
    134133        if (!$name) return $name;
    135         if (strncmp($name,"x_",2)!==0) return $name;
    136         if (!isset($private_key[$key])){
     134        if (strncmp($name, "x_", 2) !== 0) return $name;
     135        if (!isset($private_key[$key])) {
    137136                $private_key[$key] = nospam_private_key($key);
    138137                if (!function_exists('_xor'))
    139138                        include_spip("inc/filtres");
    140139        }
    141         $cname = substr($name,2);
     140        $cname = substr($name, 2);
    142141        $cname = base64_decode(str_pad(strtr($cname, '-_', '+/'), strlen($cname) % 4, '=', STR_PAD_RIGHT));
    143142        $cname = base64_decode($cname);
    144         $cname = _xor($cname,$key);
    145         if (strncmp($cname,"xx_",3)!==0) return $name;
    146         return $decoded[$key][$name] = substr($cname,3);
    147 }
    148 
    149 function nospam_private_key($key){
     143        $cname = _xor($cname, $key);
     144        if (strncmp($cname, "xx_", 3) !== 0) return $name;
     145        return $decoded[$key][$name] = substr($cname, 3);
     146}
     147
     148function nospam_private_key($key) {
    150149        $private_key = $key . __FILE__;
    151150        if (function_exists('sha1'))
     
    168167        if (in_array($form, nospam_lister_formulaires())
    169168                AND $flux['data']
    170                         AND is_array($flux['data'])
     169                AND is_array($flux['data'])
    171170        ) {
    172171                include_spip("inc/nospam");
     
    177176                $flux['data']['_hidden'] .= "<input type='hidden' name='_jeton' value='$jeton' />";
    178177
    179                 if (_SPAM_ENCRYPT_NAME){
     178                if (_SPAM_ENCRYPT_NAME) {
    180179                        $flux['data']['_hidden'] .= "<input type='hidden' name='_encrypt' value='1' />";
    181180                        // recuperer les autosave encryptes si possible
    182181                        if (is_array($flux['data'])
    183                           AND isset($flux['data']['_autosave_id'])
    184                           AND $cle_autosave = $flux['data']['_autosave_id']
    185                           AND include_spip("inc/cvt_autosave")
    186                           AND function_exists("autosave_clean_value")){
     182                                AND isset($flux['data']['_autosave_id'])
     183                                AND $cle_autosave = $flux['data']['_autosave_id']
     184                                AND include_spip("inc/cvt_autosave")
     185                                AND function_exists("autosave_clean_value")) {
    187186
    188187                                $je_suis_poste = $flux['args']['je_suis_poste'];
    189188
    190189                                $cle_autosave = serialize($cle_autosave);
    191                                 $cle_autosave = $form."_".md5($cle_autosave);
     190                                $cle_autosave = $form . "_" . md5($cle_autosave);
    192191
    193192                                // si on a un backup en session et qu'on est au premier chargement, non poste
    194193                                // on restitue les donnees
    195                                 if (isset($GLOBALS['visiteur_session']['session_autosave_'.$cle_autosave])
    196                                   AND !$je_suis_poste) {
    197                                         parse_str($GLOBALS['visiteur_session']['session_autosave_'.$cle_autosave], $vars);
     194                                if (isset($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave])
     195                                        AND !$je_suis_poste) {
     196                                        parse_str($GLOBALS['visiteur_session']['session_autosave_' . $cle_autosave], $vars);
    198197                                        if (isset($vars['_jeton'])
    199                                           AND $key = $vars['_jeton']){
    200                                                 foreach ($vars as $name=>$val) {
    201                                                         if (($dname = nospam_name_decode($name,$key))!==$name
    202                                                           AND isset($flux['data'][$dname]))
    203                                                                 $flux['data'][$dname] = (is_string($val)?autosave_clean_value($val):array_map('autosave_clean_value',$val));
     198                                                AND $key = $vars['_jeton']) {
     199                                                foreach ($vars as $name => $val) {
     200                                                        if (($dname = nospam_name_decode($name, $key)) !== $name
     201                                                                AND isset($flux['data'][$dname]))
     202                                                                $flux['data'][$dname] = (is_string($val) ? autosave_clean_value($val) : array_map('autosave_clean_value', $val));
    204203                                                }
    205204                                        }
     
    227226                // attention, du coup verifier() est appele 2 fois dans ce cas (peut poser probleme ?)
    228227                // donc on repasse ici une deuxieme fois, et il ne faut pas relancer le decryptage
    229                 if (_request('_encrypt') AND !$deja){
     228                if (_request('_encrypt') AND !$deja) {
    230229                        $deja = true;
    231230                        $re_verifier = false;
    232                         foreach($_POST as $k=>$v){
    233                                 $kd = nospam_name_decode($k,$jeton);
    234                                 if ($kd !== $k){
    235                                         set_request($kd,$v);
     231                        foreach ($_POST as $k => $v) {
     232                                $kd = nospam_name_decode($k, $jeton);
     233                                if ($kd !== $k) {
     234                                        set_request($kd, $v);
    236235                                        $re_verifier = true;
    237236                                }
    238237                        }
    239238                        // si on a decode des champs, il faut relancer toute la chaine de verification et sortir
    240                         if ($re_verifier){
    241                                 $verifier = charger_fonction("verifier","formulaires/$form/",true);
     239                        if ($re_verifier) {
     240                                $verifier = charger_fonction("verifier", "formulaires/$form/", true);
    242241                                $flux['data'] = pipeline(
    243                                                   'formulaire_verifier',
    244                                                         array(
    245                                                                 'args'=>array('form'=>$form,'args'=>$flux['args']['args']),
    246                                                                 'data'=>$verifier?call_user_func_array($verifier,$flux['args']['args']):array())
    247                                                         );
     242                                        'formulaire_verifier',
     243                                        array(
     244                                                'args' => array('form' => $form, 'args' => $flux['args']['args']),
     245                                                'data' => $verifier ? call_user_func_array($verifier, $flux['args']['args']) : array())
     246                                );
    248247                                $deja = false;
    249248                                return $flux;
     
    252251                // si l'encrypt a ete active depuis l'affichage initial de ce form, on rebalance l'erreur technique
    253252                // pour reforcer un POST
    254                 if (_SPAM_ENCRYPT_NAME AND !_request('_encrypt')){
    255                         spip_log('SPAM_ENCRYPT_NAME active mais _encrypt manquant','nospam');
     253                if (_SPAM_ENCRYPT_NAME AND !_request('_encrypt')) {
     254                        spip_log('SPAM_ENCRYPT_NAME active mais _encrypt manquant', 'nospam');
    256255                        $flux['data']['message_erreur'] = _T('nospam:erreur_jeton');
    257                 }
    258                 // le jeton prend en compte l'heure et l'ip de l'internaute
     256                } // le jeton prend en compte l'heure et l'ip de l'internaute
    259257                elseif (_request('nobot') // trop facile !
    260258                        OR _request('email_nobot')
     
    262260                ) {
    263261                        if (_request('email_nobot'))
    264                                 spip_log('email_nobot rempli : '._request('email_nobot'),'nospam');
     262                                spip_log('email_nobot rempli : ' . _request('email_nobot'), 'nospam');
    265263                        if (_request('nobot'))
    266                                 spip_log('nobot rempli : '._request('email_nobot'),'nospam');
     264                                spip_log('nobot rempli : ' . _request('email_nobot'), 'nospam');
    267265                        #spip_log('pas de jeton pour '.var_export($flux,true),'nospam');
    268266                        $flux['data']['message_erreur'] .= _T('nospam:erreur_jeton');
     
    302300                // sauf si le posteur a de toute facon le pouvoir de moderer et de se publier
    303301                include_spip('inc/autoriser');
    304                 if (in_array($flux['data']['statut'],array('prop','publie'))
     302                if (
     303                        in_array($flux['data']['statut'], array('prop', 'publie'))
    305304                        AND (!isset($GLOBALS['visiteur_session']['statut']) OR !autoriser('modererforum'))
    306305                ) {
     
    317316                        );
    318317
    319                   // activer aussi le flag spammeur connu en cas de flood, meme si aucune detection spam jusqu'ici
    320                   // on sera plus severe sur les liens dans ce cas
    321                   // cas du spammeur qui envoie que des messages a 3 liens a haute frequence (passe a travers tous les filtres)
    322                   // au bout du 5e message en <10min ou 10e en <30min on va moderer tout message avec un lien
    323                   if (!$spammeur_connu){
    324                           if (($nb=sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip']).$email.') AND '.nospam_sql_date_proche('date_heure','-30','minute')))>=7){
    325                           spip_log("[Flood] $nb message pour (ip=".$GLOBALS['ip']."$email) dans les 30 dernieres minutes",'nospam');
    326                           $spammeur_connu = true;
    327                           }
    328                   }
    329                   if (!$spammeur_connu){
    330                           if (($nb=sql_countsel('spip_forum','(ip='.sql_quote($GLOBALS['ip']).$email.') AND '.nospam_sql_date_proche('date_heure','-10','minute')))>=3){
    331                           spip_log("[Flood] $nb message pour (ip=".$GLOBALS['ip']."$email) dans les 10 dernieres minutes",'nospam');
    332                           $spammeur_connu = true;
    333                           }
    334                   }
     318                        // activer aussi le flag spammeur connu en cas de flood, meme si aucune detection spam jusqu'ici
     319                        // on sera plus severe sur les liens dans ce cas
     320                        // cas du spammeur qui envoie que des messages a 3 liens a haute frequence (passe a travers tous les filtres)
     321                        // au bout du 5e message en <10min ou 10e en <30min on va moderer tout message avec un lien
     322                        if (!$spammeur_connu) {
     323                                if (($nb = sql_countsel('spip_forum', '(ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . nospam_sql_date_proche('date_heure', '-30', 'minute'))) >= 7) {
     324                                        spip_log("[Flood] $nb message pour (ip=" . $GLOBALS['ip'] . "$email) dans les 30 dernieres minutes", 'nospam');
     325                                        $spammeur_connu = true;
     326                                }
     327                        }
     328                        if (!$spammeur_connu) {
     329                                if (($nb = sql_countsel('spip_forum', '(ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . nospam_sql_date_proche('date_heure', '-10', 'minute'))) >= 3) {
     330                                        spip_log("[Flood] $nb message pour (ip=" . $GLOBALS['ip'] . "$email) dans les 10 dernieres minutes", 'nospam');
     331                                        $spammeur_connu = true;
     332                                }
     333                        }
    335334
    336335                        $lang_suspecte = false;
     
    344343                                if (
    345344                                        (isset($GLOBALS['ip_blacklist'][$GLOBALS['ip']])
    346                                    AND ($nb = sql_countsel('spip_forum', sql_in('statut',array('spam')).' AND (ip=' . sql_quote($GLOBALS['ip']).') AND ' . nospam_sql_date_proche('date_heure','-48','hour'))) >= 5
    347                                          AND $h=48
     345                                                AND ($nb = sql_countsel('spip_forum', sql_in('statut', array('spam')) . ' AND (ip=' . sql_quote($GLOBALS['ip']) . ') AND ' . nospam_sql_date_proche('date_heure', '-48', 'hour'))) >= 5
     346                                                AND $h = 48
    348347                                        )
    349348                                        OR
    350                                         (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . nospam_sql_date_proche('date_heure','-120','minute'))) >= 30
    351                                                 AND $h=2)
     349                                        (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . nospam_sql_date_proche('date_heure', '-120', 'minute'))) >= 30
     350                                                AND $h = 2)
    352351                                        OR
    353                                         (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email .') AND ' . nospam_sql_date_proche('date_heure','-60','minute'))) >= 10
    354                                                 AND $h=1)
    355                                         ){
     352                                        (($nb = sql_countsel('spip_forum', 'statut=\'spam\' AND (ip=' . sql_quote($GLOBALS['ip']) . $email . ') AND ' . nospam_sql_date_proche('date_heure', '-60', 'minute'))) >= 10
     353                                                AND $h = 1)
     354                                ) {
    356355                                        $flux['data']['statut'] = ''; // on n'en veut pas !
    357356                                        spip_log("[Refuse] $nb spam pour (ip=" . $GLOBALS['ip'] . "$email) dans les $h dernieres heures", 'nospam');
    358357                                        return $flux;
    359358                                }
    360                                 spip_log("POST *suspect* spammeur_connu","nospam");
     359                                spip_log("POST *suspect* spammeur_connu", "nospam");
    361360                        }
    362361                        // sinon regarder si l'objet a une langue, et si le post est dans la meme langue ou non
    363362                        // en cas de langue differente, on se mefie
    364                         else{
    365                                 $lang_objet = ($GLOBALS['spip_lang']?$GLOBALS['spip_lang']:$GLOBALS['meta']['langue_site']);
    366                                 if ($flux['data']['objet']){
     363                        else {
     364                                $lang_objet = ($GLOBALS['spip_lang'] ? $GLOBALS['spip_lang'] : $GLOBALS['meta']['langue_site']);
     365                                if ($flux['data']['objet']) {
    367366                                        $table = table_objet_sql($flux['data']['objet']);
    368                                         $trouver_table = charger_fonction("trouver_table","base");
     367                                        $trouver_table = charger_fonction("trouver_table", "base");
    369368                                        if ($desc = $trouver_table($table)
    370                                                 AND isset($desc['field']['lang'])){
     369                                                AND isset($desc['field']['lang'])) {
    371370                                                $primary = id_table_objet($flux['data']['objet']);
    372                                                 $lang_objet = sql_getfetsel("lang",$table,"$primary=".intval($flux['data']['id_objet']));
     371                                                $lang_objet = sql_getfetsel("lang", $table, "$primary=" . intval($flux['data']['id_objet']));
    373372                                        }
    374373                                }
    375374                                include_spip("inc/detecter_langue");
    376375                                $lang_post = _detecter_langue($flux['data']['texte']);
    377                                 if ($lang_post!==$lang_objet)
     376                                if ($lang_post !== $lang_objet)
    378377                                        $lang_suspecte = true;
    379                                 spip_log("POST ".($lang_suspecte?"*suspect* ":"")."en langue [$lang_post] sur $primary=".$flux['data']['id_objet']." en langue [$lang_objet]","nospam");
     378                                spip_log("POST " . ($lang_suspecte ? "*suspect* " : "") . "en langue [$lang_post] sur $primary=" . $flux['data']['id_objet'] . " en langue [$lang_objet]", "nospam");
    380379                        }
    381380
     
    403402                        );
    404403
    405                         $seuils = isset($GLOBALS['ip_blacklist'][$GLOBALS['ip']])? $seuils['blacklist'] : (($spammeur_connu OR $lang_suspecte) ? $seuils['suspect'] : $seuils[0]);
     404                        $seuils = isset($GLOBALS['ip_blacklist'][$GLOBALS['ip']]) ? $seuils['blacklist'] : (($spammeur_connu OR $lang_suspecte) ? $seuils['suspect'] : $seuils[0]);
    406405                        include_spip("inc/nospam"); // pour analyser_spams()
    407406                        foreach ($flux['data'] as $champ => $valeur) {
     
    411410                                        $flux['data']['statut'] = 'spam';
    412411                                        spip_log("\t" . $flux['data']['auteur'] . "\t" . $GLOBALS['ip'] . "\t" . "requalifié en spam car contenu cache", 'nospam');
    413                                 }
    414                                 elseif ($infos['nombre_liens'] > 0) {
     412                                } elseif ($infos['nombre_liens'] > 0) {
    415413                                        // si un lien a un titre de moins de 3 caracteres, c'est louche...
    416414                                        if ($infos['caracteres_texte_lien_min'] < 3) {
     
    443441                        // verifier qu'un message identique n'a pas ete publie il y a peu
    444442                        if ($flux['data']['statut'] != 'spam') {
    445                                 if (sql_countsel('spip_forum', 'texte=' . sql_quote($flux['data']['texte']) . " AND statut IN ('publie','off','spam')") > 0){
     443                                if (sql_countsel('spip_forum', 'texte=' . sql_quote($flux['data']['texte']) . " AND statut IN ('publie','off','spam')") > 0) {
    446444                                        $flux['data']['statut'] = 'spam';
    447445                                        spip_log("\t" . $flux['data']['auteur'] . "\t" . $GLOBALS['ip'] . "\t" . "requalifié en spam car message identique deja existant", 'nospam');
     
    451449                        // plus de 5 messages en 5 minutes c'est suspect ...
    452450                        if ($flux['data']['statut'] != 'spam') {
    453                                 if (($nb = sql_countsel('spip_forum', 'ip=' . sql_quote($GLOBALS['ip']) . ' AND ' . nospam_sql_date_proche('date_heure','-5','minute'))) >= 5){
     451                                if (($nb = sql_countsel('spip_forum', 'ip=' . sql_quote($GLOBALS['ip']) . ' AND ' . nospam_sql_date_proche('date_heure', '-5', 'minute'))) >= 5) {
    454452                                        $flux['data']['statut'] = 'spam';
    455                                         spip_log("[Flood2] $nb message pour (ip=".$GLOBALS['ip']."$email) dans les 5 dernieres minutes : requalif en spam",'nospam');
     453                                        spip_log("[Flood2] $nb message pour (ip=" . $GLOBALS['ip'] . "$email) dans les 5 dernieres minutes : requalif en spam", 'nospam');
    456454                                }
    457455                        }
     
    472470
    473471        return '('
    474         . $champ
    475         . (($interval <= 0) ? '>' : '<')
    476         . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
    477         . '('
    478         . sql_quote(date('Y-m-d H:i:s'))
    479         . ', INTERVAL '
    480         . (($interval > 0) ? $interval : (0-$interval))
    481         . ' '
    482         . $unite
    483         . '))';
    484 }
    485 
     472                . $champ
     473                . (($interval <= 0) ? '>' : '<')
     474                . (($interval <= 0) ? 'DATE_SUB' : 'DATE_ADD')
     475                . '('
     476                . sql_quote(date('Y-m-d H:i:s'))
     477                . ', INTERVAL '
     478                . (($interval > 0) ? $interval : (0 - $interval))
     479                . ' '
     480                . $unite
     481                . '))';
     482}
    486483
    487484
     
    491488 * @return mixed
    492489 */
    493 function nospam_flush_close($content){
    494         header("Content-Length: ".($l=ob_get_length()));
     490function nospam_flush_close($content) {
     491        header("Content-Length: " . ($l = ob_get_length()));
    495492        header("Connection: close");
    496493        return $content;
     
    500497 * Flusher et lancer l'update de la liste des ip
    501498 */
    502 function nospam_flush_and_update(){
     499function nospam_flush_and_update() {
    503500        chdir(_ROOT_CWD); // securite en cas de register_shutdown_function
    504501        // forcer le flush des tampons pas envoyes (declenche le content-length/conection:close envoye dans cache_cool_flush)
     
    511508}
    512509
    513 if (!defined('_NOSPAM_IP_LIST_CACHE')) define('_NOSPAM_IP_LIST_CACHE',3600);
     510if (!defined('_NOSPAM_IP_LIST_CACHE')) define('_NOSPAM_IP_LIST_CACHE', 3600);
    514511/**
    515512 * Recuperer la liste des IP black ou grey sur nospam.spip.net
     
    518515 * @param bool $async
    519516 */
    520 function nospam_update_ip_list($async=false){
    521         $file = _DIR_TMP."nospam_ip_list.txt";
    522         if (file_exists($file) AND filemtime($file)>time()-_NOSPAM_IP_LIST_CACHE)
     517function nospam_update_ip_list($async = false) {
     518        $file = _DIR_TMP . "nospam_ip_list.txt";
     519        if (file_exists($file) AND filemtime($file) > time() - _NOSPAM_IP_LIST_CACHE)
    523520                return;
    524         spip_log("nospam_update_ip_list:$async","nospam");
    525 
    526         if ($async){
     521        spip_log("nospam_update_ip_list:$async", "nospam");
     522
     523        if ($async) {
    527524                // indiquer de fermer la connexion dans la foulee
    528525                // pour faire le hit de recuperation async hors temps d'attente
     
    539536        include_spip("inc/json");
    540537        $res = recuperer_page($url_api);
    541         if (!$res AND file_exists($f=_DIR_TMP."spamsignal-api-list.txt"))
    542                 lire_fichier($f,$res);
     538        if (!$res AND file_exists($f = _DIR_TMP . "spamsignal-api-list.txt"))
     539                lire_fichier($f, $res);
    543540        if ($res
    544           AND function_exists("json_decode")
    545           AND $liste = json_decode($res,true)){
    546                 ecrire_fichier($file,serialize($liste));
     541                AND function_exists("json_decode")
     542                AND $liste = json_decode($res, true)) {
     543                ecrire_fichier($file, serialize($liste));
    547544        }
    548545}
     
    554551 *   ok|grey|black
    555552 */
    556 function nospam_check_ip_status($ip){
    557         $file = _DIR_TMP."nospam_ip_list.txt";
    558         if (!file_exists($file) OR filemtime($file)<time()-2*_NOSPAM_IP_LIST_CACHE)
     553function nospam_check_ip_status($ip) {
     554        $file = _DIR_TMP . "nospam_ip_list.txt";
     555        if (!file_exists($file) OR filemtime($file) < time() - 2 * _NOSPAM_IP_LIST_CACHE)
    559556                return;
    560557
    561         lire_fichier($file,$liste);
    562         spip_log("nospam_check_ip_status:$ip","nospam");
    563         if ($liste = unserialize($liste)){
     558        lire_fichier($file, $liste);
     559        spip_log("nospam_check_ip_status:$ip", "nospam");
     560        if ($liste = unserialize($liste)) {
    564561                #spip_log($liste,"nospam");
    565562                $now = date('Y-m-d H:i:s');
    566                 $ip_family = preg_replace(",([.:])[^.:]+$,","$1*",$ip);
    567                 spip_log("ip $ip famille $ip_family","nospam");
    568                 foreach(array("blacklist","greylist") AS $l){
     563                $ip_family = preg_replace(",([.:])[^.:]+$,", "$1*", $ip);
     564                spip_log("ip $ip famille $ip_family", "nospam");
     565                foreach (array("blacklist", "greylist") AS $l) {
    569566                        if (isset($liste[$l][$ip])
    570                                 AND $liste[$l][$ip]>$now){
    571                                 $GLOBALS['ip_'.$l][$ip] = true;
    572                                 spip_log("$ip ajoute a ip_$l","nospam");
    573                                 return ($l=="blacklist"?"black":"grey");
     567                                AND $liste[$l][$ip] > $now) {
     568                                $GLOBALS['ip_' . $l][$ip] = true;
     569                                spip_log("$ip ajoute a ip_$l", "nospam");
     570                                return ($l == "blacklist" ? "black" : "grey");
    574571                        }
    575572                        if (isset($liste[$l][$ip_family])
    576                                 AND $liste[$l][$ip_family]>$now){
    577                                 $GLOBALS['ip_'.$l][$ip] = true;
    578                                 spip_log("$ip ajoute a ip_$l (famille $ip_family)","nospam");
    579                                 return ($l=="blacklist"?"black":"grey");
     573                                AND $liste[$l][$ip_family] > $now) {
     574                                $GLOBALS['ip_' . $l][$ip] = true;
     575                                spip_log("$ip ajoute a ip_$l (famille $ip_family)", "nospam");
     576                                return ($l == "blacklist" ? "black" : "grey");
    580577                        }
    581578                }
     
    583580        return "ok";
    584581}
     582
    585583?>
Note: See TracChangeset for help on using the changeset viewer.