put_troll/1,
mod_troll/1,
del_troll/1,
+ unban_ip/1,
+ list_banned_ips/1,
erreur/1
]).
-include_lib("xmerl/include/xmerl.hrl").
_ ->
erreur("Utilisateur inconnu")
end.
-
-
-% Formatage de minutes.
-% par exemple : "1min", "45min", "1h23min", "1jour 2h34min"
-format_minutes(Min) ->
- Jours = Min div (60 * 24),
- Heures = Min rem (60 * 24) div 60,
- Minutes = Min rem (60),
- if Jours =/= 0 -> integer_to_list(Jours) ++ "Jour" ++ if Jours > 1 -> "s"; true -> "" end ++ " "; true -> "" end ++
- if Heures =/= 0 -> integer_to_list(Heures) ++ "h"; true -> "" end ++
- if Minutes == 0 ->
- "";
- true ->
- lists:flatten(io_lib:format(if Jours =:= 0, Heures =:= 0 -> "~w"; true -> "~2.2.0w" end, [Minutes])) ++ "min"
- end.
% bannissement d'un utilisateur (son ip est bannie)
erreur("Seul les ekMaster peuvent proposer des trolls")
end.
+
+unban_ip(
+ [
+ {cookie, Cookie},
+ {ip, IP}
+ ]
+) ->
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, #user{ek_master = true}} ->
+ euphorik_bd:deban(unserialize_ip(IP)),
+ json_reponse_ok;
+ _ ->
+ erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
+ end.
+
+
+list_banned_ips(
+ [
+ {cookie, Cookie}
+ ]
+) ->
+ case euphorik_bd:user_by_cookie(Cookie) of
+ {ok, #user{ek_master = true}} ->
+ {
+ struct,
+ [
+ {reply, "list_banned_ips"},
+ {list, {array, lists:map(
+ fun({IP, T, Users}) ->
+ {struct,
+ [
+ {ip, serialize_ip(IP)},
+ {remaining_time, format_minutes(T)},
+ {users, {array, lists:map(
+ fun({Pseudo, Login}) ->
+ {struct,
+ [
+ {nick, Pseudo},
+ {login, Login}
+ ]
+ }
+ end,
+ Users
+ )}}
+ ]
+ }
+ end,
+ euphorik_bd:list_ban()
+ )}}
+ ]
+ };
+ _ ->
+ erreur("Seul les ekMaster peuvent connaitre la liste des ips bannies")
+ end.
+
% Construit une erreur
erreur(Message) ->
]
}.
+
+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"
+format_minutes(Min) ->
+ Jours = Min div (60 * 24),
+ Heures = Min rem (60 * 24) div 60,
+ Minutes = Min rem (60),
+ if Jours =/= 0 -> integer_to_list(Jours) ++ " Jour" ++ if Jours > 1 -> "s"; true -> "" end ++ " "; true -> "" end ++
+ if Heures =/= 0 -> integer_to_list(Heures) ++ " heure" ++ if Heures > 1 -> "s"; true -> "" end; true -> "" end ++
+ if Minutes == 0 ->
+ "";
+ true ->
+ integer_to_list(Minutes) ++ " minute" ++ if Minutes > 1 -> "s"; true -> "" end; true -> "" end
+ end.
+
\r
% Formatage d'une heure\r
% local_time() -> string\r