-% coding: utf-8
+% coding: utf-8\r
+% Copyright 2008 Grégory Burri\r
+%\r
+% This file is part of Euphorik.\r
+%\r
+% Euphorik is free software: you can redistribute it and/or modify\r
+% it under the terms of the GNU General Public License as published by\r
+% the Free Software Foundation, either version 3 of the License, or\r
+% (at your option) any later version.\r
+%\r
+% Euphorik is distributed in the hope that it will be useful,\r
+% but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+% GNU General Public License for more details.\r
+%\r
+% You should have received a copy of the GNU General Public License\r
+% along with Euphorik. If not, see <http://www.gnu.org/licenses/>.\r
+%
% Ce module gére les différents messages envoyés par le client (javascript) via AJAX.
% Les messages donnés ainsi que les réponses sont au format JSON.
% @author G.Burri
+\r
-module(euphorik_protocole).
-export([
list_banned_ips/1,
erreur/1
]).
--include_lib("xmerl/include/xmerl.hrl").
-include("../include/euphorik_bd.hrl").\r
-include("../include/euphorik_defines.hrl").\r
json_reponse_login_ok(User);
loginUser(_, _) ->
% ajoute un délais d'attente
- timer:sleep(1000),
- erreur("Erreur login").
+ timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),
+ erreur("Couple login/pass introuvable").
\r
% Renvoie un string() représentant un cookie en base 36. Il y a 10^32 possibillités.\r
generer_cookie() ->
- {A1,A2,A3} = now(),
+ {A1, A2, A3} = now(),
random:seed(A1, A2, A3),\r
erlang:integer_to_list(random:uniform(math:pow(10, 32)), 36).\r
{email, Email},
{css, Css},
{nick_format, Nick_format_str},
+ {view_times, View_times},
+ {view_tooltips, View_tooltips},
{main_page, Main_page},
{conversations, {array, Conversations_json}}
]
[],
Conversations_json
),
- case euphorik_bd:set_profile(Cookie, Login, Password, Pseudo, Email, Css, list_to_atom(Nick_format_str), Main_page, Conversations) of
+ % TODO : pas très beau, mieux vaut construire un #user
+ case euphorik_bd:set_profile(
+ Cookie,
+ Login,
+ Password,
+ Pseudo,
+ Email,
+ Css,
+ list_to_atom(Nick_format_str),
+ View_times,
+ View_tooltips,
+ Main_page,
+ Conversations) of
ok ->
json_reponse_ok();
login_deja_pris ->
{struct, [
{reply, "new_troll"},
{troll_id, Current#troll.id},
+ {message_id, euphorik_bd:message_id_associe(Current#troll.id)},
{content, Current#troll.content}
]};
_ ->
% Après 60 minutes de connexion, le client doit donc reétablir une connexion
after 1000 * 60 * 60 ->
timeout
- end.
+ end.
% Attent un événement concernant la page admin
) ->
case euphorik_bd:user_by_cookie(Cookie) of
{ok, #user{ek_master = true}} ->
- euphorik_bd:deban(unserialize_ip(IP)),
+ euphorik_bd:deban(euphorik_common:unserialize_ip(IP)),
json_reponse_ok();
_ ->
erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
fun({IP, T, Users}) ->
{struct,
[
- {ip, serialize_ip(IP)},
+ {ip, euphorik_common:serialize_ip(IP)},
{remaining_time, format_minutes(T)},
{users, {array, lists:map(
fun({Pseudo, Login}) ->
]
}.
-
-serialize_ip(IP) ->
- lists:flatten(io_lib:format("~w.~w.~w.~w", tuple_to_list(IP))).
-
-
-unserialize_ip(IP) ->
- case io_lib:fread("~d.~d.~d.~d", IP) of
- {ok, [A, B, C, D], []} -> {A, B, C, D};
- _ -> erreur
- end.
-
% Formatage de minutes.
% par exemple : "1min", "45min", "1h23min", "1jour 2h34min"
{email, User#user.email},
{css, User#user.css},
{nick_format, atom_to_list(User#user.nick_format)},
+ {view_times, User#user.view_times},
+ {view_tooltips, User#user.view_tooltips},
{main_page, User#user.page_principale},
{conversations,
{array,