Changeset 60431 in spip-zone for _plugins_/antispam-recaptcha


Ignore:
Timestamp:
Apr 16, 2012, 10:34:09 PM (7 years ago)
Author:
gilles.vincent@…
Message:

Mise a jour de l'antispam base sur reCaptcha

Location:
_plugins_/antispam-recaptcha
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/antispam-recaptcha/fonctions_recaptcha.php

    r13711 r60431  
    99if (!defined("_ECRIRE_INC_VERSION")) return;
    1010
    11 // http://recaptcha.googlecode.com/files/recaptcha-php-1.8.zip
     11// http://recaptcha.googlecode.com/files/recaptcha-php-1.11.zip
    1212function get_recaptcha_keys($force = false) {
    1313        if ($force
     
    1818                include_spip('inc/distant');
    1919                include_spip('inc/texte');
    20                 $u = textebrut(recuperer_page('http://mailhide.recaptcha.net/apikey'));
    21                 if(!preg_match(',Public Key:(.*),i', $u, $r1)
    22                 OR !preg_match(',Private Key:(.*),i', $u, $r2)) {
     20                include_spip('inc/filtres');
     21                $u = translitteration(textebrut(recuperer_page('http://www.google.com/recaptcha/mailhide/apikey')));
     22                if(!preg_match(',Cl([^p]+)publique:(.*),i', $u, $r1) // La page retourne des accents qui (pour l'instant) sont errones, donc ne passent pas la translitteration
     23                OR !preg_match(',Cl([^p]+)prive:(.*),i', $u, $r2)) {
    2324                        spip_log('erreur recaptcha n\'a pas donne de cle : '.$u);
    2425                        return false;
     
    2627
    2728                $keys = array(
    28                         'public' => trim($r1[1]),
    29                         'private' => trim($r2[1])
     29                        'public' => trim($r1[2]),
     30                        'private' => trim($r2[2])
    3031                );
     32               
    3133                ecrire_meta('recaptcha_keys', serialize($keys));
    3234                ecrire_metas();
    33         }
    34 
     35        } 
     36       
    3537        return $keys;
    3638}
  • _plugins_/antispam-recaptcha/plugin.xml

    r52717 r60431  
    22        <nom>Antispam reCAPTCHA</nom>
    33        <auteur>Fil</auteur>
    4         <version>0.1.0</version>
     4        <version>0.2.0</version>
    55        <etat>dev</etat>
    66        <slogan>Filtre antispam pour vos emails</slogan>
     
    88Ce plugin fournit un filtre <code>|antispam</code> (fonction <code>filtre_antispam()</code>) pour prot&#233;ger les emails avec un test de reCAPTCHA. A sa premi&#232;re utilisation, le plugin va chercher tout seul une cl&#233; d'activation sur le site de reCAPTCHA.
    99
    10 Le principal d&#233;faut de ce service est qu'il n'est disponible qu'en anglais seulement pour le moment.
     10Le principal d&#233;faut de ce service est qu'on ne peut pas d&#233;finir la langue comme on le souhaite
    1111        </description>
    1212        <lien>http://www.spip-contrib.net/reCAPTCHA</lien>
     
    1818        <chemin dir='' />
    1919        <categorie>performance</categorie>
    20         <necessite id="SPIP" version="[1.9.2;1.9.2]" />
     20        <necessite id="SPIP" version="[1.9.2;2.1.99]" />
    2121</plugin>
  • _plugins_/antispam-recaptcha/recaptchalib.php

    r13831 r60431  
    55 *          http://recaptcha.net/plugins/php/
    66 *    - Get a reCAPTCHA API Key
    7  *          http://recaptcha.net/api/getkey
     7 *          https://www.google.com/recaptcha/admin/create
    88 *    - Discussion group
    99 *          http://groups.google.com/group/recaptcha
     
    3636 * The reCAPTCHA server URL's
    3737 */
    38 $recaptcha_api_server = 'http://api.recaptcha.net';
    39 $recaptcha_api_secure_server = 'https://api-secure.recaptcha.net';
    40 $recaptcha_verify_server = 'api-verify.recaptcha.net';
    41 
     38define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
     39define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
     40define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
    4241
    4342/**
     
    107106function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
    108107{
    109         global $recaptcha_api_server, $recaptcha_api_secure_server;
    110 
    111108        if ($pubkey == null || $pubkey == '') {
    112                 die ("To use reCAPTCHA you must get an API key from <a href='http://recaptcha.net/api/getkey'>http://recaptcha.net/api/getkey</a>");
     109                die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
    113110        }
    114111       
    115112        if ($use_ssl) {
    116            $server = $recaptcha_api_secure_server;
     113                $server = RECAPTCHA_API_SECURE_SERVER;
    117114        } else {
    118            $server = $recaptcha_api_server;
    119         }
     115                $server = RECAPTCHA_API_SERVER;
     116        }
     117
    120118        $errorpart = "";
    121119        if ($error) {
     
    125123
    126124        <noscript>
    127                 <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br>
     125                <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
    128126                <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
    129                 <input type="hidden" name="recaptcha_response_field" value="manual_challenge">
     127                <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
    130128        </noscript>';
    131129}
     
    149147  * @param string $challenge
    150148  * @param string $response
     149  * @param array $extra_params an array of extra variables to post to the server
    151150  * @return ReCaptchaResponse
    152151  */
    153 function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response)
     152function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
    154153{
    155154        if ($privkey == null || $privkey == '') {
    156                 die ("To use reCAPTCHA you must get an API key from <a href='http://recaptcha.net/api/getkey'>http://recaptcha.net/api/getkey</a>");
     155                die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
    157156        }
    158157
     
    171170        }
    172171
    173         global $recaptcha_verify_server;
    174         $response = _recaptcha_http_post ($recaptcha_verify_server, "/verify",
     172        $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
    175173                                          array (
    176174                                                 'privatekey' => $privkey,
     
    178176                                                 'challenge' => $challenge,
    179177                                                 'response' => $response
    180                                                  )
     178                                                 ) + $extra_params
    181179                                          );
    182180
     
    203201 */
    204202function recaptcha_get_signup_url ($domain = null, $appname = null) {
    205         return "http://recaptcha.net/api/getkey?" .  _recaptcha_qsencode (array ('domain' => $domain, 'app' => $appname));
    206 }
    207 
    208 
     203        return "https://www.google.com/recaptcha/admin/create?" .  _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
     204}
     205
     206function _recaptcha_aes_pad($val) {
     207        $block_size = 16;
     208        $numpad = $block_size - (strlen ($val) % $block_size);
     209        return str_pad($val, strlen ($val) + $numpad, chr($numpad));
     210}
    209211
    210212/* Mailhide related code */
     
    216218        $mode=MCRYPT_MODE_CBC;   
    217219        $enc=MCRYPT_RIJNDAEL_128;
    218         $val=str_pad($val, (16*(floor(strlen($val) / 16)+(strlen($val) % 16==0?2:1))), chr(16-(strlen($val) % 16)));
     220        $val=_recaptcha_aes_pad($val);
    219221        return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
    220222}
     
    229231        if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
    230232                die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
    231                      "you can do so at <a href='http://mailhide.recaptcha.net/apikey'>http://mailhide.recaptcha.net/apikey</a>");
     233                     "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
    232234        }
    233235       
     
    236238        $cryptmail = _recaptcha_aes_encrypt ($email, $ky);
    237239       
    238         return "http://mailhide.recaptcha.net/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
     240        return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
    239241}
    240242
     
    261263 * to get a key, go to:
    262264 *
    263  * http://mailhide.recaptcha.net/apikey
     265 * http://www.google.com/recaptcha/mailhide/apikey
    264266 */
    265267function recaptcha_mailhide_html($pubkey, $privkey, $email) {
     
    268270       
    269271        return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
    270                 "' onclick=\"window.open(this.href, '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
     272                "' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
    271273
    272274}
Note: See TracChangeset for help on using the changeset viewer.