MOD cleanage du code
authorGreg Burri <greg.burri@gmail.com>
Mon, 5 May 2008 21:13:34 +0000 (21:13 +0000)
committerGreg Burri <greg.burri@gmail.com>
Mon, 5 May 2008 21:13:34 +0000 (21:13 +0000)
FIX quelques bugs bloquants, rien très grave ^ -^´

modules/Makefile
modules/erl/euphorik_bd.erl
modules/erl/euphorik_minichat_conversation.erl
modules/erl/euphorik_protocole.erl
modules/include/euphorik_defines.hrl
sessions/erl.session

index 80eef52..bd7d763 100755 (executable)
@@ -11,20 +11,15 @@ rep_include = include
 erlc_params = -I $(rep_include) -o $(rep_ebin) $<\r
 \r
 # Compilation de toute l'application euphorik\r
-all: $(rep_ebin)/euphorik_bd.beam \\r
-$(rep_ebin)/euphorik_minichat.beam \
+all: $(rep_ebin)/euphorik_bd.beam \
 $(rep_ebin)/euphorik_minichat_conversation.beam \\r
 $(rep_ebin)/euphorik_requests.beam \\r
 $(rep_ebin)/euphorik_protocole.beam \
 \r
-# Module pour la gestion de la BD, principalement la création\r
+# Module pour la gestion des données persistante la BD\r
 $(rep_ebin)/euphorik_bd.beam: $(rep_erl)/euphorik_bd.erl $(rep_include)/euphorik_bd.hrl\r
        erlc $(erlc_params)\r
-\r
-# Module permettant l'ajout et la demande de message dans le minichat\r
-$(rep_ebin)/euphorik_minichat.beam: $(rep_erl)/euphorik_minichat.erl $(rep_include)/euphorik_bd.hrl\r
-       erlc $(erlc_params)
-   
+
 # Module permettant l'extraction des conversations du minichat
 $(rep_ebin)/euphorik_minichat_conversation.beam: $(rep_erl)/euphorik_minichat_conversation.erl $(rep_include)/euphorik_bd.hrl
        erlc $(erlc_params)\r
index 9ad6da2..e114b52 100755 (executable)
@@ -4,7 +4,7 @@
 % Ce module utilise une base mnesia.
 % @author G.Burri
 
--module(euphorik_minichat).\r
+-module(euphorik_bd).\r
 -export([
    % gestion :
    create/0,
@@ -364,7 +364,6 @@ messages_by_ids(Ids) ->
       fun() ->
          % TODO : optimisations ? serait-ce du O(n) ?
          Query = qlc:q([E || E <- qlc:keysort(2, mnesia:table(minichat), [{order, ascending}]), lists:any(fun(Id) -> Id =:= E#minichat.id end, Ids)]),
-         %io:format("~s~n", [qlc:info(Query)]),
          qlc:e(Query)
       end
    )).
@@ -479,6 +478,7 @@ delta_date_ms(D1, D2) ->
 
 
 % Bizarre, cette fonction n'existe pas dans la stdlib.
+% Pas utilisé mais bon ca me fait de la peine de l'enlever.
 ceiling(X) ->
    T = trunc(X),
    case (X - T) of
index a280e1f..8cddd03 100755 (executable)
@@ -17,7 +17,7 @@
 -include_lib("stdlib/include/qlc.hrl").
 
 -import(lists, [reverse/1, any/2, map/2, sublist/3, filter/2]).
--import(euphorik_minichat, [resultat_transaction/1]).
+-import(euphorik_bd, [resultat_transaction/1]).
 -import(qlc, [e/1, q/1, keysort/3]).
 -import(mnesia, [table/1, transaction/1]).
   
@@ -36,7 +36,6 @@ conversations(Racines, N, D, P) ->
       _ ->
          % demande des conversations
          Conversations = conversations_detailees(Racines, N, D, P),
-         %io:format("Conversations : ~p~n", [Conversations]),
          % si les conversations sont vides alors on attend un nouveau message
          Vide = not any(
             fun(C) ->
@@ -51,14 +50,11 @@ conversations(Racines, N, D, P) ->
          Conversations_mises_en_forme = mise_en_forme_conversations(
             if Vide ->
                attend_nouveau_message(),
-               %io:format("Racines = ~p, N = ~p, D = ~p, P = ~p~n", [Racines, N, D, P]),
-               %io:format("Conversations = ~p~n", [conversations_detailees(Racines, N, D, P)]),
                conversations_detailees(Racines, N, D, P);
             true ->
                Conversations
             end
          ),
-         %io:format("Conversations_mises_en_forme = ~p~n", [Conversations_mises_en_forme]),
          unsubscribe(minichat),
          Conversations_mises_en_forme
    end.
@@ -119,7 +115,7 @@ mise_en_forme_conversations([{Principale, Plus_principale} | Conversations]) ->
 mise_en_forme_conversation(Messages) ->
    lists:foldr(
       fun(Id, Acc) ->
-         case euphorik_minichat:message_by_id(Id) of
+         case euphorik_bd:message_by_id(Id) of
             {ok, Message} ->
                [{Message, parents(Id)} | Acc];
             _ ->
index 59f8def..1f5faf3 100755 (executable)
 
 % Une utilisateur s'enregistre avec un tuple {Login, Password}.
 register([{login, Login}, {password, Password}], IP) ->
-   Can_register = euphorik_minichat:can_register(IP),
+   Can_register = euphorik_bd:can_register(IP),
    if Can_register ->
-         case euphorik_minichat:user_by_login(Login) of
+         case euphorik_bd:user_by_login(Login) of
             {ok, _} ->
                erreur("Login déjà existant");
             _ ->
-               User = euphorik_minichat:nouveau_user(Login, Password, generer_cookie()),
+               User = euphorik_bd:nouveau_user(Login, Password, generer_cookie()),
                json_reponse_login_ok(User)
          end;
       true ->
@@ -35,9 +35,9 @@ register([{login, Login}, {password, Password}], IP) ->
    end;
 % Enregistrement sans {Login, Password}
 register([], IP) ->   
-   Can_register = euphorik_minichat:can_register(IP),
+   Can_register = euphorik_bd:can_register(IP),
    if Can_register ->
-         User = euphorik_minichat:nouveau_user("<nick>", generer_cookie()),
+         User = euphorik_bd:nouveau_user("<nick>", generer_cookie()),
          json_reponse_login_ok(User);
       true ->
          erreur_register_flood()
@@ -46,17 +46,16 @@ register([], IP) ->
 erreur_register_flood() ->
    erreur("Trop de register (flood)").
    
-   
 \r
 % Un utilisateur se logge (avec un couple {login, mot de passe})
 login([{login, Login}, {password, Password}]) ->
-   loginUser(euphorik_minichat:user_by_login_password(Login, Password));
+   loginUser(euphorik_bd:user_by_login_password(Login, Password));
 % Un utilisateur se logge (avec un cookie)
 login([{cookie, Cookie}]) ->
-   loginUser(euphorik_minichat:user_by_cookie(Cookie)).
+   loginUser(euphorik_bd:user_by_cookie(Cookie)).
    
 loginUser({ok, User}) ->
-   euphorik_minichat:update_date_derniere_connexion(User#user.id),
+   euphorik_bd:update_date_derniere_connexion(User#user.id),
    json_reponse_login_ok(User);
 loginUser(_) ->
    % ajoute un délais d'attente (TODO : un autre moyen plus élégant ?)
@@ -94,7 +93,7 @@ profile(
    % est-ce que les messages auquel on répond existent ?
    Conversations = lists:foldr(
       fun({struct, [{root, Root}, {page, Page}]}, Acc) ->
-         Message_existe = euphorik_minichat:message_existe(Root),
+         Message_existe = euphorik_bd:message_existe(Root),
          if  Message_existe ->
             [{Root, Page} | Acc];
             true ->
@@ -104,7 +103,7 @@ profile(
       [],
       Conversations_json
    ),
-   case euphorik_minichat:set_profile(Cookie, Login, Password, Pseudo, Email, Css, list_to_atom(Nick_format_str), Main_page, Conversations) of
+   case euphorik_bd:set_profile(Cookie, Login, Password, Pseudo, Email, Css, list_to_atom(Nick_format_str), Main_page, Conversations) of
       ok ->
          json_reponse_ok();
       login_deja_pris ->
@@ -116,7 +115,6 @@ profile(
 
 % Renvoie les messages appropriés.
 % last_message id et cookie sont facultatifs
-% TODO : erreur : {badmatch,false}
 wait_event(Data) ->
    Cookie = case lists:keysearch(cookie, 1, Data) of {value, {_, C}} -> C; _ -> inconnu end,
    Last_message_id = case lists:keysearch(last_message_id, 1, Data) of {value, {_, Id}} -> Id; _ -> 0 end,
@@ -130,7 +128,7 @@ wait_event(Data) ->
       end,
       Conversations_json
    ),
-   User = case euphorik_minichat:user_by_cookie(Cookie) of\r
+   User = case euphorik_bd:user_by_cookie(Cookie) of\r
       {ok, U} -> U;\r
       _ -> inconnu\r
    end,\r
@@ -146,14 +144,13 @@ wait_event(Data) ->
                      lists:map(
                         fun({Mess, Repond_a}) ->                                 
                            Est_proprietaire = User =/= inconnu andalso User#user.id =:= Mess#minichat.auteur_id,
-                           A_repondu_a_message = User =/= inconnu andalso euphorik_minichat:a_repondu_a_message(User#user.id, Mess#minichat.id),
-                           Est_une_reponse_a_user = User =/= inconnu andalso euphorik_minichat:est_une_reponse_a_user(User#user.id, Mess#minichat.id),
-                           % io:format("Repond_a : ~p~n", [Repond_a]),
+                           A_repondu_a_message = User =/= inconnu andalso euphorik_bd:a_repondu_a_message(User#user.id, Mess#minichat.id),
+                           Est_une_reponse_a_user = User =/= inconnu andalso euphorik_bd:est_une_reponse_a_user(User#user.id, Mess#minichat.id),
                            User_mess =
                               if Mess#minichat.auteur_id =:= 0 ->
                                     inconnu;
                                  true ->
-                                    {ok, U2} = euphorik_minichat:user_by_id(Mess#minichat.auteur_id),
+                                    {ok, U2} = euphorik_bd:user_by_id(Mess#minichat.auteur_id),
                                     U2
                               end,
                               {struct, [
@@ -168,8 +165,8 @@ wait_event(Data) ->
                                  {content, Mess#minichat.contenu},
                                  {answer_to, {array, lists:map(
                                     fun(Id_mess) ->                   
-                                       {ok, M} = euphorik_minichat:message_by_id(Id_mess),
-                                       {ok, User_reponse} = euphorik_minichat:user_by_mess(M#minichat.id),
+                                       {ok, M} = euphorik_bd:message_by_id(Id_mess),
+                                       {ok, User_reponse} = euphorik_bd:user_by_mess(M#minichat.id),
                                        {struct, [{id, M#minichat.id}, {nick, M#minichat.pseudo}, {login, User_reponse#user.login}]}
                                     end,
                                     Repond_a
@@ -201,15 +198,15 @@ put_message(
       {answer_to, {array, Answer_to}}
    ]
 ) ->
-   case euphorik_minichat:user_by_cookie(Cookie) of
+   case euphorik_bd:user_by_cookie(Cookie) of
       {ok, User} ->
          Strip_content = string:strip(Content),
          if (Strip_content =:= []) ->
                erreur("Message vide");
             true ->
                % TODO : non-atomique (update_pseudo+nouveau_message)
-               euphorik_minichat:update_pseudo_user(User#user.id, Nick),
-               case euphorik_minichat:nouveau_message(Strip_content, User#user.id, Answer_to) of
+               euphorik_bd:update_pseudo_user(User#user.id, Nick),
+               case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of
                      erreur -> erreur("Impossible d'ajouter un nouveau message");
                   _ ->
                      json_reponse_ok()
@@ -250,9 +247,7 @@ format_date(Date) ->
       end ++\r
       io_lib:format("~2.10.0B:~2.10.0B:~2.10.0B", [Heure, Minute, Seconde])
    ).
-
-
-%%%%%%%%% <Réponses JSON> %%%%%%%%%
+   
 
 json_reponse_ok() ->
    {struct, [{reply, "ok"}]}.
@@ -288,6 +283,3 @@ json_reponse_login_ok(User) ->
          }
       ]
    }.
-   
-   
-%%%%%%%%% </réponses JSON> %%%%%%%%%
index 5c2d357..443437f 100755 (executable)
@@ -1,6 +1,11 @@
 
 
-
+% Un message est considéré comme du spam s'il est posté 1 seconde ou moins après le dernier posté
+-define(DUREE_SPAM, 1000). % ms
+% Lorsque l'indice de spam d'un utilisateur atteind cette valeur alors il ne peut plus poster pendant un moment
+-define(INDICE_SPAM_MAX, 6).
+% Un utilisateur ayant trop spamé est bloqué pendant ce temps 
+-define(DUREE_BLOCAGE_SPAM, 20000). % ms
 
 
 % le temps qu'une ip est bannie après avoir voulu s'etre enregistré trop de fois trop rapidement
index e25e717..5dda940 100755 (executable)
@@ -1,23 +1,20 @@
 # SciTE session file
 
-buffer.1.path=/home/gburri/projets/euphorik/modules/erl/euphorik_bd.erl
-buffer.1.position=1
+buffer.1.path=/home/gburri/projets/euphorik/modules/erl/euphorik_minichat.erl
+buffer.1.position=360
+buffer.1.current=1
 
-buffer.2.path=/home/gburri/projets/euphorik/modules/erl/euphorik_minichat.erl
+buffer.2.path=/home/gburri/projets/euphorik/modules/erl/euphorik_minichat_conversation.erl
 buffer.2.position=1
 
-buffer.3.path=/home/gburri/projets/euphorik/modules/erl/euphorik_minichat_conversation.erl
+buffer.3.path=/home/gburri/projets/euphorik/modules/erl/euphorik_protocole.erl
 buffer.3.position=1
 
-buffer.4.path=/home/gburri/projets/euphorik/modules/erl/euphorik_protocole.erl
+buffer.4.path=/home/gburri/projets/euphorik/modules/erl/euphorik_requests.erl
 buffer.4.position=1
 
-buffer.5.path=/home/gburri/projets/euphorik/modules/erl/euphorik_requests.erl
+buffer.5.path=/home/gburri/projets/euphorik/modules/include/euphorik_bd.hrl
 buffer.5.position=1
 
-buffer.6.path=/home/gburri/projets/euphorik/modules/include/euphorik_bd.hrl
-buffer.6.position=1
-
-buffer.7.path=/home/gburri/projets/euphorik/modules/include/euphorik_defines.hrl
-buffer.7.position=1
-buffer.7.current=1
+buffer.6.path=/home/gburri/projets/euphorik/modules/include/euphorik_defines.hrl
+buffer.6.position=336