25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-24 16:23:40 +01:00

Handle ~ control sequence in text of mod_muc_log (EJAB-1639)

This commit is contained in:
Badlop 2013-05-30 14:28:39 +02:00
parent 2639d262f1
commit 3025bfd3ff

View File

@ -54,6 +54,7 @@
-define(PROCNAME, ejabberd_mod_muc_log). -define(PROCNAME, ejabberd_mod_muc_log).
-record(room, {jid, title, subject, subject_author, config}). -record(room, {jid, title, subject, subject_author, config}).
-define(PLAINTEXT_CO, <<"ZZCZZ">>).
-define(PLAINTEXT_IN, <<"ZZIZZ">>). -define(PLAINTEXT_IN, <<"ZZIZZ">>).
-define(PLAINTEXT_OUT, <<"ZZOZZ">>). -define(PLAINTEXT_OUT, <<"ZZOZZ">>).
@ -497,7 +498,7 @@ add_message_to_log(Nick1, Message, RoomJID, Opts,
{_, _, Microsecs} = Now, {_, _, Microsecs} = Now,
STimeUnique = io_lib:format("~s.~w", STimeUnique = io_lib:format("~s.~w",
[STime, Microsecs]), [STime, Microsecs]),
fw(F, catch fw(F,
list_to_binary( list_to_binary(
io_lib:format("<a id=\"~s\" name=\"~s\" href=\"#~s\" " io_lib:format("<a id=\"~s\" name=\"~s\" href=\"#~s\" "
"class=\"ts\">[~s]</a> ", "class=\"ts\">[~s]</a> ",
@ -765,7 +766,8 @@ fw(F, S, O, FileFormat) ->
html -> html ->
S1; S1;
plaintext -> plaintext ->
S1x = ejabberd_regexp:greplace(S1, <<"<[^<^>]*>">>, <<"">>), S1a = ejabberd_regexp:greplace(S1, <<"<[^<^>]*>">>, <<"">>),
S1x = ejabberd_regexp:greplace(S1a, ?PLAINTEXT_CO, <<"~~">>),
S1y = ejabberd_regexp:greplace(S1x, ?PLAINTEXT_IN, <<"<">>), S1y = ejabberd_regexp:greplace(S1x, ?PLAINTEXT_IN, <<"<">>),
ejabberd_regexp:greplace(S1y, ?PLAINTEXT_OUT, <<">">>) ejabberd_regexp:greplace(S1y, ?PLAINTEXT_OUT, <<">">>)
end, end,
@ -967,13 +969,15 @@ put_room_occupants(F, RoomOccupants, Lang,
htmlize(S1) -> htmlize(S1, html). htmlize(S1) -> htmlize(S1, html).
htmlize(S1, plaintext) -> S1; htmlize(S1, plaintext) ->
ejabberd_regexp:greplace(S1, <<"~">>, ?PLAINTEXT_CO);
htmlize(S1, FileFormat) -> htmlize(S1, FileFormat) ->
htmlize(S1, false, FileFormat). htmlize(S1, false, FileFormat).
%% The NoFollow parameter tell if the spam prevention should be applied to the link found %% The NoFollow parameter tell if the spam prevention should be applied to the link found
%% true means 'apply nofollow on links'. %% true means 'apply nofollow on links'.
htmlize(S1, _NoFollow, plaintext) -> htmlize(S0, _NoFollow, plaintext) ->
S1 = ejabberd_regexp:greplace(S0, <<"~">>, ?PLAINTEXT_CO),
S1x = ejabberd_regexp:replace(S1, <<"<">>, ?PLAINTEXT_IN), S1x = ejabberd_regexp:replace(S1, <<"<">>, ?PLAINTEXT_IN),
ejabberd_regexp:replace(S1x, <<">">>, ?PLAINTEXT_OUT); ejabberd_regexp:replace(S1x, <<">">>, ?PLAINTEXT_OUT);
htmlize(S1, NoFollow, _FileFormat) -> htmlize(S1, NoFollow, _FileFormat) ->