Changeset 32010 in spip-zone


Ignore:
Timestamp:
Oct 10, 2009, 7:46:00 PM (10 years ago)
Author:
marcimat@…
Message:

Révision de l'antispam des tickets de Programmer

Location:
_galaxie_/programmer.spip.org/plugin_documentation
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _galaxie_/programmer.spip.org/plugin_documentation/documentation_pipelines.php

    r31935 r32010  
    2323function documentation_formulaire_charger($flux){
    2424        if ($flux['args']['form'] == 'editer_ticket'
    25                 and !$flux['args']['args'][0]
     25                and (!$flux['args']['args'][0] OR $flux['args']['args'][0] == 'oui') // nouveau ticket
    2626                and !$flux['data']['type']) {
    2727                        $flux['data']['type'] = 2;
    28                         $flux['data']['severite'] = 4;
     28                        $flux['data']['severite'] = 3;
    2929        }
    3030        return $flux;
    3131}
     32
    3233
    3334
     
    4748
    4849
     50// verifier qu'un ticket identique n'a pas ete publie il y a peu
     51function test_doublon_ticket($champs, $table='spip_tickets'){
     52        $champs[] = "maj>DATE_SUB(NOW(),INTERVAL 1 hour)";
     53        return sql_countsel($table, $champs);
     54}
     55
     56// verifier que cette ip n'en est pas a son N-ieme post en peu de temps
     57// plus de 5 messages en 5 minutes c'est suspect ...
     58function test_ticket_ip_furieuse(){
     59        $champs = array();
     60        $champs[] = 'ip=' . sql_quote($GLOBALS['ip']);
     61        $champs[] =  "maj>DATE_SUB(NOW(),INTERVAL 10 minute)";
     62        $nb1 = sql_countsel('spip_tickets',$champs);
     63        $nb2 = sql_countsel('spip_tickets_forum',$champs);
     64        if (($nb1 + $nb2) > 5) {
     65                return true;
     66        }       
     67        return false;
     68}
     69
     70
     71
     72                       
    4973// ne pas accepter ce qu'on peut appeler du spam
    5074function documentation_formulaire_verifier($flux){
    51         if ($flux['args']['form'] == 'editer_ticket') {
    52                 $info_plugin = chercher_filtre('info_plugin');
    53                 if ($info_plugin('nospam', 'est_actif')) {
    54                         include_spip('inc/nospam');
    55                         $testsA = $testsB = $testsC = array(
     75        if ($flux['args']['form'] == 'editer_ticket'
     76        OR  $flux['args']['form'] == 'forum_ticket') {
     77                if (include_spip('inc/nospam')) {
     78                        $is_commentaire = ($flux['args']['form'] == 'forum_ticket');
     79                       
     80                        $testsA = $testsB = $testsC = $testM = array(
    5681                                array('caracteres_texte_lien_min', '<', 4),
    5782                                array('nombre_liens', '>', 3),
     
    6186                        $testsC[1][2] = 1; // nombre_liens > 1
    6287                        $testsC[2][2] = 3; // caracteres_utiles < 3
    63                         if (doc_nospam_tester_spam(_request('texte'),   $testsA)
    64                         or  doc_nospam_tester_spam(_request('titre'),   $testsB)
    65                         or  doc_nospam_tester_spam(_request('exemple'), $testsC)) {
    66                                 $flux['data']['message_erreur'] .= _T('nospam:erreur_spam');
    67                         }                       
    68                 }
    69         }
    70         if ($flux['args']['form'] == 'forum_ticket') {
    71                 $info_plugin = chercher_filtre('info_plugin');
    72                 if ($info_plugin('nospam', 'est_actif')) {
    73                         include_spip('inc/nospam');
    74                         $tests = array(
    75                                 array('caracteres_texte_lien_min', '<', 4),
    76                                 array('nombre_liens', '>', 3),
    77                                 array('caracteres_utiles', '<', 5),
    78                         );
    79                         if (doc_nospam_tester_spam(_request('texte'),   $tests)) {
    80                                 $flux['data']['message_erreur'] .= _T('nospam:erreur_spam');
     88                        $testsM[2][2] = 5; // caracteres_utiles < 5
     89
     90                        if (!$is_commentaire) { // ticket
     91                                if (doc_nospam_tester_spam(_request('texte'),   $testsA)
     92                                or  doc_nospam_tester_spam(_request('titre'),   $testsB)
     93                                or  doc_nospam_tester_spam(_request('exemple'), $testsC)) {
     94                                        $flux['data']['message_erreur'] .= _T('nospam:erreur_spam');
     95                                }
     96                        } else { // commentaire
     97                                if (doc_nospam_tester_spam(_request('texte'),   $testsM)) {
     98                                        $flux['data']['message_erreur'] .= _T('nospam:erreur_spam');
     99                                }
     100                        }
     101                        // doublons
     102                        $table = $is_commentaire ? 'spip_tickets_forum' : 'spip_tickets';
     103                        if (test_doublon_ticket(array('texte='. sql_quote(_request('texte'))), $table)) {
     104                                $flux['data']['message_erreur'] .= _T('nospam:erreur_spam_doublon');
     105                        }
     106                        // ip vilaine
     107                        if (test_ticket_ip_furieuse()) {
     108                                $flux['data']['message_erreur'] .= _T('nospam:erreur_spam_ip');
    81109                        }                       
    82110                }
  • _galaxie_/programmer.spip.org/plugin_documentation/plugin.xml

    r31935 r32010  
    55        </auteur>
    66        <lien></lien>
    7         <version>1.1.5</version>
     7        <version>1.1.6</version>
    88        <etat>test</etat>
    99    <description>
     
    4747        <chemin dir='' />
    4848        <utilise id="porte_plume" />
    49         <utilise id="tickets" />
     49        <utilise id="tickets" version="[1.62;]" />
    5050        <utilise id="nospam" version="[0.6;]" />
    5151        <utilise id="pages" />
Note: See TracChangeset for help on using the changeset viewer.