Jump to content

Recommended Posts

Bonjour,

 

Le site de notre client se fait spamer à mort depuis deux jours et ce malgré un ajout de module recaptcha de google sur le formulaire de contact ! Voici le genre de message SAV : 潪愽荖琥鸡【 www.zb557.com 】電子特邀:50餸58 100鎹118 12水

Et voici l'adresse du site en question :  escapade-petillante-et-gourmande-en-champagne.com

La boutique est en 1.6.1.13, donc à jour pour cette branche... oui puis-je trouver la "faille" qui permet à ce robot de passer "par dessus" le formulaire !

 

Merci.

Edited by thomascp

Share this post


Link to post
Share on other sites

Il est probable que le botnet ne passe plus par le formulaire et/ou ait trouvé/déposé une porte dérobée.

Il va falloir passer du temps à déverminer, analyser les logs, etc

 

Est-tu absolument sûr que ce soit le formulaire qui serve d'origine?

Est-tu sur un mutu? un dédié?

PM moi éventuellement

Share this post


Link to post
Share on other sites

Lol

Votre captcha ne sert à rien^^

 

Vous avez dû recevoir un gentil message...

Edited by Eolia

Share this post


Link to post
Share on other sites

Merci,

 

@Eolia cela fait avancer mon problème, si vous n'avez quelque chose de plus constructif à dire, merci de vous abstenir.

 

@doekia je suis presque sur qu'effectivement il ne passe pas par le formulaire et je suis sur un dédié, j'essaye de trouver la piste dans les logs mais c'est pas simple !

Share this post


Link to post
Share on other sites

Ce que Eolia te dit, et c'est excessivement pertinent, c'est que tu as mis un captcha qui n'est simplement pas vérifié, donc c'est comme si tu n'avais rien mis.

Pense que les gens veulent t'aider et que donc leur remarques n'ont en aucune manière à être mal prise.

Poses toi dans ce cas la question, "pourquoi quelqu'un irait perdre son temps pour répondre cela!"

Share this post


Link to post
Share on other sites

Désolé 20 ans d'expérience sur le net m'ont appris que beaucoup de gens sont devenus maitre dans l'art de ne rien dire ;)

Sinon je ne sais toujours pas comment faire pour que mon captcha soit vérifié... étant donné que c'est un module que j'ai installé je pensez (bêtement) qu'il fonctionnait... Je l'ai testé et il m'a effectivement rejeté si je ne le coche pas !... Bref toujours au point mort, merci en tout cas de votre aide. D'autre part le test qu'eolia a réalisé ne sert pas à grand chose car qu'un humain puisse remplir le formulaire n'est pas anormal....

Edited by thomascp

Share this post


Link to post
Share on other sites

Avec 20 ans d'expérience, tu crois encore qu'il y a une armée de personnes qui cliquent pour envoyer du spam?

Ton module injecte sa nouvelle url, mais si j'ai un script qui utilise toujours l'ancienne url, ton captcha est ignoré (puisque non bloqué par prestashop).

Maintenant je comprends mieux pourquoi tu penses que les autres cultivent l'art de ne rien dire.... parler dans le vide s'est frustrant

Share this post


Link to post
Share on other sites

Il y en a surtout qui devraient avoir l'art de s'abstenir plutôt que de râler sans comprendre.

 

Je vous montre en 1 ligne comment soumettre un formulaire sans être géné par quoique ce soit. Si vous voulez le sécuriser contre le spam c'est au niveau de php qu'il faut intervenir.

 

Après, si un chinois vous en veut il y a surement une raison car le spam c'est en masse, ce n'est pas que vers un bo^^

Share this post


Link to post
Share on other sites

Désolé mais je ne comprends pas votre phrase, pourquoi parlez vous de backoffice ?

Share this post


Link to post
Share on other sites

Il arrivent où les messages de spam ?

 

Sur un prestashop classique, c'est dans le BO (et dans la messagerie du client s'il a les notifications vers sa boite mail)

Share this post


Link to post
Share on other sites

Oui ils arrivent dans le backoffice et par mail (sauf que dans le service postfix j'ai bloqué les mails).

Share this post


Link to post
Share on other sites

1/ De nombreux visiteurs vont tomber sur ce post, (ex: moi, vu que ça nous arrive aussi en ce moment sur certains de nos prestashops) et lire vos embrouilles à 2 balles c'est pas très "orienté solutions" ;-)

 

2/ Nous avons aussi utilisés plusieurs modules de captcha, mais qui sont validés uniquement en POST. Et comme démontré par @Eolia, le captcha n'est pas validé lorsque l'URL est appelée en GET.

 

3/ Cela vient t'il du module de captcha qui n'est pas bon ? où d'un problème core prestashop qui permet de submit un formulaire même en GET pour le module SAV ?

 

PS: @Eolia, peux tu supprimer le domaine du lien en GET que tu as mis car j'ai voulu cliqué pour prendre exemple, et du coup j'ai envoyé des SPAM et je pense que je ne serai pas le seul =)

 

Merci à vous.

Edited by sf_tristanb

Share this post


Link to post
Share on other sites

Bonjour, sf_tristanb bienvenu dans la conversation et si avez des pistes je suis preneur, j'ai creusé du coté de la function isEmail de la classe Validate pour ajouter un test maison mais sans succès pour l'instant.

Share this post


Link to post
Share on other sites

3/ Cela vient t'il du module de captcha qui n'est pas bon ? où d'un problème core prestashop qui permet de submit un formulaire même en GET pour le module SAV ?

 

Vous ne connaissez pas la fonction Prestashop Tools::getValue() ?

 

Que ce soit en POST ou en GET, elle récupère tout ce qui passe...

 

Maintenant pour vos soucis de "spam" c'est plutôt sur le nombre de soumission/sec qu'il faut jouer^^

Share this post


Link to post
Share on other sites

Il n'y a pas plus d'une par minute, mais je ne vois pas ni ou ni comment implémenter un test.

Share this post


Link to post
Share on other sites

Regardez du côté de contactController.php

Share this post


Link to post
Share on other sites

Il suffit de faire une rewriterule une fois votre captcha implanté pour bloquer l'usage de l'ancien url en get ou post.

Share this post


Link to post
Share on other sites

@doekia Vu que c'est un formulaire qui se soumet sur la même URL, bloquer cette URL en get reviendrait à ne plus pouvoir acceder à la page du formulaire.

 

GET -> /contactez-nous affiche le formulaire

GET -> /contactez-nous?xxxxx=xxx soumet le formulaire

 

IMO, soumettre un formulaire en appellant une URL en get est, par design, mauvais. Je ne sais pas pourquoi les devs du module SAV ont fait ça comme ça, et surtout, comment ça se fait que plus de personnes ne soient pas impactés. :-)

Edited by sf_tristanb

Share this post


Link to post
Share on other sites

Magnifique, noyé dans un verre d'eau

Le formulaire ne contient submitMessage=1 que si quelqu'un tente de soumettre et après l'install du captcha ce n'est plus possible.

CQFD

Share this post


Link to post
Share on other sites
après l'install du captcha ce n'est plus possible

 

 

 

Je pense que t'as du oublié de lire les messages qui faisaient mention qu'on utilise tous les deux des captcha 

Share this post


Link to post
Share on other sites

Après l'installation de ton captcha, le bouton submit est rerouté vers celui-ci (en post), donc personne ne peut utiliser /contactez-nous pour soumettre son message (avec submitMessage en paramètre), sauf un bot qui ne relit pas le formulaire !!!!

Pour tout l'univers connu, http://le-site-de-ton-pauvre-client/modules/eicaptcha/eicaptcha-ajax.php est différent de http://le-site-de-ton-pauvre-client/contactez-nous

 

Moi je lis les messages et j'essaie de comprendre... 

Share this post


Link to post
Share on other sites

Ce que vous dites m'intrigue car j'ai réussi de nombreuses fois à utiliser le formulaire sans être bloqué (en cliquant le captcha bien sur)... Je suis de plus en plus perdu....

Share this post


Link to post
Share on other sites

Bonjour,

 

Le site de notre client se fait spamer à mort depuis deux jours et ce malgré un ajout de module recaptcha de google sur le formulaire de contact ! Voici le genre de message SAV : 潪愽荖琥鸡【 www.zb557.com 】電子特邀:50餸58 100鎹118 12水

Et voici l'adresse du site en question :  escapade-petillante-et-gourmande-en-champagne.com

La boutique est en 1.6.1.13, donc à jour pour cette branche... oui puis-je trouver la "faille" qui permet à ce robot de passer "par dessus" le formulaire !

 

Merci.

 

Hello, 

Notre Boutique ce fait elle aussi spam mais j'ai peux etre une solution d'urgence... je vous fait un fichier contactController qui règlera temporairement le problème 

Je vous transmet ça des que c'est finie.

Pour info nos equipes SAV ont visiblement identifié une liste des sites contenue dans les messages ... 

Je vous la fournie au cas ou. 

(NE CLICQUEZ PAS DESSUS)

www.hubofa.com

www.lehu201.com

www.longhu90.com

www.sega113.com

www.zb557.com

Share this post


Link to post
Share on other sites

Merci beaucoup Thorfy, apparement depuis hier d'autres boutiques sont dans la même situation, un autre post est ouvert, cela ressemble de plus en plus à une faille à remonter !

Share this post


Link to post
Share on other sites

Fonctionnelle mais pas bien ... un override est à préconiser si on veut pas tout refaire à chaque fois.

 

Et je vois pas l'intérêt de charger le js sur toutes les pages.

Share this post


Link to post
Share on other sites

Fonctionnelle mais pas bien ... un override est à préconiser si on veut pas tout refaire à chaque fois.

 

Et je vois pas l'intérêt de charger le js sur toutes les pages.

 

+1 Précision importante effectivement !

Edited by thomascp

Share this post


Link to post
Share on other sites

En effet cette solution peut être fonctionnel.

Personnellement nous avons fait le choix de ne pas implémenter de captcha car nous nous adressons à un public de senior.

J'ai donc développé un module qui fonctionnera autrement. Je vous le transmet sous peu. 

Il est gratuit bien entendu.

(en revanche comme il s'agit d'un override automatique je doute qu'il soit compatible avec la solution proposé plus haut concernant la validation du captcha)

Share this post


Link to post
Share on other sites

Bonjour,

 

Le site de notre client se fait spamer à mort depuis deux jours et ce malgré un ajout de module recaptcha de google sur le formulaire de contact ! Voici le genre de message SAV : 潪愽荖琥鸡【 www.zb557.com 】電子特邀:50餸58 100鎹118 12水

Et voici l'adresse du site en question :  escapade-petillante-et-gourmande-en-champagne.com

La boutique est en 1.6.1.13, donc à jour pour cette branche... oui puis-je trouver la "faille" qui permet à ce robot de passer "par dessus" le formulaire !

 

Merci.

 

Voila donc mon module vous n'avez plus qu'à l'installer antispamcontact.zip

il est préconfiguré pour les attaques d'hier et aujourd'hui 

c'est un système de blackListing basique par des champs texte.

(il n'est pas compatible avec la solution proposé plus haut: c'est à dire qu'il faut choisir soit la solution soit le module. Vous pouvez toujours cela dit faire un merge et appliquer cette solution dans l'override du module si vous avez le module captcha)

un écran de configuration est dispo 

Désolé si le module n'est pas très design mais j'ai du le développer en urgence je le mettrai certainement à jour si vous le souhaitez

 

Voila en espérant que ça puisse aider certain

Edited by Thorfy
  • Like 2

Share this post


Link to post
Share on other sites

Merci beaucoup pour votre investissement ! Ca fait plaisir de voir des gens impliqués ;) ! Je marque votre post comme solution, cela servira aussi à d'autres qui ne manqueront pas de venir chercher de l'aide ici, je ne pense pas être le seul.

  • Like 1

Share this post


Link to post
Share on other sites

Bonjour Thorfy,

 

Comment installer ton module stp ?

bonjour,

 

Alors commençons des le debut,

Il vous faut la deuxieme version que je viens à l'instant d'upload.

Ensuite pour l'installation il faut :

 - Aller dans l'onglet module de votre backOffice

 -  puis en haut a droite "Ajouter un nouveau module"

 - choisissez le fichier fraichement téléchargé 

 - puis appuyer sur "charger le module"

le module va etre déposé sur votre serveur.

Il faut maintenant l'installer:

 - chercher antispamcontact dans les modules

 - appuyer sur installer

 - il vous demandera l'autorisation d'etre installé.

 - appuyez sur "Continuer l'installation"

 - c'est terminé

si vous souhaitez le configurer il suffit d'appuyer sur configurer ( mais il est déjà préconfiguré).

Edited by Thorfy

Share this post


Link to post
Share on other sites

comme je l'ai dis il s'agit d'une version developpé dans l'urgence l'interface n'est donc pas optimal... (vous pouvez par exemple ecrire 2 fois le meme texte.)

en revanche elle est fonctionnelle.

Je n'ai plus de problème de spam personnellement.

Je developperai bientot une version permettant de supprimer les messages SPAM de l'onglet SAV (c'est en cours)

Edited by Thorfy

Share this post


Link to post
Share on other sites

Bonjour Doekia,

 

Peux-tu stp nous en dire plus ?

Quel fichier modifier ?

Comment ? Via un override ?

 

Merci d'avance

Share this post


Link to post
Share on other sites

Comme indiqué dans le snippet, header.tpl,

Code à ajouter avant la balise </head>

Et recopier la section en commentaire ( {* ... *} ) comme indiqué dans le snippet dans l'index.php à la racine du site

 

Pour un thème non-standard il peut-être nécessaire d'ajuster le sélecteur à la ligne 5. Mais sur 90% des thèmes testé (14/15), le selecteur actuel fonctionne

Edited by doekia
  • Like 4

Share this post


Link to post
Share on other sites

c'est quand même dommage niveau opti de le mettre sur toutes les pages alors que ça concerne seulement le formulaire de contact non ?

En revanche c'est clairement plus viable que mon module sur le long terme.

Edited by Thorfy

Share this post


Link to post
Share on other sites

Oui et non.

 

1/ Le cache du header est le même partout donc au final très peu de surcharge, quand à la librairie captcha de google, elle est caché par le navigateur, donc elle aussi aura au final peu d'impact.

2/ Si tu le souhaites, il te suffit d'encadrer la section dans un {if $page_name = 'contact'} {/if}

3/ Si nous avons d'autres pages à protéger, il suffit d'étendre le sélecteur (ligne 5 du snippet)

 

J'ai fait le code dans une optique (béotien). Pour que l'on puisse le déployer/adapter avec vraiment très peu de compétences.

 

PS: je viens de survoler ton module. Ne te décourage pas, Il mérite sûrement d'aller de l'avant car il faut d'autre contrôles que ne fait pas la captcha de google

Edited by doekia
  • Like 1

Share this post


Link to post
Share on other sites

c'est quand même dommage niveau opti de le mettre sur toutes les pages alors que ça concerne seulement le formulaire de contact.

En revanche c'est certainement plus viable que mon module sur le long terme.

On parle de quoi là ? 5 lignes de js dans le header ?

 

Faudrait pas trop chipoter sur l'optimisation quand on voit certains modules qui chargent en mémoire whatmille data sur toutes les pages juste pour afficher 3 étoiles sur une page produit...

 

Doekia fournit gratuitement et clé en main une solution à la portée de tous et votre 1er commentaire commence par remettre en cause une certaine "optimisation".

Un "Merci" aurait été plus préférable^^

 

C'est à se demander s'il faut continuer à proposer des solutions sur ce forum...

  • Like 2

Share this post


Link to post
Share on other sites

On parle de quoi là ? 5 lignes de js dans le header ?

 

Faudrait pas trop chipoter sur l'optimisation quand on voit certains modules qui chargent en mémoire whatmille data sur toutes les pages juste pour afficher 3 étoiles sur une page produit...

 

Doekia fournit gratuitement et clé en main une solution à la portée de tous et votre 1er commentaire commence par remettre en cause une certaine "optimisation".

Un "Merci" aurait été plus préférable^^

 

C'est à se demander s'il faut continuer à proposer des solutions sur ce forum...

C'est dingue le ton méprisant que vous pouvez employer quand vous répondez aux messages (pour au final ne rien dire)

J'ai simplement demander à doekia son avis sur la question il m'as répondu de manière extrement clair et technique. Ça s'arrête là. (Je n'ai pas la science infuse je ne développe​ que depuis peut)

Pour ce qui est de "c'est à ce demander s'il faut continuer de proposer des solutions" il me semble que oui et même plutôt deux fois qu'une: j'aurais pu tout simplement donner un override du fichier et basta ... Mais voilà je me suis dis que certaines personnes peuvent être dans le même problème sans pour autant avoir jamais codé, j'ai donc investi de mon temps pour leur offrir une solution provisoire simple d'utilisation.

Donc merci mon cher où ma chère de bien réfléchir avant d'écrire des messages condescendant envers les autres.

  • Like 4

Share this post


Link to post
Share on other sites

C'est dingue le ton méprisant que vous pouvez employer quand vous répondez aux messages (pour au final ne rien dire)

J'ai simplement demander à doekia son avis sur la question il m'as répondu de manière extrement clair et technique. Ça s'arrête là. (Je n'ai pas la science infuse je ne développe​ que depuis peut)

Pour ce qui est de "c'est à ce demander s'il faut continuer de proposer des solutions" il me semble que oui et même plutôt deux fois qu'une: j'aurais pu tout simplement donner un override du fichier et basta ... Mais voilà je me suis dis que certaines personnes peuvent être dans le même problème sans pour autant avoir jamais codé, j'ai donc investi de mon temps pour leur offrir une solution provisoire simple d'utilisation.

Donc merci mon cher où ma chère de bien réfléchir avant d'écrire des messages condescendant envers les autres.

Salut Thorfy,

 

Merci pour ce module qui dépanne bien et est adapté à tous.

Je suis tout à fait de ton avis également concernant la récurrence des messages condescendant de certains (ou plutôt toujours les mêmes).

C'est vraiment plus que désagréable, il serait peut être temps que Prestashop fasse quelque chose.

Des formations sur le savoir vivre ?

ou bien

Comment se comporter en société quand on est un Geek mégalomane ?

 

Christophe

  • Like 2

Share this post


Link to post
Share on other sites

Ha ok je vois que je suis pas le seul à avoir se ressenti... j'ai eu peur d'être un peu un vieux c** ;) (40 ans déjà...)

Mais qu'importe le topic est solved et avec deux solutions qui plus est !

Que demander de plus.

  • Like 3

Share this post


Link to post
Share on other sites

Je n'ai pas ressenti d'agression dans le message de @Thorfy mais @Eolia oui. Et pour être honnête, j'aurais pu sans la mention à la dernière phrase. Je peux parfaitement comprendre son agacement. Il contribue massivement à l'entraide sur ce forum tout comme moi et nous somme régulièrement mis à l'index par des "membres" que je qualifierai de plus en plus de "parasite". Une multitude de nouveau arrivant avec un connaissance niveau mikado, qui n'ont aucun remerciement, et sont à mettre en doute les réponses que nous leurs fournissons.

 

Donc oui @Eolia s'est emporté et encore une fois je le comprend. Si vous ne connaissait pas @Eolia et son aide et compétences sur ce forum, alors désolé, vous devriez. Quand a demander à Prestashop de faire quelque chose. Corriger le code pour éviter que la faille se reproduise ailleurs ? Que nenni. Cette faille a été reporté depuis des années. Lettre morte. Faire bannir le verbe haut d'un membre ayant tellement fait depuis tant de temps - Il peuvent le faire, mais la communauté se portera t'elle mieux si elle se prive des seuls derniers vrais membres - j'en doute. Ce qu'@Eolia a dit peut-etre un peu fort c'est "remerciez ceux qui aident"

  • Like 3
  • Thanks 1

Share this post


Link to post
Share on other sites

J'ai installé le recaptcha de Google sur mon formulaire mais les spams continuent d'affluer. http://vaisongroupeb.com/nous-contacter

Peut être faut-il attendre que le script du hacker soit terminé ?

 

Log du vilain hacker chinois

121.58.209.251 - - [24/May/2017:15:10:26 +0200] "POST /nous-contacter HTTP/1.1" 200 22750 vaisongroupeb.com "http://vaisongroupeb.com/nous-contacter" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36" "-"

Share this post


Link to post
Share on other sites

Il est probable que nombre de post soient actuellement en "queue'.

Tu peux également mettre un "sniffer" pour ausculter le contenu du post est vérifier que la réponse est bien "erreur"

Dans l'implantation que j'ai faites, je fait une pause de 25 secondes pour ralentir/dégouter le bot avant de l'envoyer se faite "*****"

Share this post


Link to post
Share on other sites

Merci pour ta réponse !

C'était bien ça, il y avait trop de posts en queue. Tout est redevenu calme dans mon SAV \o/

 

Peux-tu m'en dire plus sur le "sniffer" ? Comment mettre en place un sniffer ? Si tu as un bon tuto sous la main :)

Share this post


Link to post
Share on other sites

heu...

un tuto? pour écrire une ligne de php ?

if ($_SERVER['REQUEST_METHOD'] == 'POST')
  file_put_contents(__DIR__.'/sniff.txt',print_r(array(time(),$_SERVER,$_GET,file_get_contents('p h p : / / input')),1),FILE_APPEND);
Edited by doekia

Share this post


Link to post
Share on other sites

Voici la liste mise à jour des sites à bannir dans les messages:

 

www.hubofa.com

www.lehu201.com

www.longhu90.com

www.sega113.com

www.zb557.com

sj5666.com

www.ZHOUJI6.COM

www.sega117.com

www.sega7.com

huyabo.com

www.new8882.com

sega09

xieyiceshi

Edited by Thorfy

Share this post


Link to post
Share on other sites

Voila donc mon module vous n'avez plus qu'à l'installer attachicon.gifantispamcontact.zip

il est préconfiguré pour les attaques d'hier et aujourd'hui 

c'est un système de blackListing basique par des champs texte.

(il n'est pas compatible avec la solution proposé plus haut: c'est à dire qu'il faut choisir soit la solution soit le module. Vous pouvez toujours cela dit faire un merge et appliquer cette solution dans l'override du module si vous avez le module captcha)

un écran de configuration est dispo 

Désolé si le module n'est pas très design mais j'ai du le développer en urgence je le mettrai certainement à jour si vous le souhaitez

 

Voila en espérant que ça puisse aider certain

 

Merci pour cette solution bonne journée

Edited by geo3469

Share this post


Link to post
Share on other sites

Mise à jour du module:

antispamcontact.zip v1.2

 

les filtre sont aussi actif sur les emails 

exemple: @qq.com exclu tout les messages provenant des mail contenant @qq.com

 

Share this post


Link to post
Share on other sites

Merci à tous pour vos solutions, j'ai un client qui vient d'avoir ce problème et vos commentaires m'ont bien aidé.

 

Ps : pour arrêter le pb du spam rapidement avant d'appliquer les correctifs mentionnés dans ce thread, vérifier vos logs serveur, récupérez l'adresse ip du spammeur et bloquez la via un Deny from adresseipici dans le htaccess.

 

Bonne journée!

Edited by jcuenin
  • Like 1

Share this post


Link to post
Share on other sites

Merci à tous pour vos solutions, j'ai un client qui vient d'avoir ce problème et vos commentaires m'ont bien aidé.

 

Ps : pour arrêter le pb du spam rapidement avant d'appliquer les correctifs mentionnés dans ce thread, vérifier vos logs serveur, récupérez l'adresse ip du spammeur et bloquez la via un Deny from adresseipici dans le htaccess.

 

Bonne journée!

le problème de cette methode:

c'est qu'en réalité vous bloquez non pas les bot chinois, mais les adresse ip des compagnies de mail

(gmail en chine l'équivalent c'est qq.com)

Donc plus aucun mail provenant de leur serveur n'aboutirons ou se connecterons sur votre boutique (selon la config que vous avez fait).

Personnelement nous travaillons en liens avec la chine.

Blacklisté les adresses nous a empéché de contacter certains clients ou entreprises qui était hébergés sur ces même serveurs.

(Si vous n'avais pas l'intention de travailler avec eux vous pouvez le faire les yeux fermé) 

 

PS: autant pour moi, je viens de voir que c'était votre solution en attendant l'application des differents patch ;)

Edited by Thorfy
  • Like 1

Share this post


Link to post
Share on other sites

Entre passer du temps à récupérer l'ip qui va être +/- celle d'un proxy, d'un infecté, ... entrer cette liste sans fin dans le .htaccess (attention aux syntaxes apache 2.4+) et appliquer un patch qui prends moins de temps à déployer et qui de toute manière devra l'être,j'opte pour la solution la plus efficace, patch direct.

Share this post


Link to post
Share on other sites
On 05/06/2017 at 12:12 PM, Thorfy said:

Mise à jour du module:

antispamcontact.zip v1.2

 

les filtre sont aussi actif sur les emails 

exemple: @qq.com exclu tout les messages provenant des mail contenant @qq.com

 

Bonjour,
J'ai installé ce module en indiquant *@qq.com a blaklister mais ça continue quand même.
Cordialement
GM

Share this post


Link to post
Share on other sites

Bonjour,

J'ai plusieurs questions avant de pouvoir vous répondre 

Avez vous mis l'étoile dans le filtre (si oui enlever la)

Avez vous bien enregistrée (on sait jamais)

En quel version de presta êtes vous 

Share this post


Link to post
Share on other sites

il y a a peut près 7000 domaines utilisé par l'attaque SPAM de ces dernier jours donc qq.com ne suffira pas

  • Like 1

Share this post


Link to post
Share on other sites

Exact c'est pourquoi je lui est recommandé la solution du captcha 

Mais bon pour les novices en développement c'est plus complexe

Share this post


Link to post
Share on other sites

Bonjour Thorfy,

Je tenais simplement à te remercier pour ton travail. En ce qui me concerne il m'a sauvé la mise sur le site de notre association.

Si ça peut servir, voici ma liste de blacklistage :

  • www.hubofa.com
  • www.lehu201.com
  • www.longhu90.com
  • www.sega113.com
  • www.zb557.com
  • sj5666.com
  • www.ZHOUJI6.COM
  • www.sega117.com
  • www.sega7.com
  • huyabo.com
  • www.new8882.com
  • sega0
  • xieyiceshi
  • www.zb778.com
  • www.60124.net
  • www.wns443.com
  • Doctor Goodenough
  • @qq.com
  • http://www.qukbao.com
  • www.qukbao.com
  • 2147178197
  • http://sbfa111.com/
  • Postmaster@163.com
  • http://www.sbfa111.com/

Bonne journée

 

Share this post


Link to post
Share on other sites

Bonjour a tous
Je rencontre actuellement me même problème de SPAM de QQ.com

Les liens pour le module proposer dans ce poste et qui semble résoudre le problème n'est plus téléchargable.

Est il possible de le proposer?

 

Merci

 

Share this post


Link to post
Share on other sites

Bonjour, 

Le premier lien n'est plus dispo en revanche le lien de la v1.2 est dispo sur ce même sujet 

Vous pouvez toujours me contacter si vous avez des difficultés dans le doute je remet les fichiers sur ce post

 

antispamcontact.zip

Edited by Thorfy
.zip + fix
  • Like 1

Share this post


Link to post
Share on other sites

il me semble que lors de l'install, l'initialisation de la variable de configuration ANTISPAMCONTACT_LIST est erronée.

      if (!Configuration::getGlobalValue('ANTISPAMCONTACT_LIST')) {
         $value = 'a:15:{i:0;s:15:"www.lehu201.com";i:1;s:16:"www.longhu90.com";i:2;s:13:"www.zb557.com";i:3;s:14:"www.hubofa.com";i:4;s:15:"www.sega113.com";i:5;s:8:"@166.com";i:6;s:8:"@163.com";i:7;s:7:"@qq.com";i:8;s:10:"huyabo.com";i:9;s:10:"xieyiceshi";i:10;s:13:"www.sega7.com";i:11;s:15:"www.new8882.com";i:12;s:15:"www.sega117.com";i:13;s:15:"www.ZHOUJI6.COM";i:14;s:10:"sj5666.com";}';
         if (!Configuration::updateGlobalValue('ANTISPAMCONTACT_LIST', serialize($value))) {
            return false;
         }
      }

Tu serializes un contenu déjà sérialisé

Share this post


Link to post
Share on other sites

Oui je l'ai vu ce matin au boulot, 

Je pense que PHP soit le laisser passer mais bon c'est pas très propre si jamais tu as des améliorations à y porter n'hésite pas

Share this post


Link to post
Share on other sites

Oui php le laisse passer mais lorsque tu vas désérialiser cela ne va le faire qu'au 1er niveau et les données seront inexploitables.

Donc soit tu ne sérialises pas, soit tu prépares un tableau et tu le sérialises :) 

if (!Configuration::getGlobalValue('ANTISPAMCONTACT_LIST')) {
         $value = 'a:15{i:0;s:15:"www.lehu201.com";i:1;s:16:"www.longhu90.com";i:2;s:13:"www.zb557.com";i:3;s:14:"www.hubofa.com";i:4;s:15:"www.sega113.com";i:5;s:8:"@166.com";i:6;s:8:"@163.com";i:7;s:7:"@qq.com";i:8;s:10:"huyabo.com";i:9;s:10:"xieyiceshi";i:10;s:13:"www.sega7.com";i:11;s:15:"www.new8882.com";i:12;s:15:"www.sega117.com";i:13;s:15:"www.ZHOUJI6.COM";i:14;s:10:"sj5666.com";}';
         if (!Configuration::updateGlobalValue('ANTISPAMCONTACT_LIST', $value)) {
            return false;
         }
      }

// Soit:

if (!Configuration::getGlobalValue('ANTISPAMCONTACT_LIST')) {
         $array = array("www.lehu201.com", "www.longhu90.com", "www.zb557.com", "www.hubofa.com","www.sega113.com", "@166.com", "@163.com", "@qq.com", "huyabo.com", "xieyiceshi", "www.sega7.com", "www.new8882.com", "www.sega117.com", "www.ZHOUJI6.COM", "sj5666.com");
         if (!Configuration::updateGlobalValue('ANTISPAMCONTACT_LIST', serialize($array))) {
            return false;
         }
      }

 

Share this post


Link to post
Share on other sites

Bonjour à tous, le site de ma mère est spammé par qq.com notamment avec près de 45000 messages !!!! Ma mère est en panique !

SVP comment faire pour 

1/ les supprimer du back-office

2/ faire en sorte que cela n'arrive plus.

Je tiens à signaler que je ne suis pas expert, mais si on m'explique je devrais y arriver !!!

 

Merci beaucoup pour votre aide

 

François

 

site web de ma mère : deshistoiresabroder.com

Share this post


Link to post
Share on other sites

Merci beaucoup Eolia pour cette réponse mais encore une fois je ne suis pas développer ! Je suis débutant, je bidouille mais c'est tout.

De ce que je comprends, je copie ce code et donc n'ai pas besoin d'acheter un module de captcha ?

Si oui, pouvez-vous me dire à quel endroit je dois copier ce code dans mon BO ?

Et dans un second temps, quand j'aurai donc un captcha installé, le BO pourra identifier les 40000 messages déjà reçus comme du spam et donc je pourrai les supprimer d'un coup ?

 

Merci beaucoup pour vos réponses et merci vraiment de prendre le temps de m'aider.

 

François

Share this post


Link to post
Share on other sites

Bonjour,

J'ai bien suivi le correctif de @doekia avec quelques difficultés :

- Dans le correctif : il faut changer le index.php et le contact-form.tpl, et dans 2 autres sujets du forum, c'est indiqué index.php et header.tpl .

Dans les deux cas, je n'ai pas réussi a faire fonctionner, je me suis rabattu sur le tuto : https://www.arnaud-merigeau.fr/add-recaptcha-to-prestashop/

Le Captcha à l'air fonctionnel depuis le formulaire de contact. et je ne recois plus une bardée de mail de sav

Le Hic : Mon sav se remplit toujours de 5 messages par seconde, et seulement lorsque la boutique est activée.

Y'a t il un cache pour ces messages ? si oui, comment le vider ?

Cordialement

et merci pour vos solutions précédentes.

Share this post


Link to post
Share on other sites

Bon les gars va quand même falloir apprendre à lire avant de poster des messages ! 

Comme l'as dit eolia, ça fait une semaine que l'on répond à ce genre de message.

En plus si tu remontes 8 post sur ce sujet tu as une solution clé en main 

Jveux pas être méchant mais on peut pas s'amuser pendant 1 mois redire les mêmes choses

 

Je le répète une dernière fois ....

La solution la plus viable et la plus propre est celle du captcha ,

En revanche si c'est trop complexe à mettre en place j'ai créer un module presta qui bloque par des filtrages que l'on configure soit même (via le menu config du module)

Remonter quelque posté il est dispo

  • Like 1

Share this post


Link to post
Share on other sites

Le module antispam est installé et la liste plus haut est renseignée.

J'ai un captcha fonctionnel sur mon formulaire, comme dit dans mon message.

et je ne reçois plus de mails, juste ma liste de SAV qui se remplit encore et encore et encore

 

Share this post


Link to post
Share on other sites

Non pour le BO, le captcha fonctionne en front office et empêche les nouveaux spams mais en aucun cas ne va "identifier" les spams déjà enregistrés.

Pour les supprimer, utilisez les filtres de recherche et supprimez-les à la main.Pour installer le re-captcha Google:

- Commencez par aller là et créez les clés pour votre domaine: https://www.google.com/recaptcha/admin

- Saisissez votre nom de domaine seul (pas de www ou http://, juste le domaine deshistoiresabroder.com)

- dans le fichier index.php, à la RACINE de votre site web, copiez ce code (remplacez l'existant) en mettant votre clé SECRETE à la place de XXXXXXX-the-secret-key-XXXXXXXXXX et en conservant les guillemets simples):

<?php
/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <contact@prestashop.com>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
if (isset($_REQUEST['submitMessage'])){
	if (empty($_REQUEST['g-recaptcha-response'])){
		sleep(25);
		die('not human');
	}
	$opts = array('http' =>
					array(
						'method'  => 'POST',
						'header'  => 'Content-type: application/x-www-form-urlencoded',
						'content' => http_build_query(
							array(
									'secret' => 'XXXXXXX-the-secret-key-XXXXXXXXXX',
									'response' => $_REQUEST['g-recaptcha-response'],
							)
						),
					),
	);
	$stream = stream_context_create($opts);
	$captcha = @json_decode(file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $stream), true);
	if (empty($captcha) || empty($captcha['success']) || !$captcha['success']){
		sleep(25);
		die('not human'.PHP_EOL.print_r($captcha,1));
	}
}
require(dirname(__FILE__).'/config/config.inc.php');
Dispatcher::getInstance()->dispatch();

Dans le contact-form.tpl vous copiez ce code en début de fichier après les commentaires s'il y en a, en mettant votre clé PUBLIQUE à la place de XXXXXXX-the-public-key-XXXXXXXXXX et en conservant les guillemets simples):

<script>
var googlecaptchasitekey = 'XXXXXXX-the-public-site-key-XXXXXXXXX'; /* TODO: tune this https://www.google.com/recaptcha/admin */
$(document).ready(function(){
	var $forms = $('form.contact-form-box');
	if ($forms.length > 0){
		var captcha = $('<div class="g-recaptcha" data-sitekey="'+ googlecaptchasitekey + '">');
		var $submit = $forms.find('#submitMessage');
		$submit.before(captcha);
		$submit.click(function(event){
			if ($forms.find('#g-recaptcha-response').val().length == 0) {
				event.preventDefault();
				event.stopPropagation();
				return false;
			}
		});
	}
});
</script>
<script src='https://www.google.com/recaptcha/api.js?hl={$language_code}'></script>

Vérifiez que votre formulaire <form> a bien la classe "contact-form-box" sinon ajoutez-là

Edited by Eolia

Share this post


Link to post
Share on other sites

j'ai choisi quand j'ai écrit le snippet de le mettre dans header.tpl pour le cas où le formulaire de message soit a un endroit inhabituel (thème custom)

normalement ce formulaire est seulement dans la page contact. Donc que vous choisissiez de modifier header.tpl ou contact-form.tpl le résultat est dans 95% des cas le même.

Il faut ensuite modifier le index.php à la racine du web (si vous oubliez, plus personne ne pourra envoyer de message)

 

Edited by doekia

Share this post


Link to post
Share on other sites

Bonjour,

Nous hébergeons plusieurs sites sur un serveur dédié et l'un d'entre eux a rencontré le même problème.
Nous avons pu bloquer les spams grâce à votre solution et nous en vous remercions.

Cependant, le flux de spams a créé un fort ralentissement de l'ensemble du serveur pendant la durée de l'attaque. Ce ralentissement apparaissait uniquement lorsque le captcha était utilisé pour bloquer les envois.
Dans les logs nous avons repéré le message suivant qui se répétait de nombreuses fois et qui semblait correspondre aux requêtes des robots spammeurs :

mod_fcgid: can't apply process slot for /var/www/cgi-bin/cgi_wrapper/cgi_wrapper, referer: http://www.le-site-attaque.fr/nous-contacter

Nous en avons discuté avec l'infogérant de notre serveur qui n'a pas trouvé de solution pérenne pour le moment.

Êtes vous au courant de ce type de comportement, si oui y a-t-il quelque chose à faire au niveau de prestashop?

En vous remerciant.

Share this post


Link to post
Share on other sites

Votre max_execution_time semble être inférieur au 30s de réglage par défaut.

Demandez à l'hébergeur quell est la limite et ajustez dans le code le sleep(25) à une valeur inférieure à celle de l'hébergement.

Vous pouvez également supprimer entièrement le sleep, dont est de ralentir le robot en face en le faisant attendre

 

Share this post


Link to post
Share on other sites

Merci pour votre réponse rapide.
Le max_execution_time est bien supérieur à 30s, donc j'imagine que ça ne vient pas de là.
L'attaque de spam étant terminée je ne peux pas vérifier les réglages en situation réelle.
Dans le doute, je vais réduire le sleep et surveiller le site de près.

Merci encore !
 

Share this post


Link to post
Share on other sites

Bonjour à tous,

Je rencontre un problème similaire à ceux évoqués et c'est pourquoi je me permets de relancer ce topic fort intéressant pour d'autres visiteurs à l'avenir.

En apportant des modifications au header.tpl et contact-form.tpl, celles-ci font crasher le site aux pages d'accueil du site et au formulaire de contact.
J'ai pu incrémenter le ReCAPTCHA Google mais à la lecture de la discussion, j'ai bien compris que son apparition ne suffit pas.

Encore faut-il le configurer et c'est donc ici que mes faibles connaissances en codage s'arrêtent.

Par ailleurs, un grand merci à @Thorfy pour ton module qui bloquent les SPAMs.
Je ne peux cependant recevoir d'autres message. Une erreur accompagnée de la formule "GET OUT BOT!!" apparaît même avec une adresse email valide.

Avez-vous des propositions/solutions depuis les derniers échanges ?

Merci beaucoup d'avance ! J'y suis depuis 48h et ce n'est pas évident ..

Share this post


Link to post
Share on other sites

Soit tu utilises le module de @Thorfy soit le snippet.

Si tu utilise le snippet, soit tu l'implemente dans le header.tpl, soit dans le contact-form.pl, il faut aussi la partie stipulée (entre les {* *}) dans ton index.php de la racine. Et bien sûr remplacer là clé publique dans le tpl et la clé privée dans l'index.php

 

GET OUT BOT me laisse penser que tu as utilisé le module, dans ce cas, revérifie simplement tes clés et la procédure liée au module.

Si le recaptcha apparait c'est que ta clé publique est conforme, il ne reste que la clé privé à vérifier

 

  • Like 1

Share this post


Link to post
Share on other sites

Sans réel succès malheureusement ...

Un petite modification des fichiers ci-dessous entraîne un down du site :

- index.php
- header.tpl
- contact-form.tpl

Share this post


Link to post
Share on other sites

down, c'est à dire ?

En mode debug quelle erreur apparait ?

Que dit le error.log du serveur ?

Share this post


Link to post
Share on other sites

 

Quote

 

  1. [Tue Feb 06 14:42:11.364525 2018] [:error] [pid 7164:tid 140427881592576] [client 160.124.155.29:60066] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  2. [Tue Feb 06 14:40:02.316755 2018] [:error] [pid 13390:tid 140427839629056] [client 160.124.155.31:60597] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  3. [Tue Feb 06 14:39:38.386128 2018] [:error] [pid 13390:tid 140427789272832] [client 160.124.155.29:59715] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  4. [Tue Feb 06 14:37:19.224277 2018] [:error] [pid 13390:tid 140427730523904] [client 160.124.155.31:60255] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  5. [Tue Feb 06 14:37:04.877925 2018] [:error] [pid 13390:tid 140427839629056] [client 160.124.155.29:59370] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous
  6. [Tue Feb 06 14:34:45.136461 2018] [:error] [pid 13266:tid 140427722131200] [client 160.124.155.31:59902] FastCGI: server "/home/clients/82b4f2b3306d530822df7119342e56e5/.config/apache/natech-sante.fr/.fpm/php5.external" stderr: PHP message: PHP Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15, referer: https://www.natech-sante.fr/contactez-nous


 

 

Voici les logs erreurs. J'imagine qu'il s'agit des tentatives de SPAMS toutes les 1 - 2 minutes.

J'ai une erreur 500 affichée (classique). J'active le debug mode et reviens rapidement.

Share this post


Link to post
Share on other sites

si tu as le message message get out bot même lorsque toi tu ecris un message c'est que tu as mal configuré les filtres. (il sont actif sur le contenu du message ET les mails)

Donc verifie bien que tu n'as pas des mots ou domaine trop générale dans tes filtres.

Share this post


Link to post
Share on other sites

Donc l'erreur est là:

/web/override/controllers/front/ContactController.php on line 15

Ce qui signifie que la variable utilisée pour la boucle foreach n'est pas un tableau. Quelle est cette variable et comment est-elle définie ?

Share this post


Link to post
Share on other sites

Bonjour Thorfy,

J'ai installé ton module 1.2 et il fonctionne très bien ainsi. Je n'ai donc pas touché à la configuration originelle que tu as programmé.

Share this post


Link to post
Share on other sites

Fatal error: Uncaught --> Smarty Compiler: Syntax error in template "/home/clients/82b4f2b3306d530822df7119342e56e5/web/themes/transformer/header.tpl" on line 47 "&lt;meta name="robots" content="{if isset($nobots)}no{/if}index,{if isset($nofollow) &amp;&amp; $nofollow}no{/if}follow" /&gt;" - Unexpected ";", expected one of: "}" <-- thrown in /home/clients/82b4f2b3306d530822df7119342e56e5/web/tools/smarty/sysplugins/smarty_internal_templatecompilerbase.php on line 47

 

Voici le code erreur affiché en appliquant le snippet

Share this post


Link to post
Share on other sites

Le snippet ne manipulant pas la section meta robots, l'erreur n'est pas dedans

Par contre quand tu as édité ton fichier tpl, tu l'as fait avec quel outil? rassures-moi pas word !

Share this post


Link to post
Share on other sites

En laissant les fichiers non modifiées, et en activant le module de Thorfy, voici les erreurs relevées du demo mode lorsque j'essaye de m'envoyer un message :
 

Quote

Warning: Invalid argument supplied for foreach() in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 15
Notice: Undefined variable: blackListTriggered in /home/clients/82b4f2b3306d530822df7119342e56e5/web/override/controllers/front/ContactController.php on line 37

 

Line 15 * DISCLAIMER
Line 36 :	public function postProcess()
Line 37 :	{
		if (Tools::isSubmit('submitMessage'))
		{
			$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
			$file_attachment = Tools::fileAttachment('fileUpload');
			$message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
			if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from))
				$this->errors[] = Tools::displayError('Invalid email address.');
			elseif (!$message)
				$this->errors[] = Tools::displayError('The message cannot be blank.');
			elseif (!Validate::isCleanHtml($message))
				$this->errors[] = Tools::displayError('Invalid message');
			elseif (!($id_contact = (int)Tools::getValue('id_contact')) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id))))
				$this->errors[] = Tools::displayError('Please select a subject from the list provided. ');
			elseif (!empty($file_attachment['name']) && $file_attachment['error'] != 0)
				$this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
			elseif (!empty($file_attachment['name']) && !in_array(Tools::strtolower(substr($file_attachment['name'], -4)), $extension) && !in_array(Tools::strtolower(substr($file_attachment['name'], -5)), $extension))
				$this->errors[] = Tools::displayError('Bad file extension');
			else
			{
				$customer = $this->context->customer;
				if (!$customer->id)
					$customer->getByEmail($from);

				$id_order = (int)$this->getOrder();

				if (!((
						($id_customer_thread = (int)Tools::getValue('id_customer_thread'))
						&& (int)Db::getInstance()->getValue('
						SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm
						WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND cm.id_shop = '.(int)$this->context->shop->id.' AND token = \''.pSQL(Tools::getValue('token')).'\'')
					) || (
						$id_customer_thread = CustomerThread::getIdCustomerThreadByEmailAndIdOrder($from, $id_order)
					)))
				{
					$fields = Db::getInstance()->executeS('
					SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email
					FROM '._DB_PREFIX_.'customer_thread cm
					WHERE email = \''.pSQL($from).'\' AND cm.id_shop = '.(int)$this->context->shop->id.' AND ('.
						($customer->id ? 'id_customer = '.(int)$customer->id.' OR ' : '').'
						id_order = '.(int)$id_order.')');
					$score = 0;
					foreach ($fields as $key => $row)
					{
						$tmp = 0;
						if ((int)$row['id_customer'] && $row['id_customer'] != $customer->id && $row['email'] != $from)
							continue;
						if ($row['id_order'] != 0 && $id_order != $row['id_order'])
							continue;
						if ($row['email'] == $from)
							$tmp += 4;
						if ($row['id_contact'] == $id_contact)
							$tmp++;
						if (Tools::getValue('id_product') != 0 && $row['id_product'] == Tools::getValue('id_product'))
							$tmp += 2;
						if ($tmp >= 5 && $tmp >= $score)
						{
							$score = $tmp;
							$id_customer_thread = $row['id_customer_thread'];
						}
					}
				}
				$old_message = Db::getInstance()->getValue('
					SELECT cm.message FROM '._DB_PREFIX_.'customer_message cm
					LEFT JOIN '._DB_PREFIX_.'customer_thread cc on (cm.id_customer_thread = cc.id_customer_thread)
					WHERE cc.id_customer_thread = '.(int)$id_customer_thread.' AND cc.id_shop = '.(int)$this->context->shop->id.'
					ORDER BY cm.date_add DESC');
				if ($old_message == $message)
				{
					$this->context->smarty->assign('alreadySent', 1);
					$contact->email = '';
					$contact->customer_service = 0;
				}

				if ($contact->customer_service)
				{
					if ((int)$id_customer_thread)
					{
						$ct = new CustomerThread($id_customer_thread);
						$ct->status = 'open';
						$ct->id_lang = (int)$this->context->language->id;
						$ct->id_contact = (int)$id_contact;
						$ct->id_order = (int)$id_order;
						if ($id_product = (int)Tools::getValue('id_product'))
							$ct->id_product = $id_product;
						$ct->update();
					}
					else
					{
						$ct = new CustomerThread();
						if (isset($customer->id))
							$ct->id_customer = (int)$customer->id;
						$ct->id_shop = (int)$this->context->shop->id;
						$ct->id_order = (int)$id_order;
						if ($id_product = (int)Tools::getValue('id_product'))
							$ct->id_product = $id_product;
						$ct->id_contact = (int)$id_contact;
						$ct->id_lang = (int)$this->context->language->id;
						$ct->email = $from;
						$ct->status = 'open';
						$ct->token = Tools::passwdGen(12);
						$ct->add();
					}

					if ($ct->id)
					{
						$cm = new CustomerMessage();
						$cm->id_customer_thread = $ct->id;
						$cm->message = $message;
						if (isset($file_attachment['rename']) && !empty($file_attachment['rename']) && rename($file_attachment['tmp_name'], _PS_UPLOAD_DIR_.basename($file_attachment['rename'])))
						{
							$cm->file_name = $file_attachment['rename'];
							@chmod(_PS_UPLOAD_DIR_.basename($file_attachment['rename']), 0664);
						}
						$cm->ip_address = (int)ip2long(Tools::getRemoteAddr());
						$cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
						if (!$cm->add())
							$this->errors[] = Tools::displayError('An error occurred while sending the message.');
					}
					else
						$this->errors[] = Tools::displayError('An error occurred while sending the message.');
				}

				if (!count($this->errors))
				{
					$var_list = array(
									'{order_name}' => '-',
									'{attached_file}' => '-',
									'{message}' => Tools::nl2br(stripslashes($message)),
									'{email}' =>  $from,
									'{product_name}' => '',
								);

					if (isset($file_attachment['name']))
						$var_list['{attached_file}'] = $file_attachment['name'];

					$id_product = (int)Tools::getValue('id_product');

					if (isset($ct) && Validate::isLoadedObject($ct) && $ct->id_order)
					{
						$order = new Order((int)$ct->id_order);
						$var_list['{order_name}'] = $order->getUniqReference();
						$var_list['{id_order}'] = (int)$order->id;
					}

					if ($id_product)
					{
						$product = new Product((int)$id_product);
						if (Validate::isLoadedObject($product) && isset($product->name[Context::getContext()->language->id]))
							$var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
					}

					if (empty($contact->email))
						Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $file_attachment);
					else
					{
						if (!Mail::Send($this->context->language->id, 'contact', Mail::l('Message from contact form').' [no_sync]',
							$var_list, $contact->email, $contact->name, $from, ($customer->id ? $customer->firstname.' '.$customer->lastname : ''),
									$file_attachment) ||
								!Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, $contact->email, $contact->name, $file_attachment))
									$this->errors[] = Tools::displayError('An error occurred while sending the message.');
					}
				}

				if (count($this->errors) > 1)
					array_unique($this->errors);
				elseif (!count($this->errors))
					$this->context->smarty->assign('confirmation', 1);
			}
		}
	}

 

Share this post


Link to post
Share on other sites

Je n'ai pas DreamWeaver à porter de mon poste de travail.
J'utilise pour dépanner le logiciel BlueGriffon

Share this post


Link to post
Share on other sites