[packages/ejabberd] - better source but still hangs
arekm
arekm at pld-linux.org
Wed Apr 12 13:24:58 CEST 2017
commit bb18ce7258b27fcc4395eb4ca247a9fffd233178
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Wed Apr 12 13:24:53 2017 +0200
- better source but still hangs
ejabberd-mod_logdb.patch | 186 +++++++++++++++++++++++------------------------
ejabberd.spec | 6 +-
2 files changed, 95 insertions(+), 97 deletions(-)
---
diff --git a/ejabberd.spec b/ejabberd.spec
index 0e629ad..b26cde2 100644
--- a/ejabberd.spec
+++ b/ejabberd.spec
@@ -10,7 +10,7 @@ Summary: Fault-tolerant distributed Jabber/XMPP server
Summary(pl.UTF-8): Odporny na awarie rozproszony serwer Jabbera/XMPP
Name: ejabberd
Version: 17.04
-Release: 0.2
+Release: 0.3
License: GPL
Group: Applications/Communications
Source0: http://www.process-one.net/downloads/ejabberd/%{version}/%{name}-%{version}.tgz
@@ -64,9 +64,7 @@ Source29: ejabberd-xmpp-20170322.tar.gz
#
Patch0: %{name}-paths.patch
Patch1: %{name}-config.patch
-# not available for 13.10
-#Patch2: %{name}-vcard-access-get.patch
-# http://www.dp.uz.gov.ua/o.palij/mod_logdb/patch-mod_logdb-13.12.diff
+# https://github.com/paleg/ejabberd/tree/16.04-mod_logdb
Patch3: %{name}-mod_logdb.patch
Patch4: %{name}-no_sslv3_or_3des.patch
URL: http://www.ejabberd.im/
diff --git a/ejabberd-mod_logdb.patch b/ejabberd-mod_logdb.patch
index 430670c..64ff911 100644
--- a/ejabberd-mod_logdb.patch
+++ b/ejabberd-mod_logdb.patch
@@ -1,8 +1,8 @@
diff --git a/priv/msgs/nl.msg b/priv/msgs/nl.msg
-index c8bb951..f6f6dc5 100644
+index 8bb1c0eb..22c83f20 100644
--- a/priv/msgs/nl.msg
+++ b/priv/msgs/nl.msg
-@@ -375,3 +375,17 @@
+@@ -426,3 +426,17 @@
{"Your Jabber account was successfully created.","Uw Jabber-account is succesvol gecreeerd."}.
{"Your Jabber account was successfully deleted.","Uw Jabber-account is succesvol verwijderd."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Uw berichten aan ~s worden geblokkeerd. Om ze te deblokkeren, ga naar ~s"}.
@@ -21,10 +21,10 @@ index c8bb951..f6f6dc5 100644
+{"Body", "Berichtveld"}.
+{"Messages", "Berichten"}.
diff --git a/priv/msgs/pl.msg b/priv/msgs/pl.msg
-index 46e2f77..139dc5d 100644
+index 03fbd3d0..89d09f34 100644
--- a/priv/msgs/pl.msg
+++ b/priv/msgs/pl.msg
-@@ -375,3 +375,29 @@
+@@ -438,3 +438,29 @@
{"Your Jabber account was successfully created.","Twoje konto zostało stworzone."}.
{"Your Jabber account was successfully deleted.","Twoje konto zostało usunięte."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Twoje wiadomości do ~s są blokowane. Aby je odblokować, odwiedź ~s"}.
@@ -55,10 +55,10 @@ index 46e2f77..139dc5d 100644
+{"Purge messages older than (days)", "Usuń wiadomości starsze niż (w dniach)"}.
+{"Poll users settings (seconds)", "Czas aktualizacji preferencji użytkowników (sekundy)"}.
diff --git a/priv/msgs/ru.msg b/priv/msgs/ru.msg
-index e5ea42e..10575d0 100644
+index 7acab78f..18af522a 100644
--- a/priv/msgs/ru.msg
+++ b/priv/msgs/ru.msg
-@@ -375,3 +375,33 @@
+@@ -426,3 +426,33 @@
{"Your Jabber account was successfully created.","Ваш Jabber-аккаунт был успешно создан."}.
{"Your Jabber account was successfully deleted.","Ваш Jabber-аккаунт был успешно удален."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Ваши сообщения к ~s блокируются. Для снятия блокировки перейдите по ссылке ~s"}.
@@ -93,10 +93,10 @@ index e5ea42e..10575d0 100644
+{"Do not drop", "Не удалять"}.
+{"Drop messages on user removal", "Удалять сообщения при удалении пользователя"}.
diff --git a/priv/msgs/uk.msg b/priv/msgs/uk.msg
-index f6f9553..56b5dd5 100644
+index 568ac092..3a324ed1 100644
--- a/priv/msgs/uk.msg
+++ b/priv/msgs/uk.msg
-@@ -367,3 +367,33 @@
+@@ -438,3 +438,33 @@
{"Your Jabber account was successfully created.","Ваш Jabber-акаунт було успішно створено."}.
{"Your Jabber account was successfully deleted.","Ваш Jabber-акаунт було успішно видалено."}.
{"Your messages to ~s are being blocked. To unblock them, visit ~s","Ваші повідомлення до ~s блокуються. Для розблокування відвідайте ~s"}.
@@ -132,7 +132,7 @@ index f6f9553..56b5dd5 100644
+{"Drop messages on user removal", "Видаляти повідомлення під час видалення користувача"}.
diff --git a/src/gen_logdb.erl b/src/gen_logdb.erl
new file mode 100644
-index 0000000..06a894b
+index 00000000..06a894b4
--- /dev/null
+++ b/src/gen_logdb.erl
@@ -0,0 +1,164 @@
@@ -302,10 +302,10 @@ index 0000000..06a894b
+ undefined.
diff --git a/src/mod_logdb.erl b/src/mod_logdb.erl
new file mode 100644
-index 0000000..72f1982
+index 00000000..79e2d3d3
--- /dev/null
+++ b/src/mod_logdb.erl
-@@ -0,0 +1,2169 @@
+@@ -0,0 +1,2174 @@
+%%%----------------------------------------------------------------------
+%%% File : mod_logdb.erl
+%%% Author : Oleg Palij (mailto,xmpp:o.palij at gmail.com)
@@ -495,6 +495,26 @@ index 0000000..72f1982
+ ok = supervisor:terminate_child(ejabberd_sup, Proc),
+ ok = supervisor:delete_child(ejabberd_sup, Proc).
+
++mod_opt_type(dbs) ->
++ fun (A) when is_list(A) -> A end;
++mod_opt_type(vhosts) ->
++ fun (A) when is_list(A) -> A end;
++mod_opt_type(poll_users_settings) ->
++ fun (I) when is_integer(I) -> I end;
++mod_opt_type(groupchat) ->
++ fun (all) -> all;
++ (send) -> send;
++ (none) -> none
++ end;
++mod_opt_type(dolog_default) ->
++ fun (B) when is_boolean(B) -> B end;
++mod_opt_type(ignore_jids) ->
++ fun (A) when is_list(A) -> A end;
++mod_opt_type(purge_older_days) ->
++ fun (I) when is_integer(I) -> I end;
++mod_opt_type(_) ->
++ [dbs, vhosts, poll_users_settings, groupchat, dolog_default, ignore_jids, purge_older_days].
++
+handle_call({cleanup}, _From, State) ->
+ cleanup(State),
+ ?MYDEBUG("Cleanup finished!!!!!", []),
@@ -780,7 +800,9 @@ index 0000000..72f1982
+ {ok, State}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
++%
+% ejabberd_hooks callbacks
++%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TODO: change to/from to list as sql stores it as list
+send_packet(P, _C2SState, Owner, Peer) ->
@@ -832,12 +854,12 @@ index 0000000..72f1982
+% handle_cast({addlog, E}, _)
+% raw packet -> #msg
+packet_parse(Owner, Peer, Packet, Direction, State) ->
-+ case xml:get_subtag(Packet, <<"body">>) of
++ case fxml:get_subtag(Packet, <<"body">>) of
+ false ->
+ ignore;
+ Body_xml ->
+ Message_type =
-+ case xml:get_tag_attr_s(<<"type">>, Packet) of
++ case fxml:get_tag_attr_s(<<"type">>, Packet) of
+ <<"error">> -> throw(ignore);
+ [] -> <<"normal">>;
+ MType -> MType
@@ -869,13 +891,13 @@ index 0000000..72f1982
+ ok
+ end,
+
-+ Message_body = xml:get_tag_cdata(Body_xml),
++ Message_body = fxml:get_tag_cdata(Body_xml),
+ Message_subject =
-+ case xml:get_subtag(Packet, <<"subject">>) of
++ case fxml:get_subtag(Packet, <<"subject">>) of
+ false ->
+ <<"">>;
+ Subject_xml ->
-+ xml:get_tag_cdata(Subject_xml)
++ fxml:get_tag_cdata(Subject_xml)
+ end,
+
+ OwnerName = stringprep:tolower(Owner#jid.user),
@@ -917,7 +939,7 @@ index 0000000..72f1982
+ true -> State#state.dolog_default
+ end;
+ _ -> State#state.dolog_default
-+ end,
++ end,
+ lists:all(fun(O) -> O end,
+ [not lists:member(OwnerBin, State#state.ignore_jids),
+ not lists:member(PeerBin, State#state.ignore_jids),
@@ -1565,10 +1587,10 @@ index 0000000..72f1982
+ {result, Its} -> Its;
+ empty -> []
+ end,
-+ Nodes = recursively_get_local_items(LServer, "", Server, Lang),
++ Nodes = recursively_get_local_items(LServer, <<"">>, Server, Lang),
+ Nodes1 = lists:filter(
+ fun(N) ->
-+ Nd = xml:get_tag_attr_s("node", N),
++ Nd = fxml:get_tag_attr_s("node", N),
+ F = get_local_features([], From, To, Nd, Lang),
+ case F of
+ {result, [?NS_COMMANDS]} ->
@@ -1592,8 +1614,8 @@ index 0000000..72f1982
+ Nodes = lists:flatten(
+ lists:map(
+ fun(N) ->
-+ S = xml:get_tag_attr_s("jid", N),
-+ Nd = xml:get_tag_attr_s("node", N),
++ S = fxml:get_tag_attr_s("jid", N),
++ Nd = fxml:get_tag_attr_s("node", N),
+ if (S /= Server) or (Nd == "") ->
+ [];
+ true ->
@@ -1692,7 +1714,7 @@ index 0000000..72f1982
+ dolog_list=DLL,
+ donotlog_list=DNLL} = get_user_settings(LUser, LServer),
+ {result,
-+ [#xmlel{name = <<"x">>,
++ [#xmlel{name = <<"x">>,
+ attrs = [{<<"xmlns">>, ?NS_XDATA}],
+ children = [
+ #xmlel{name = <<"title">>, attrs = [],
@@ -1708,7 +1730,7 @@ index 0000000..72f1982
+ attrs = [{<<"type">>, <<"list-single">>},
+ {<<"label">>, ?T(Lang, <<"Default">>)},
+ {<<"var">>, <<"dolog_default">>}],
-+ children =
++ children =
+ [?DEFVAL(jlib:atom_to_binary(DLD)),
+ ?LISTLINE(<<"Log Messages">>, <<"true">>),
+ ?LISTLINE(<<"Do Not Log Messages">>, <<"false">>)
@@ -1758,7 +1780,7 @@ index 0000000..72f1982
+ attrs = [{<<"xmlns">>, ?NS_XDATA}],
+ children = [#xmlel{name = <<"title">>, attrs = [],
+ children =
-+ [{xmlcdata,
++ [{xmlcdata,
+ <<(?T(Lang, <<"Messages logging engine settings">>))/binary,
+ (iolist_to_binary(" (run-time)"))/binary >>}]},
+ #xmlel{name = <<"instructions">>, attrs = [],
@@ -1781,7 +1803,7 @@ index 0000000..72f1982
+ attrs = [{<<"type">>, <<"list-single">>},
+ {<<"label">>, ?T(Lang, <<"Default">>)},
+ {<<"var">>, <<"dolog_default">>}],
-+ children =
++ children =
+ [?DEFVAL(jlib:atom_to_binary(DLD)),
+ ?LISTLINE(<<"Log Messages">>, <<"true">>),
+ ?LISTLINE(<<"Do Not Log Messages">>, <<"false">>)
@@ -1790,7 +1812,7 @@ index 0000000..72f1982
+ attrs = [{<<"type">>, <<"list-single">>},
+ {<<"label">>, ?T(Lang, <<"Drop messages on user removal">>)},
+ {<<"var">>, <<"drop_messages_on_user_removal">>}],
-+ children =
++ children =
+ [?DEFVAL(jlib:atom_to_binary(MRemoval)),
+ ?LISTLINE(<<"Drop">>, <<"true">>),
+ ?LISTLINE(<<"Do not drop">>, <<"false">>)
@@ -1799,7 +1821,7 @@ index 0000000..72f1982
+ attrs = [{<<"type">>, <<"list-single">>},
+ {<<"label">>, ?T(Lang, <<"Groupchat messages logging">>)},
+ {<<"var">>, <<"groupchat">>}],
-+ children =
++ children =
+ [?DEFVAL(jlib:atom_to_binary(GroupChat)),
+ ?LISTLINE(<<"all">>, <<"all">>),
+ ?LISTLINE(<<"none">>, <<"none">>),
@@ -2053,7 +2075,7 @@ index 0000000..72f1982
+ case length(SUsers) of
+ N when N =< 100 ->
+ lists:map(fun({S, U}) ->
-+ ?NODE(<< U/binary, "@", S/binary >>,
++ ?NODE(<< U/binary, "@", S/binary >>,
+ << (iolist_to_binary("mod_logdb_users/"))/binary, U/binary, "@", S/binary >>)
+ end,
+ SUsers);
@@ -2222,7 +2244,7 @@ index 0000000..72f1982
+ UserBin = iolist_to_binary(User),
+ ID = jlib:encode_base64( << UserBin/binary, Server/binary >> ),
+ ?XE(<<"tr">>,
-+ [?XAE(<<"td">>, [{<<"class">>, <<"valign">>}],
++ [?XAE(<<"td">>, [{<<"class">>, <<"valign">>}],
+ [?INPUT(<<"checkbox">>, <<"selected">>, ID)]),
+ ?XE(<<"td">>, [?AC(<< <<"../user/">>/binary, UserBin/binary, <<"/messages/">>/binary, Date/binary >>, UserBin)]),
+ ?XC(<<"td">>, integer_to_binary(Count))
@@ -2458,26 +2480,9 @@ index 0000000..72f1982
+ ]
+ )]
+ end.
-+mod_opt_type(dbs) ->
-+ fun (A) -> A end;
-+mod_opt_type(vhosts) ->
-+ fun (A) -> A end;
-+mod_opt_type(poll_users_settings) ->
-+ fun (I) when is_integer(I), I > 0 -> I end;
-+mod_opt_type(dolog_default) ->
-+ fun (A) when is_boolean(A) -> A end;
-+mod_opt_type(drop_messages_on_user_removal) ->
-+ fun (A) when is_boolean(A) -> A end;
-+mod_opt_type(ignore_jids) ->
-+ fun (A) -> A end;
-+mod_opt_type(groupchat) ->
-+ fun (A) -> A end;
-+mod_opt_type(purge_older_days) ->
-+ fun (I) when is_integer(I), I > 0 -> I end;
-+mod_opt_type(_) -> [dbs, vhosts, poll_users_settings, dolog_default, drop_messages_on_user_removal, ignore_jids, groupchat, purge_older_days].
diff --git a/src/mod_logdb.hrl b/src/mod_logdb.hrl
new file mode 100644
-index 0000000..d44f0df
+index 00000000..d44f0df5
--- /dev/null
+++ b/src/mod_logdb.hrl
@@ -0,0 +1,35 @@
@@ -2518,10 +2523,10 @@ index 0000000..d44f0df
+ {<<"checked">>, <<"true">>}])).
diff --git a/src/mod_logdb_mnesia.erl b/src/mod_logdb_mnesia.erl
new file mode 100644
-index 0000000..a8ae766
+index 00000000..a8ae7664
--- /dev/null
+++ b/src/mod_logdb_mnesia.erl
-@@ -0,0 +1,558 @@
+@@ -0,0 +1,557 @@
+%%%----------------------------------------------------------------------
+%%% File : mod_logdb_mnesia.erl
+%%% Author : Oleg Palij (mailto,xmpp:o.palij at gmail.com)
@@ -2545,7 +2550,7 @@ index 0000000..a8ae766
+% gen_server
+-export([code_change/3,handle_call/3,handle_cast/2,handle_info/2,init/1,terminate/2]).
+% gen_mod
-+-export([start/2, stop/1, mod_opt_type/1]).
++-export([start/2, stop/1]).
+% gen_logdb
+-export([log_message/2,
+ rebuild_stats/1,
@@ -3079,13 +3084,12 @@ index 0000000..a8ae766
+ {type, bag},
+ {attributes, record_info(fields, msg)},
+ {record_name, msg}]).
-+mod_opt_type(_) -> [].
diff --git a/src/mod_logdb_mnesia_old.erl b/src/mod_logdb_mnesia_old.erl
new file mode 100644
-index 0000000..e962d9a
+index 00000000..e962d9a8
--- /dev/null
+++ b/src/mod_logdb_mnesia_old.erl
-@@ -0,0 +1,260 @@
+@@ -0,0 +1,259 @@
+%%%----------------------------------------------------------------------
+%%% File : mod_logdb_mnesia_old.erl
+%%% Author : Oleg Palij (mailto,xmpp:o.palij at gmail.com)
@@ -3104,7 +3108,7 @@ index 0000000..e962d9a
+
+-behaviour(gen_logdb).
+
-+-export([start/2, stop/1, mod_opt_type/1,
++-export([start/2, stop/1,
+ log_message/2,
+ rebuild_stats/1,
+ rebuild_stats_at/2,
@@ -3345,13 +3349,12 @@ index 0000000..e962d9a
+ ?ERROR_MSG("Failed to create stats table: ~p", [Reason]),
+ error
+ end.
-+mod_opt_type(_) -> [].
diff --git a/src/mod_logdb_mysql.erl b/src/mod_logdb_mysql.erl
new file mode 100644
-index 0000000..62f437c
+index 00000000..c805c920
--- /dev/null
+++ b/src/mod_logdb_mysql.erl
-@@ -0,0 +1,1056 @@
+@@ -0,0 +1,1055 @@
+%%%----------------------------------------------------------------------
+%%% File : mod_logdb_mysql.erl
+%%% Author : Oleg Palij (mailto,xmpp:o.palij at gmail.com)
@@ -3375,7 +3378,7 @@ index 0000000..62f437c
+% gen_server
+-export([code_change/3,handle_call/3,handle_cast/2,handle_info/2,init/1,terminate/2]).
+% gen_mod
-+-export([start/2, stop/1, mod_opt_type/1]).
++-export([start/2, stop/1]).
+% gen_logdb
+-export([log_message/2,
+ rebuild_stats/1,
@@ -3525,8 +3528,8 @@ index 0000000..62f437c
+ "'", Peer_resource_id, "',",
+ "'", atom_to_list(Msg#msg.direction), "',",
+ "'", binary_to_list(Msg#msg.type), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.subject) ), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.body) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.subject) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.body) ), "',",
+ "'", Msg#msg.timestamp, "');"],
+
+ Reply =
@@ -4344,7 +4347,7 @@ index 0000000..62f437c
+
+get_resource_id_from_db(DBRef, VHost, Resource) ->
+ SQuery = ["SELECT resource_id FROM ",resources_table(VHost)," ",
-+ "WHERE resource=\"",binary_to_list(ejabberd_odbc:escape(iolist_to_binary(Resource))),"\";"],
++ "WHERE resource=\"",binary_to_list(ejabberd_sql:escape(iolist_to_binary(Resource))),"\";"],
+ case sql_query_internal(DBRef, SQuery) of
+ % no such resource in db
+ {data, []} ->
@@ -4363,7 +4366,7 @@ index 0000000..62f437c
+ % no such resource in db
+ {ok, []} ->
+ IQuery = ["INSERT INTO ",resources_table(VHost)," ",
-+ "SET resource=\"",binary_to_list(ejabberd_odbc:escape(iolist_to_binary(Resource))),"\";"],
++ "SET resource=\"",binary_to_list(ejabberd_sql:escape(iolist_to_binary(Resource))),"\";"],
+ case sql_query_internal_silent(DBRef, IQuery) of
+ {updated, _} ->
+ {ok, NewId} = get_resource_id_from_db(DBRef, VHost, Resource),
@@ -4407,13 +4410,12 @@ index 0000000..62f437c
+get_result({error, MySQLRes}) ->
+ Reason = p1_mysql:get_result_reason(MySQLRes),
+ {error, Reason}.
-+mod_opt_type(_) -> [].
diff --git a/src/mod_logdb_mysql5.erl b/src/mod_logdb_mysql5.erl
new file mode 100644
-index 0000000..d1f399f
+index 00000000..04a546ea
--- /dev/null
+++ b/src/mod_logdb_mysql5.erl
-@@ -0,0 +1,985 @@
+@@ -0,0 +1,983 @@
+%%%----------------------------------------------------------------------
+%%% File : mod_logdb_mysql5.erl
+%%% Author : Oleg Palij (mailto,xmpp:o.palij at gmail.com)
@@ -4437,7 +4439,7 @@ index 0000000..d1f399f
+% gen_server
+-export([code_change/3,handle_call/3,handle_cast/2,handle_info/2,init/1,terminate/2]).
+% gen_mod
-+-export([start/2, stop/1, mod_opt_type/1]).
++-export([start/2, stop/1]).
+% gen_logdb
+-export([log_message/2,
+ rebuild_stats/1,
@@ -4782,11 +4784,11 @@ index 0000000..d1f399f
+ "'", binary_to_list(Msg#msg.owner_name), "',",
+ "'", binary_to_list(Msg#msg.peer_name), "',",
+ "'", binary_to_list(Msg#msg.peer_server), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.peer_resource) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.peer_resource) ), "',",
+ "'", atom_to_list(Msg#msg.direction), "',",
+ "'", binary_to_list(Msg#msg.type), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.subject) ), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.body) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.subject) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.body) ), "',",
+ "'", Msg#msg.timestamp, "');"],
+
+ case sql_query_internal(DBRef, Query) of
@@ -5270,8 +5272,6 @@ index 0000000..d1f399f
+ DBId
+ end.
+
-+mod_opt_type(_) -> [].
-+
+get_logmessage(VHost) ->
+ UName = users_table(VHost),
+ SName = servers_table(VHost),
@@ -5401,7 +5401,7 @@ index 0000000..d1f399f
+END;", [logmessage_name(VHost),UName,UName,UName,UName,SName,SName,RName,RName,UName,UName,SName,RName,StName,StName]).
diff --git a/src/mod_logdb_pgsql.erl b/src/mod_logdb_pgsql.erl
new file mode 100644
-index 0000000..3c2ae95
+index 00000000..29bed039
--- /dev/null
+++ b/src/mod_logdb_pgsql.erl
@@ -0,0 +1,1108 @@
@@ -5431,7 +5431,7 @@ index 0000000..3c2ae95
+% gen_server
+-export([code_change/3,handle_call/3,handle_cast/2,handle_info/2,init/1,terminate/2]).
+% gen_mod
-+-export([start/2, stop/1, mod_opt_type/1]).
++-export([start/2, stop/1]).
+% gen_logdb
+-export([log_message/2,
+ rebuild_stats/1,
@@ -5570,11 +5570,11 @@ index 0000000..3c2ae95
+ "'", binary_to_list(Msg#msg.owner_name), "',",
+ "'", binary_to_list(Msg#msg.peer_name), "',",
+ "'", binary_to_list(Msg#msg.peer_server), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.peer_resource) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.peer_resource) ), "',",
+ "'", atom_to_list(Msg#msg.direction), "',",
+ "'", binary_to_list(Msg#msg.type), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.subject) ), "',",
-+ "'", binary_to_list( ejabberd_odbc:escape(Msg#msg.body) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.subject) ), "',",
++ "'", binary_to_list( ejabberd_sql:escape(Msg#msg.body) ), "',",
+ "'", Msg#msg.timestamp, "');"],
+
+ case sql_query_internal_silent(DBRef, Query) of
@@ -6512,29 +6512,29 @@ index 0000000..3c2ae95
+ {error, Error};
+get_result(Rez) ->
+ {error, undefined, Rez}.
-+mod_opt_type(_) -> [].
++
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
-index df06bce..b460f46 100644
+index c9c78575..4db4895a 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
-@@ -545,6 +545,12 @@ handle_sync_event({process_item_change,
+@@ -538,6 +538,12 @@ handle_sync_event({process_item_change,
NSD ->
{reply, {ok, NSD}, StateName, NSD}
end;
+handle_sync_event({get_jid_nick, Jid}, _From, StateName, StateData) ->
-+ R = case (?DICT):find(jlib:jid_tolower(Jid), StateData#state.users) of
-+ error -> [];
-+ {ok, {user, _, Nick, _, _}} -> Nick
-+ end,
-+ {reply, R, StateName, StateData};
++ R = case (?DICT):find(jlib:jid_tolower(Jid), StateData#state.users) of
++ error -> [];
++ {ok, {user, _, Nick, _, _}} -> Nick
++ end,
++ {reply, R, StateName, StateData};
handle_sync_event(get_subscribers, _From, StateName, StateData) ->
JIDs = lists:map(fun jid:make/1,
?DICT:fetch_keys(StateData#state.subscribers)),
diff --git a/src/mod_roster.erl b/src/mod_roster.erl
-index 31fbeb1..764a628 100644
+index b3a627f7..761e234d 100644
--- a/src/mod_roster.erl
+++ b/src/mod_roster.erl
-@@ -63,6 +63,8 @@
+@@ -62,6 +62,8 @@
-include("ejabberd_web_admin.hrl").
@@ -6542,8 +6542,8 @@ index 31fbeb1..764a628 100644
+
-export_type([subscription/0]).
- start(Host, Opts) ->
-@@ -1426,6 +1428,14 @@ user_roster(User, Server, Query, Lang) ->
+ -callback init(binary(), gen_mod:opts()) -> any().
+@@ -941,6 +943,14 @@ user_roster(User, Server, Query, Lang) ->
Query),
Items = get_roster(LUser, LServer),
SItems = lists:sort(Items),
@@ -6558,7 +6558,7 @@ index 31fbeb1..764a628 100644
FItems = case SItems of
[] -> [?CT(<<"None">>)];
_ ->
-@@ -1483,7 +1493,33 @@ user_roster(User, Server, Query, Lang) ->
+@@ -998,7 +1008,33 @@ user_roster(User, Server, Query, Lang) ->
[?INPUTT(<<"submit">>,
<<"remove",
(ejabberd_web_admin:term_to_id(R#roster.jid))/binary>>,
@@ -6583,7 +6583,7 @@ index 31fbeb1..764a628 100644
+
+ ?XAE(<<"td">>, [{<<"class">>, <<"valign">>}],
+ [?INPUTT(<<"submit">>,
-+ <<Name,
++ <<Name/binary,
+ (ejabberd_web_admin:term_to_id(R#roster.jid))/binary>>,
+ Value)]);
+ false ->
@@ -6593,7 +6593,7 @@ index 31fbeb1..764a628 100644
end,
SItems)))])]
end,
-@@ -1608,9 +1644,42 @@ user_roster_item_parse_query(User, Server, Items,
+@@ -1123,9 +1159,42 @@ user_roster_item_parse_query(User, Server, Items,
=
[]}]}}),
throw(submitted);
@@ -6602,7 +6602,7 @@ index 31fbeb1..764a628 100644
- end
+ false ->
+ case lists:keysearch(
-+ <<"donotlog">>, (ejabberd_web_admin:term_to_id(JID))/binary, 1, Query) of
++ <<"donotlog", (ejabberd_web_admin:term_to_id(JID))/binary>>, 1, Query) of
+ {value, _} ->
+ Peer = jlib:jid_to_string(JID),
+ Settings = mod_logdb:get_user_settings(User, Server),
@@ -6617,7 +6617,7 @@ index 31fbeb1..764a628 100644
+ throw(nothing);
+ false ->
+ case lists:keysearch(
-+ <<"dolog">>, (ejabberd_web_admin:term_to_id(JID))/binary, 1, Query) of
++ <<"dolog", (ejabberd_web_admin:term_to_id(JID))/binary>>, 1, Query) of
+ {value, _} ->
+ Peer = jlib:jid_to_string(JID),
+ Settings = mod_logdb:get_user_settings(User, Server),
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ejabberd.git/commitdiff/bb18ce7258b27fcc4395eb4ca247a9fffd233178
More information about the pld-cvs-commit
mailing list