Changeset 70410 in spip-zone


Ignore:
Timestamp:
Mar 5, 2013, 10:00:19 AM (6 years ago)
Author:
cedric@…
Message:

Certains webmails font un hit sur les liens internes des mails pour detecter les SPAMS :
Imposer une action manuelle sur un bouton sur l'url de desinscription pour éviter que le bot ne désinscrive automatiquement en scannant le lien contenu dans la Newsletter (la desinscription génère ensuite un mail avec un lien pour se réinscrire et sans cela le bot peut faire tourner en boucle infinie inscription/desinscription sinon - cyaltern)

Location:
_plugins_/mailsubscribers/trunk
Files:
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • _plugins_/mailsubscribers/trunk/action/confirm_unsubscribe_mailsubscriber.php

    r69588 r70410  
    1515 * @param string $email
    1616 */
    17 function action_confirm_mailsubscriber_dist($email=null){
     17function action_confirm_unsubscribe_mailsubscriber_dist($email=null){
    1818        include_spip('mailsubscribers_fonctions');
    1919        if (is_null($email)){
    20                 $email = _request('email');
    21                 $arg = _request('arg');
     20                $securiser_action = charger_fonction("securiser_action","inc");
     21                $email = $securiser_action();
     22                $email = explode("-",$email);
     23                $arg = array_pop($email);
     24                $email = implode("-",$email);
     25
    2226                $row = sql_fetsel('id_mailsubscriber,email,jeton,lang,statut','spip_mailsubscribers','email='.sql_quote($email));
    2327                if (!$row
    24                         OR $arg!==mailsubscriber_cle_action("confirm",$row['email'],$row['jeton'])){
     28                        OR $arg!==mailsubscriber_cle_action("unsubscribe",$row['email'],$row['jeton'])){
    2529                        $row = false;
    2630                }
    2731        }
    28         else {
    29                 $row = sql_fetsel('id_mailsubscriber,email,jeton,statut','spip_mailsubscribers','email='.sql_quote($email));
    30         }
     32
    3133        if (!$row){
    3234                include_spip('inc/minipres');
     
    3638
    3739        // il suffit de rejouer subscribe en forcant le simple-optin
    38         $subscribe_mailsubscriber = charger_fonction("subscribe_mailsubscriber","action");
    39         $subscribe_mailsubscriber($email,false);
    40 
     40        $unsubscribe_mailsubscriber = charger_fonction("unsubscribe_mailsubscriber","action");
     41        $unsubscribe_mailsubscriber ($email,false);
    4142}
  • _plugins_/mailsubscribers/trunk/action/unsubscribe_mailsubscriber.php

    r69533 r70410  
    1414 * @param string $email
    1515 */
    16 function action_unsubscribe_mailsubscriber_dist($email=null){
     16function action_unsubscribe_mailsubscriber_dist($email=null, $double_optin=true){
    1717        include_spip('mailsubscribers_fonctions');
    1818        if (is_null($email)){
     
    2626        }
    2727        else {
     28                $double_optin = false;
    2829                $row = sql_fetsel('id_mailsubscriber,email,jeton,statut','spip_mailsubscribers','email='.sql_quote($email));
    2930        }
     
    3738        changer_langue($row['lang']);
    3839        include_spip("inc/autoriser");
    39         autoriser_exception("modifier","mailsubscriber",$row['id_mailsubscriber']);
    40         autoriser_exception("instituer","mailsubscriber",$row['id_mailsubscriber']);
    4140
    42         if ($row['statut']=='valide'){
    43                 // OK l'email est connu et valide
    44                 include_spip("action/editer_objet");
    45                 objet_modifier("mailsubscriber",$row['id_mailsubscriber'],array('statut'=>'refuse'));
    46                 $titre = _T('mailsubscriber:unsubscribe_texte_email_1',array('email'=>$row['email']));
     41        if (!$row['statut']=='valide'){
     42                $titre = _T('mailsubscriber:unsubscribe_deja_texte',array('email'=>$row['email']));
    4743        }
    4844        else {
    49                 $titre = _T('mailsubscriber:unsubscribe_deja_texte',array('email'=>$row['email']));
     45                if ($double_optin){
     46                        include_spip("inc/filtres");
     47                        $titre = _T('mailsubscriber:unsubscribe_texte_confirmer_email_1',array('email'=>$row['email']));
     48                        $titre .= "<br /><br />".bouton_action(_T('newsletter:bouton_unsubscribe'),generer_action_auteur('confirm_unsubscribe_mailsubscriber',"$email-$arg"));
     49                }
     50                else {
     51                        autoriser_exception("modifier","mailsubscriber",$row['id_mailsubscriber']);
     52                        autoriser_exception("instituer","mailsubscriber",$row['id_mailsubscriber']);
     53                        // OK l'email est connu et valide
     54                        include_spip("action/editer_objet");
     55                        objet_modifier("mailsubscriber",$row['id_mailsubscriber'],array('statut'=>'refuse'));
     56                        $titre = _T('mailsubscriber:unsubscribe_texte_email_1',array('email'=>$row['email']));
     57                        autoriser_exception("modifier","mailsubscriber",$row['id_mailsubscriber'],false);
     58                        autoriser_exception("instituer","mailsubscriber",$row['id_mailsubscriber'],false);
     59                }
    5060        }
    51         autoriser_exception("modifier","mailsubscriber",$row['id_mailsubscriber'],false);
    52         autoriser_exception("instituer","mailsubscriber",$row['id_mailsubscriber'],false);
    53 
    5461
    5562        // Dans tous les cas on finit sur un minipres qui dit si ok ou echec
  • _plugins_/mailsubscribers/trunk/lang/mailsubscriber_fr.php

    r68844 r70410  
    6969        'unsubscribe_sujet_email' => '[@nom_site_spip@] Désinscription de la Newsletter',
    7070        'unsubscribe_titre_email' => 'Désinscription de la Newsletter',
     71        'unsubscribe_texte_confirmer_email_1' => 'Veuillez confirmer la désincription de l\'adresse email @email@ en cliquant sur le bouton : ',
    7172        'unsubscribe_texte_email_1' => 'L\'adresse email @email@ a bien été retiré de notre liste de diffusion.',
    7273        'unsubscribe_deja_texte' => 'L\'adresse email @email@ n\'est pas dans notre liste de diffusion.',
  • _plugins_/mailsubscribers/trunk/paquet.xml

    r69691 r70410  
    22        prefix="mailsubscribers"
    33        categorie="communication"
    4         version="1.2.1"
     4        version="1.2.2"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.0.*]"
Note: See TracChangeset for help on using the changeset viewer.