From b7547c3be18fe564cf3e06f2a589c7cc1d78ec33 Mon Sep 17 00:00:00 2001 From: Greg Burri Date: Sat, 7 Jun 2008 01:15:15 +0000 Subject: [PATCH] =?utf8?q?MOD=20on=20ne=20peut=20plus=20avec=20le=20nick?= =?utf8?q?=20par=20d=C3=A9faut=20:=20=20MOD=20euphorik=5Ftest=20est?= =?utf8?q?=20moins=20gourmand=20lors=20du=20post=20d'un=20message?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/TODO.txt | 37 +++------------------- js/euphorik.js | 1 + js/pageMinichat.js | 8 ++++- modules/erl/euphorik_bd.erl | 59 ++++++++++++++++++----------------- modules/erl/euphorik_test.erl | 18 ++++++----- 5 files changed, 53 insertions(+), 70 deletions(-) diff --git a/doc/TODO.txt b/doc/TODO.txt index cebd646..606b209 100755 --- a/doc/TODO.txt +++ b/doc/TODO.txt @@ -1,31 +1,5 @@ == TODO == -=== v1.0.1 === -* Pouvoir afficher les utilisateurs (print_users(admin)) qui sont admin -<<<<<<< .working -* Mettre dans la FAQ la signification des couleurs associées aux messages. -* Ne pas pouvoir poster avec "" -* Ajouter euphorik_common.erl au repo !! -* Compilation : - * Compiler avec le flag +debug_info pour le developpement - * Compiler avec le flag +native lors de la mise en production - * Faire d'abord des tests en local pour voir s'il y a vraiment des gains, utiliser le module test_euphorik - * Regarder également si la comsommation de la mémoire est différentes - * La compilation DOIT se faire sur la machine cible, il faut donc d'abord copier les fichiers dans /tmp sur euphorik.ch - puis lancer la compilation à distance et finalement copier les fichiers sur /var/www/euphorik -* Appliquer les flags suivant à Yaws : http://forum.trapexit.org/mailinglists/viewtopic.php?t=6725&sid=8729e02f79c3ef0e0794add77b74b6ce -======= -* Ne pas pouvoir poster avec "" -> mettre en constante -* Ajouter euphorik_common.erl au repo !! -* Compilation : - * Compiler avec le flag +debug_info pour le developpement - * Compiler avec le flag +native lors de la mise en production - * Faire d'abord des tests en local pour voir s'il y a vraiment des gains, utiliser le module test_euphorik - * Regarder également si la comsommation de la mémoire est différentes - * La compilation DOIT se faire sur la machine cible, il faut donc d'abord copier les fichiers dans /tmp sur euphorik.ch - puis lancer la compilation à distance et finalement copier les fichiers sur /var/www/euphorik -* Appliquer les flags suivant à Yaws : http://forum.trapexit.org/mailinglists/viewtopic.php?t=6725&sid=8729e02f79c3ef0e0794add77b74b6ce ->>>>>>> .merge-right.r271 === v1.1 === * Revoir le système de conversation : * Pouvoir extraire "toute la conversation" ou seulement une "sous conversation" (ce qui est actuellement le cas) @@ -213,7 +187,8 @@ [ok] Afficher l'ip dans le print_users(). [ok] Enlever le petit carré mis en couleur et mettre le pseudo + date en couleur à la place [ok] Mettre dans la FAQ la signification des couleurs associées aux messages. - +=== v1.0.1 === +[ok] Ne pas pouvoir poster avec "" === Bugs === 1 : Critique @@ -292,17 +267,13 @@ * Jamais reproduit avec Opera * Peut être un bug lié à jQuery * Reproduit sur Firefox 2 et 3 ! -[ok] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple) -<<<<<<< .working -[ok] Après être passé de la page Admin à Chat le client continu de réaliser de temps en temp des requêtes "lists_banned_ips" - * action=%7B%22action%22%3A%22list_banned_ips%22%2C%22cookie%22%3A%22<>%22%7D -======= +[ok] Lors d'un logout il faut faire un full refresh (pour mettre à jour les messages auquel on répond par exemple) [ok] Après être passé de la page Admin à Chat le client continu de réaliser de temps en temp des requêtes "lists_banned_ips" * action=%7B%22action%22%3A%22list_banned_ips%22%2C%22cookie%22%3A%22<>%22%7D [ok] Le widget select qui permet la sélection des css n'est pas initialisé correctement au chargement du site [ok] Il est possible d'envoyer plusieurs fois le même message en pressant très rapidement plusieurs fois sur ENTER... (à vérifier) [ok] griser le login dans le profil pour montrer qu'on ne peut pas l'éditer ->>>>>>> .merge-right.r271 + === Idées === Une fois l'idée validée elle est déplacée dans une version à venir. diff --git a/js/euphorik.js b/js/euphorik.js index e564583..b2024ad 100755 --- a/js/euphorik.js +++ b/js/euphorik.js @@ -29,6 +29,7 @@ * Normalement 'const' à la place de 'var' mais non supporté par IE7. */ var conf = { + nickDefaut : "", nbMessageAffiche : 40, // (par page) pseudoDefaut : "", tempsAffichageMessageDialogue : 4000, // en ms diff --git a/js/pageMinichat.js b/js/pageMinichat.js index da53627..50c6c21 100755 --- a/js/pageMinichat.js +++ b/js/pageMinichat.js @@ -39,7 +39,7 @@ PageMinichat.prototype.contenu = function()
\

\ \ - \ + \ \ \ \ @@ -193,6 +193,12 @@ PageMinichat.prototype.envoyerMessage = function(pseudo, message) message = message.replace(this.regexMessageTagReplace, "") } + if (pseudo == conf.nickDefaut) + { + this.util.messageDialogue("Le pseudo ne peut pas être " + conf.nickDefaut) + return + } + message = message.trim() if (message == "") { diff --git a/modules/erl/euphorik_bd.erl b/modules/erl/euphorik_bd.erl index b72d7a8..6dff985 100755 --- a/modules/erl/euphorik_bd.erl +++ b/modules/erl/euphorik_bd.erl @@ -460,33 +460,34 @@ nouveau_message(Mess, Auteur_id, Repond_A) -> F = fun() -> Nb_id_trouve = length(e(q([E#minichat.id || E <- mnesia:table(minichat), lists:member(E#minichat.id, Repond_A)]), [{tmpdir, ?KEY_SORT_TEMP_DIR}])), % est-ce que l'auteur existe ? - Auteur = case e(q([E || E <- mnesia:table(user), E#user.id =:= Auteur_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of - [A] -> A; - _ -> {erreur, "L'auteur du message est introuvable"} - end, - if Nb_id_trouve =/= length(Repond_A) -> - {erreur, "Un ou plusieurs messages introuvable"}; - true -> - % comparaison entre la date du dernier poste et maintenant (gestion du flood) - Delta = delta_date_ms(Auteur#user.date_derniere_connexion, now()), - Nouvel_indice_flood = Auteur#user.indice_flood + if Delta =< ?DUREE_SPAM -> 2; true -> -1 end, - Auteur_maj = Auteur#user{ - indice_flood = if Nouvel_indice_flood > ?INDICE_SPAM_MAX -> ?INDICE_SPAM_MAX; Nouvel_indice_flood < 0 -> 0; true -> Nouvel_indice_flood end, - date_derniere_connexion = now() - }, - % est-ce que l'auteur à trop floodé ? - if Auteur#user.indice_flood =/= ?INDICE_SPAM_MAX, Auteur_maj#user.indice_flood =:= ?INDICE_SPAM_MAX, Delta =< ?DUREE_BLOCAGE_SPAM -> - mnesia:write(Auteur#user{indice_flood = Auteur_maj#user.indice_flood}), - nouveau_message_sys("''" ++ Auteur#user.pseudo ++ if Auteur#user.login =/= [] -> " (" ++ Auteur#user.login ++ ")"; true -> "" end ++ "'' est bloqué pour " ++ integer_to_list(trunc(?DUREE_BLOCAGE_SPAM / 1000)) ++ " secondes pour cause de flood."); - Auteur#user.indice_flood =:= ?INDICE_SPAM_MAX, Delta =< ?DUREE_BLOCAGE_SPAM -> - {erreur, "Bloqué pour cause de flood"}; - true -> - mnesia:write(Auteur_maj), - Id = nouvel_id(minichat), - inserer_reponses(Id, Repond_A), - mnesia:write(#minichat{id=Id, auteur_id=Auteur#user.id, date=now(), pseudo=Auteur#user.pseudo, contenu=Mess}), - Id - end + case e(q([E || E <- mnesia:table(user), E#user.id =:= Auteur_id]), [{tmpdir, ?KEY_SORT_TEMP_DIR}]) of + [Auteur] -> + if Nb_id_trouve =/= length(Repond_A) -> + {erreur, "Un ou plusieurs messages introuvable"}; + true -> + % comparaison entre la date du dernier poste et maintenant (gestion du flood) + Delta = delta_date_ms(Auteur#user.date_derniere_connexion, now()), + Nouvel_indice_flood = Auteur#user.indice_flood + if Delta =< ?DUREE_SPAM -> 2; true -> -1 end, + Auteur_maj = Auteur#user{ + indice_flood = if Nouvel_indice_flood > ?INDICE_SPAM_MAX -> ?INDICE_SPAM_MAX; Nouvel_indice_flood < 0 -> 0; true -> Nouvel_indice_flood end, + date_derniere_connexion = now() + }, + % est-ce que l'auteur à trop floodé ? + if Auteur#user.indice_flood =/= ?INDICE_SPAM_MAX, Auteur_maj#user.indice_flood =:= ?INDICE_SPAM_MAX, Delta =< ?DUREE_BLOCAGE_SPAM -> + mnesia:write(Auteur#user{indice_flood = Auteur_maj#user.indice_flood}), + nouveau_message_sys("''" ++ Auteur#user.pseudo ++ if Auteur#user.login =/= [] -> " (" ++ Auteur#user.login ++ ")"; true -> "" end ++ "'' est bloqué pour " ++ integer_to_list(trunc(?DUREE_BLOCAGE_SPAM / 1000)) ++ " secondes pour cause de flood."); + Auteur#user.indice_flood =:= ?INDICE_SPAM_MAX, Delta =< ?DUREE_BLOCAGE_SPAM -> + {erreur, "Bloqué pour cause de flood"}; + true -> + mnesia:write(Auteur_maj), + Id = nouvel_id(minichat), + inserer_reponses(Id, Repond_A), + mnesia:write(#minichat{id=Id, auteur_id=Auteur#user.id, date=now(), pseudo=Auteur#user.pseudo, contenu=Mess}), + Id + end + end; + _ -> + {erreur, "L'auteur du message est introuvable"} end end, resultat_transaction(mnesia:transaction(F)). @@ -538,9 +539,9 @@ messages(N, P) -> end, R = qlc:next_answers(C, N), qlc:delete_cursor(C), - lists:reverse(R) + R end, - resultat_transaction(mnesia:transaction(F)). + lists:reverse(resultat_transaction(mnesia:transaction(F))). % Renvoie les messages manquants pour la page P en sachant qu'il y a N message diff --git a/modules/erl/euphorik_test.erl b/modules/erl/euphorik_test.erl index d319997..3b70bf2 100644 --- a/modules/erl/euphorik_test.erl +++ b/modules/erl/euphorik_test.erl @@ -78,15 +78,19 @@ mot_rand(L, Mot) -> % 2 : 0.15 % 3 : 0.05 messages_id_rand() -> - Messages = lists:map(fun(#minichat{id = Id}) -> Id end, euphorik_bd:messages(30)), R = random:uniform(), - if R =< 0.5 -> []; - R > 0.5 andalso R =< 0.8 -> - tire_element_rand(1, Messages); - R > 0.8 andalso R =< 0.95 -> - tire_element_rand(2, Messages); + if R =< 0.5 -> + []; true -> - tire_element_rand(3, Messages) + Messages = lists:map(fun(#minichat{id = Id}) -> Id end, euphorik_bd:messages(8)), + if + R > 0.5 andalso R =< 0.8 -> + tire_element_rand(1, Messages); + R > 0.8 andalso R =< 0.95 -> + tire_element_rand(2, Messages); + true -> + tire_element_rand(3, Messages) + end end. -- 2.43.0