projects
/
euphorik.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
MOD passage systèmatique par l'objet Communication
[euphorik.git]
/
modules
/
erl
/
euphorik_protocole.erl
diff --git
a/modules/erl/euphorik_protocole.erl
b/modules/erl/euphorik_protocole.erl
index
1b0a49b
..
3706f68
100755
(executable)
--- a/
modules/erl/euphorik_protocole.erl
+++ b/
modules/erl/euphorik_protocole.erl
@@
-25,7
+25,6
@@
-export([
\r
register/2,
\r
login/2,
\r
-export([
\r
register/2,
\r
login/2,
\r
- logout/1,
\r
profile/1,
\r
wait_event/1,
\r
put_message/1,
\r
profile/1,
\r
wait_event/1,
\r
put_message/1,
\r
@@
-48,7
+47,7
@@
register([{login, Login}, {password, Password}, {profile, Profile_json}], IP) ->
if Can_register ->
\r
case euphorik_bd:user_by_login(Login) of
\r
{ok, _} ->
\r
if Can_register ->
\r
case euphorik_bd:user_by_login(Login) of
\r
{ok, _} ->
\r
- erreur(
"Login déjà existant"
);
\r
+ erreur(
10
);
\r
_ ->
\r
User = euphorik_bd:nouveau_user(Login, Password, generer_cookie(), profile_from_json(Profile_json)),
\r
euphorik_bd:update_ip(User#user.id, IP),
\r
_ ->
\r
User = euphorik_bd:nouveau_user(Login, Password, generer_cookie(), profile_from_json(Profile_json)),
\r
euphorik_bd:update_ip(User#user.id, IP),
\r
@@
-70,7
+69,7
@@
register([{profile, Profile_json}], IP) ->
end.
\r
\r
erreur_register_flood() ->
\r
end.
\r
\r
erreur_register_flood() ->
\r
- erreur(
"Trop de register (flood)"
).
\r
+ erreur(
20
).
\r
\r
\r
% Un utilisateur se logge (avec un couple {login, mot de passe})
\r
\r
\r
% Un utilisateur se logge (avec un couple {login, mot de passe})
\r
@@
-80,7
+79,7
@@
login([{login, Login}, {password, Password}], IP) ->
loginUser(User, IP);
\r
_ ->
\r
timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),
\r
loginUser(User, IP);
\r
_ ->
\r
timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),
\r
- erreur(
"Couple login/pass introuvable"
)
\r
+ erreur(
30
)
\r
end;
\r
% Un utilisateur se logge (avec un cookie)
\r
login([{cookie, Cookie}], IP) ->
\r
end;
\r
% Un utilisateur se logge (avec un cookie)
\r
login([{cookie, Cookie}], IP) ->
\r
@@
-89,9
+88,11
@@
login([{cookie, Cookie}], IP) ->
loginUser(User, IP);
\r
_ ->
\r
timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),
\r
loginUser(User, IP);
\r
_ ->
\r
timer:sleep(?TEMPS_ATTENTE_ERREUR_LOGIN),
\r
- erreur(
"Authentification impossible par cookie"
)
\r
+ erreur(
40
)
\r
end.
\r
\r
end.
\r
\r
+
\r
+% L'utilisateur donné se logge avec l'ip donnée.
\r
loginUser(User, IP) ->
\r
euphorik_bd:update_ip(User#user.id, IP),
\r
euphorik_bd:update_date_derniere_connexion(User#user.id),
\r
loginUser(User, IP) ->
\r
euphorik_bd:update_ip(User#user.id, IP),
\r
euphorik_bd:update_date_derniere_connexion(User#user.id),
\r
@@
-105,11
+106,6
@@
generer_cookie() ->
erlang:integer_to_list(random:uniform(math:pow(10, 32)), 36).
\r
\r
\r
erlang:integer_to_list(random:uniform(math:pow(10, 32)), 36).
\r
\r
\r
-% Un utilisateur se délogge.
\r
-logout(_) ->
\r
- do_nothing.
\r
-
\r
-
\r
% Modification du profile.
\r
profile(
\r
[
\r
% Modification du profile.
\r
profile(
\r
[
\r
@@
-122,14
+118,13
@@
profile(
case profile_from_json(Profile_json) of
\r
{erreur, E} -> E;
\r
Profile ->
\r
case profile_from_json(Profile_json) of
\r
{erreur, E} -> E;
\r
Profile ->
\r
- % TODO : pas très beau, mieux vaut construire un #user
\r
case euphorik_bd:set_profile(Cookie, Login, Password, Profile) of
\r
ok ->
\r
json_reponse_ok();
\r
login_deja_pris ->
\r
case euphorik_bd:set_profile(Cookie, Login, Password, Profile) of
\r
ok ->
\r
json_reponse_ok();
\r
login_deja_pris ->
\r
- erreur(
"Login déjà pris"
);
\r
+ erreur(
10
);
\r
_ ->
\r
_ ->
\r
- erreur(
"Impossible de mettre à jour le profile"
)
\r
+ erreur(
50
)
\r
end
\r
end.
\r
\r
end
\r
end.
\r
\r
@@
-196,7
+191,7
@@
profile_from_json(
end.
\r
\r
\r
end.
\r
\r
\r
-%
Renvoie les messages appropriés.
\r
+%
Attend un événement pour la page "Chat"
\r
% last_message id et cookie sont facultatifs
\r
wait_event([{page, "chat"} | Data]) ->
\r
% traitement des inputs
\r
% last_message id et cookie sont facultatifs
\r
wait_event([{page, "chat"} | Data]) ->
\r
% traitement des inputs
\r
@@
-227,6
+222,7
@@
wait_event([{page, "chat"} | Data]) ->
mnesia:unsubscribe({table, troll, detailed}),
\r
R
\r
end;
\r
mnesia:unsubscribe({table, troll, detailed}),
\r
R
\r
end;
\r
+% Attend un événement pour la page "Admin"
\r
wait_event([{page, "admin"}, {last_troll, Last_troll}]) ->
\r
case wait_event_page_admin(Last_troll) of
\r
banned_ips_refresh ->
\r
wait_event([{page, "admin"}, {last_troll, Last_troll}]) ->
\r
case wait_event_page_admin(Last_troll) of
\r
banned_ips_refresh ->
\r
@@
-273,12
+269,13
@@
wait_event([{page, "admin"}, {last_troll, Last_troll}]) ->
]
\r
};
\r
_ ->
\r
]
\r
};
\r
_ ->
\r
- erreur(
"timeout"
)
\r
+ erreur(
60
)
\r
end;
\r
wait_event(_) ->
\r
end;
\r
wait_event(_) ->
\r
- erreur(
"Page inconnue"
).
\r
+ erreur(
70
).
\r
\r
\r
\r
\r
+% Attend un événement pour la page "Chat" et renvoie soit un troll soit les messages manquants au client.
\r
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id, Main_page, Troll_id) ->
\r
% est-ce que le troll est à jour ?
\r
case euphorik_bd:current_troll() of
\r
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id, Main_page, Troll_id) ->
\r
% est-ce que le troll est à jour ?
\r
case euphorik_bd:current_troll() of
\r
@@
-286,7
+283,7
@@
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id
{struct, [
\r
{reply, "new_troll"},
\r
{troll_id, Current#troll.id},
\r
{struct, [
\r
{reply, "new_troll"},
\r
{troll_id, Current#troll.id},
\r
- {message_id,
euphorik_bd:message_id_associe(Current#troll.id)
},
\r
+ {message_id,
Current#troll.id_minichat
},
\r
{content, Current#troll.content}
\r
]};
\r
_ ->
\r
{content, Current#troll.content}
\r
]};
\r
_ ->
\r
@@
-311,7
+308,7
@@
wait_event_page_chat(User, Racines_conversations, Message_count, Last_message_id
{Racine_id, _, _} = Racine,
\r
case euphorik_bd:message_by_id(Racine_id) of
\r
{ok, Mess} ->
\r
{Racine_id, _, _} = Racine,
\r
case euphorik_bd:message_by_id(Racine_id) of
\r
{ok, Mess} ->
\r
- json_message(Mess, euphorik_bd:parents(Racine), User);
\r
+ json_message(Mess, euphorik_bd:parents(Racine
_id
), User);
\r
_ ->
\r
null
\r
end
\r
_ ->
\r
null
\r
end
\r
@@
-429,23
+426,23
@@
put_message(
{ok, User} ->
\r
case euphorik_bd:est_banni(User#user.id) of
\r
{true, Temps_restant} ->
\r
{ok, User} ->
\r
case euphorik_bd:est_banni(User#user.id) of
\r
{true, Temps_restant} ->
\r
- erreur(
"Vous êtes banni pour encore " ++ format_minutes(Temps_restant)
);
\r
+ erreur(
80, [format_minutes(Temps_restant)]
);
\r
_ ->
\r
Strip_content = string:strip(Content),
\r
if Strip_content =:= [] ->
\r
_ ->
\r
Strip_content = string:strip(Content),
\r
if Strip_content =:= [] ->
\r
- erreur(
"Message vide"
);
\r
+ erreur(
90
);
\r
true ->
\r
% attention : non-atomique (update_pseudo+nouveau_message)
\r
euphorik_bd:update_pseudo_user(User#user.id, Nick),
\r
case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of
\r
true ->
\r
% attention : non-atomique (update_pseudo+nouveau_message)
\r
euphorik_bd:update_pseudo_user(User#user.id, Nick),
\r
case euphorik_bd:nouveau_message(Strip_content, User#user.id, Answer_to) of
\r
- {erreur, R} -> erreur(
"Impossible d'ajouter un nouveau message. Raison : " ++ R
);
\r
+ {erreur, R} -> erreur(
100, [R]
);
\r
_ ->
\r
json_reponse_ok()
\r
end
\r
end
\r
end;
\r
_ ->
\r
_ ->
\r
json_reponse_ok()
\r
end
\r
end
\r
end;
\r
_ ->
\r
- erreur(
"Utilisateur inconnu"
)
\r
+ erreur(
110
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-462,10
+459,10
@@
ban(
{ok, User1 = #user{ek_master = true}} ->
\r
case euphorik_bd:user_by_id(User_id) of
\r
{ok, User1} ->
\r
{ok, User1 = #user{ek_master = true}} ->
\r
case euphorik_bd:user_by_id(User_id) of
\r
{ok, User1} ->
\r
- erreur(
"Il n'est pas possible de s'auto bannir"
);
\r
+ erreur(
120
);
\r
{ok, #user{ek_master = false, profile = Profile2} = User2} ->
\r
euphorik_bd:ban(User2#user.last_ip, Duration),
\r
{ok, #user{ek_master = false, profile = Profile2} = User2} ->
\r
euphorik_bd:ban(User2#user.last_ip, Duration),
\r
- euphorik_bd:nouveau_message_sys(lists:flatten(io_lib:format("
''~s~s''
est ~s pour ~s.~s",
\r
+ euphorik_bd:nouveau_message_sys(lists:flatten(io_lib:format("
\"~s~s\"
est ~s pour ~s.~s",
\r
[
\r
Profile2#profile.pseudo,
\r
if User2#user.login =:= [] -> ""; true -> " (" ++ User2#user.login ++ ")" end,
\r
[
\r
Profile2#profile.pseudo,
\r
if User2#user.login =:= [] -> ""; true -> " (" ++ User2#user.login ++ ")" end,
\r
@@
-476,12
+473,12
@@
ban(
))),
\r
json_reponse_ok();
\r
{ok, _} ->
\r
))),
\r
json_reponse_ok();
\r
{ok, _} ->
\r
- erreur(
"L'utilisateur est lui même un ekMaster"
);
\r
+ erreur(
130
);
\r
_ ->
\r
_ ->
\r
- erreur(
"Utilisateur à bannir inconnu"
)
\r
+ erreur(
140
)
\r
end;
\r
_ ->
\r
end;
\r
_ ->
\r
- erreur(
"Utilisateur inconnu ou non ek master"
)
\r
+ erreur(
150
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-514,12
+511,12
@@
slap(
))),
\r
json_reponse_ok();
\r
{ok, _} ->
\r
))),
\r
json_reponse_ok();
\r
{ok, _} ->
\r
- erreur(
"L'utilisateur est lui même un ekMaster"
);
\r
+ erreur(
130
);
\r
_ ->
\r
_ ->
\r
- erreur(
"Utilisateur à slaper inconnu"
)
\r
+ erreur(
160
)
\r
end;
\r
_ ->
\r
end;
\r
_ ->
\r
- erreur(
"Utilisateur inconnu ou non ek master"
)
\r
+ erreur(
170
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-534,14
+531,14
@@
put_troll(
{ok, User = #user{ek_master = true}} ->
\r
case euphorik_bd:put_troll(User#user.id, Content) of
\r
max_troll_reached_per_user ->
\r
{ok, User = #user{ek_master = true}} ->
\r
case euphorik_bd:put_troll(User#user.id, Content) of
\r
max_troll_reached_per_user ->
\r
- erreur(
lists:flatten(io_lib:format("Le nombre de troll maximum par utilisateur est atteint : ~w ", [?NB_MAX_TROLL_WAITING_BY_USER]))
);
\r
+ erreur(
180, [?NB_MAX_TROLL_WAITING_BY_USER]
);
\r
max_troll_reached ->
\r
max_troll_reached ->
\r
- erreur(
lists:flatten(io_lib:format("Le nombre de troll maximum en attente est atteint : ~w ", [?NB_MAX_TROLL_WAITING]))
);
\r
+ erreur(
190, [?NB_MAX_TROLL_WAITING]
);
\r
_Id ->
\r
json_reponse_ok()
\r
end;
\r
_ ->
\r
_Id ->
\r
json_reponse_ok()
\r
end;
\r
_ ->
\r
- erreur(
"Seul les ekMaster peuvent proposer des trolls"
)
\r
+ erreur(
200
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-561,10
+558,10
@@
mod_troll(
euphorik_bd:mod_troll(Troll_id, Content),
\r
json_reponse_ok();
\r
_ ->
\r
euphorik_bd:mod_troll(Troll_id, Content),
\r
json_reponse_ok();
\r
_ ->
\r
- erreur(
"Vous ne posséder pas ce troll"
)
\r
+ erreur(
210
)
\r
end;
\r
_ ->
\r
end;
\r
_ ->
\r
- erreur(
"Seul les ekMaster peuvent proposer des trolls"
)
\r
+ erreur(
220
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-583,10
+580,10
@@
del_troll(
euphorik_bd:del_troll(Troll_id),
\r
json_reponse_ok();
\r
_ ->
\r
euphorik_bd:del_troll(Troll_id),
\r
json_reponse_ok();
\r
_ ->
\r
- erreur(
"Vous ne posséder pas ce troll"
)
\r
+ erreur(
210
)
\r
end;
\r
_ ->
\r
end;
\r
_ ->
\r
- erreur(
"Seul les ekMaster peuvent proposer des trolls"
)
\r
+ erreur(
220
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-601,7
+598,7
@@
unban_ip(
euphorik_bd:deban(euphorik_common:unserialize_ip(IP)),
\r
json_reponse_ok();
\r
_ ->
\r
euphorik_bd:deban(euphorik_common:unserialize_ip(IP)),
\r
json_reponse_ok();
\r
_ ->
\r
- erreur(
"Seul les ekMaster peuvent connaitre la liste des ips bannies"
)
\r
+ erreur(
230
)
\r
end.
\r
\r
\r
end.
\r
\r
\r
@@
-641,16
+638,25
@@
list_banned_ips(
]
\r
};
\r
_ ->
\r
]
\r
};
\r
_ ->
\r
- erreur(
"Seul les ekMaster peuvent connaitre la liste des ips bannies"
)
\r
+ erreur(
230
)
\r
end.
\r
\r
\r
% Construit une erreur
\r
end.
\r
\r
\r
% Construit une erreur
\r
-erreur(Message) ->
\r
+erreur(Num, Args) ->
\r
+ erreur_json(Num, lists:flatten(io_lib:format(euphorik_bd:get_texte(Num), Args))).
\r
+
\r
+
\r
+erreur(Num) ->
\r
+ erreur_json(Num, euphorik_bd:get_texte(Num)).
\r
+
\r
+
\r
+erreur_json(Num, Mess) ->
\r
{
\r
struct, [
\r
{reply, "error"},
\r
{
\r
struct, [
\r
{reply, "error"},
\r
- {error_message, Message}
\r
+ {no, Num},
\r
+ {error_message, Mess}
\r
]
\r
}.
\r
\r
]
\r
}.
\r
\r
@@
-738,7
+744,7
@@
json_message(Mess, Repond_a, User) ->
{struct, [
\r
{id, Mess#minichat.id},
\r
{user_id, User_mess#user.id},
\r
{struct, [
\r
{id, Mess#minichat.id},
\r
{user_id, User_mess#user.id},
\r
- {date,
format_date(Mess#minichat.date)
},
\r
+ {date,
case Mess#minichat.date of undefined -> "?"; _ -> format_date(Mess#minichat.date) end
},
\r
{system, Mess#minichat.auteur_id =:= 0},
\r
{owner, Est_proprietaire},
\r
{answered, A_repondu_a_message},
\r
{system, Mess#minichat.auteur_id =:= 0},
\r
{owner, Est_proprietaire},
\r
{answered, A_repondu_a_message},
\r