Changeset 107178 in spip-zone


Ignore:
Timestamp:
Oct 27, 2017, 8:51:40 AM (16 months ago)
Author:
fabio.bertagnin@…
Message:

Version 1.3.0 pour spip 3.2 et avec l'intégration de reCAPTCHA

Location:
_plugins_/fbantispam
Files:
12 added
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fbantispam/fbantispam/verifier_formulaire_forum.php

    r81051 r107178  
    77if (!defined("_ECRIRE_INC_VERSION")) return;
    88
    9 
    109/**
    1110 */
     
    1312        $ret = array();
    1413        $form = $flux['args']['form'];
    15         if ($form == "forum")
    16         {
    17                 $texte = _request('texte');
    18                 $captcha = _request('captcha');
    19                 $cp0 = _request('c1');
    20                 $cp1 = _request('c0');
    21                 $cp2 = _request('c2');
    22                 $cp3 = _request('c3');
    23                 $cps = "$cp0"."$cp1"."$cp2"."$cp3";
    24                 include_spip("inc/fbantispam");
     14        $type_captcha = lire_config('fbantispam/type_captcha', 'copie');
     15        if ($form == "forum")
     16        {
     17            if ($type_captcha == 'recaptcha')
     18            {
     19                include_spip("fbantispam/recaptchalib.php");
     20                if ($_POST["recaptcha_response_field"]) {
     21                        $resp = recaptcha_check_answer (lire_config('fbantispam/cle_secrete'),
     22                                                        $_SERVER["REMOTE_ADDR"],
     23                                                        $_POST["recaptcha_challenge_field"],
     24                                                        $_POST["recaptcha_response_field"]);
    2525
    26                 if ($captcha != $cps)
    27                 {
    28                         $ret['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
    29                 }
    30         }
     26                        if (!$resp->is_valid) {
     27                            $error = $resp->error;
     28                            $ret['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     29                        }
     30                }
     31                // echo "<pre>";print_r($resp);echo "</pre>";exit;
     32            }
     33            else {
     34                $texte = _request('texte');
     35                $captcha = _request('captcha');
     36                $cp0 = _request('c1');
     37                $cp1 = _request('c0');
     38                $cp2 = _request('c2');
     39                $cp3 = _request('c3');
     40                $cps = "$cp0"."$cp1"."$cp2"."$cp3";
     41                include_spip("inc/fbantispam");
    3142
     43                if ($captcha != $cps)
     44                {
     45                        $ret['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     46                }
     47            }
     48        }
    3249        return $ret;
    3350}
  • _plugins_/fbantispam/fbantispam_pipelines.php

    r103864 r107178  
    44 * Plugin FB Antispam
    55 * (c) 2013 Fabio Bertagnin - FBServices - www.fbservices.fr
    6  * Inspiré de "nospam" de Cedric Morin pour www.yterium.net (https://contrib.spip.net/?rubrique1165)
     6 * Inspiré de "nospam" de Cedric Morin pour www.yterium.net (http://www.spip-contrib.net/?rubrique1165)
    77 * Licence GPL
    88 *
     
    1111    return;
    1212
    13 /**
    14  * Ajouter le champ de formulaire 'nobot' au besoin
    15  *
    16  * @param array $flux
    17  * @return array
    18  */
     13function fbantispam_insert_head($flux) {
     14    return $flux;
     15}
     16
    1917function fbantispam_recuperer_fond($flux) {
    2018    $fond = strval($flux['args']['fond']);
     
    3533        if ($pos) {
    3634            $type_captcha = lire_config('fbantispam/type_captcha', 'copie');
    37             if ($type_captcha == 'copie')
    38             {
     35            if ($type_captcha == 'copie' || $type_captcha == '') {
    3936                $cp = fbantispam_get_captcha();
    4037                $cps = "$cp[0]$cp[1]$cp[2]$cp[3]";
     
    4239                $texte = substr_replace($texte, $captcha, $pos, 0);
    4340            }
    44             if ($type_captcha == 'addition')
    45             {
     41            if ($type_captcha == 'addition') {
    4642                $cp = fbantispam_get_captcha();
    4743                $cps = "$cp[1]+$cp[3]";
     
    4945                $texte = substr_replace($texte, $captcha, $pos, 0);
    5046            }
    51             if ($type_captcha == 'multiplication')
    52             {
     47            if ($type_captcha == 'multiplication') {
    5348                $cp = fbantispam_get_captcha();
    5449                $cps = "$cp[1]x$cp[3]";
    5550                $captcha = recuperer_fond("inclure/captcha-multiplication", array('captcha' => $cps, 'c1' => $cp[0] * 2, 'c0' => $cp[1] * 2, 'c2' => $cp[2] * 2, 'c3' => $cp[3] * 2));
     51                $texte = substr_replace($texte, $captcha, $pos, 0);
     52            }
     53            if ($type_captcha == 'recaptcha') {
     54                $captcha = recuperer_fond("inclure/captcha-recaptcha", array('cle_site' => lire_config('fbantispam/cle_site')));
    5655                $texte = substr_replace($texte, $captcha, $pos, 0);
    5756            }
     
    8988    if ($form == "forum" && $previsu) {
    9089
    91         $captcha = _request('captcha');
    92         $cp0 = _request('c1') / 2;
    93         $cp1 = _request('c0') / 2;
    94         $cp2 = _request('c2') / 2;
    95         $cp3 = _request('c3') / 2;
    96         $cmod = _request('cmod');
    97         if ($cmod != 'fbantispam') {
    98             $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : message non accepté (identifié à un SPAM)</p>';
    99             return $res;
    100         }
    101         if ($captcha == '') {
    102             $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'a pas été saisi</p>';
    103             return $res;
    104         }
    105         $type_captcha = lire_config('fbantispam/type_captcha');
    106         if ($type_captcha == 'copie' || $type_captcha == '')
    107         {
    108             $cps = "$cp0" . "$cp1" . "$cp2" . "$cp3";
    109             if ($captcha != $cps) {
    110                 $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     90        $type_captcha = lire_config('fbantispam/type_captcha', 'copie');
     91        if ($type_captcha != 'recaptcha') {
     92            $captcha = _request('captcha');
     93            $cp0 = _request('c1') / 2;
     94            $cp1 = _request('c0') / 2;
     95            $cp2 = _request('c2') / 2;
     96            $cp3 = _request('c3') / 2;
     97            $cmod = _request('cmod');
     98            if ($cmod != 'fbantispam') {
     99                $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : message non accepté (identifié à un SPAM)</p>';
     100                return $res;
     101            }
     102            if ($captcha == '') {
     103                $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'a pas été saisi</p>';
     104                return $res;
     105            }
     106            if ($type_captcha == 'copie' || $type_captcha == '') {
     107                $cps = "$cp0" . "$cp1" . "$cp2" . "$cp3";
     108                if ($captcha != $cps) {
     109                    $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     110                    return $res;
     111                }
     112            } elseif ($type_captcha == 'addition') {
     113                $cps = $cp1 + $cp3;
     114                if ($captcha != $cps) {
     115                    $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     116                    return $res;
     117                }
     118            } elseif ($type_captcha == 'multiplication') {
     119                $cps = $cp1 * $cp3;
     120                if ($captcha != $cps) {
     121                    $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
     122                    return $res;
     123                }
     124            } else {
     125                $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : pas de captcha connu</p>';
     126                return $res;
     127            }
     128        } else {
     129            require(__DIR__."/fbantispam/fb_recaptcha_lib.php");
     130            $recaptcha_response = _request("g-recaptcha-response");
     131            if ($recaptcha_response) {
     132                $test = fbantispam_recaptcha_verif($recaptcha_response, lire_config('fbantispam/cle_secrete'), $_SERVER["REMOTE_ADDR"]);
     133
     134
     135                if (!$test) {
     136                    $res['message_erreur'] = "<p style='background:#ffffaa;padding:4px'>ERREUR : le controle anti-spam n'a pas été validé</p>";
     137                    spip_log("ERREUR fbantispam : le controle anti-spam n'a pas été validé. POST=".print_r($_POST, 1), _LOG_ERREUR);
     138                    return $res;
     139                }
     140            } else {
     141                $res['message_erreur'] = "<p style='background:#ffffaa;padding:4px'>ERREUR : le code du controle anti-spam n'a pas été reçu</p>";
     142                spip_log("ERREUR fbantispam : le code du controle anti-spam n'a pas été reçu. POST=".print_r($_POST, 1), _LOG_ERREUR);
    111143                return $res;
    112144            }
    113145        }
    114         elseif ($type_captcha == 'addition')
    115         {
    116             $cps = $cp1 + $cp3;
    117             if ($captcha != $cps) {
    118                 $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
    119                 return $res;
    120             }
    121         }
    122         elseif ($type_captcha == 'multiplication')
    123         {
    124             $cps = $cp1 * $cp3;
    125             if ($captcha != $cps) {
    126                 $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : le code anti-spam n\'est pas correct</p>';
    127                 return $res;
    128             }
    129         }
    130         else
    131         {
    132             $res['message_erreur'] = '<p style="background:#ffffaa;padding:4px">ERREUR : pas de captcha connu</p>';
    133             return $res;
    134         }
    135        
    136146    }
    137147    return $flux;
     
    160170}
    161171
    162 ?>
  • _plugins_/fbantispam/paquet.xml

    r103720 r107178  
    22        prefix="fbantispam"
    33        categorie="performance"
    4         version="1.2.2"
     4        version="1.3.0"
    55        etat="test"
    6         compatibilite="[2.1.0;3.1.*]"
     6        compatibilite="[2.1.0;3.2.*]"
    77        logo="images/beos-stop-icone-8929-32.png"
    8         documentation="https://contrib.spip.net/CAPTCHA-pour-forums"
    9 >
     8        documentation="http://contrib.spip.net/CAPTCHA-pour-forums"
     9>       
    1010
    1111        <nom>FB Antispam</nom>
     
    1717        <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
    1818
    19         <necessite nom="saisies" compatibilite="[1.25.11;]" />
     19        <necessite nom="saisies" compatibilite="[1.25.11;]"></necessite>
    2020
    2121        <pipeline nom="pre_edition" inclure="fbantispam_pipelines.php" />
     
    2424        <pipeline nom="formulaire_verifier" inclure="fbantispam_pipelines.php" />
    2525        <pipeline nom="formulaire_traiter" inclure="fbantispam_pipelines.php" />
    26 
     26        <pipeline nom="insert_head" inclure="fbantispam_pipelines.php" />
     27       
    2728        <menu nom="fbantispam" titre="Configurer FB Antispam" parent="menu_configuration" icone="images/beos-stop-icone-8929-16.png" action="?exec=configurer_fbantispam" />
    2829</paquet>
  • _plugins_/fbantispam/plugin.xml

    r103720 r107178  
    66        <auteur>Fabio Bertagnin - FBServices www.fbservices.fr</auteur>
    77        <icon>images/beos-stop-icone-8929-32.png</icon>
    8         <licence>(c) 2013-2016 GPL</licence>
    9         <version>1.2.2</version>
     8        <licence>(c) 2013-2017 GPL</licence>
     9        <version>1.3.0</version>
    1010        <etat>test</etat>
    1111        <description>
     
    1313        La saisie n'est pas prise en compte si le captcha n'est pas correct.
    1414        </description>
    15         <lien>https://contrib.spip.net/CAPTCHA-pour-forums</lien>
     15        <lien>http://contrib.spip.net/CAPTCHA-pour-forums</lien>
    1616        <prefix>fbantispam</prefix>
    1717        <pipeline>
     
    3535                <inclure>fbantispam_pipelines.php</inclure>
    3636        </pipeline>
     37        <pipeline>
     38                <nom>insert_head</nom>
     39                <inclure>fbantispam_pipelines.php</inclure>
     40        </pipeline>
     41       
    3742        <categorie>performance</categorie>
    38         <necessite id="SPIP" version="[2.1.0;3.1.99]" />
     43        <necessite id="SPIP" version="[2.1.0;3.2.*]" />
    3944</plugin>
Note: See TracChangeset for help on using the changeset viewer.