[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