From e0e58711bb3c76350bdc9b1bf9fb03d53e254a6d Mon Sep 17 00:00:00 2001 From: Pablo Polvorin Date: Thu, 8 Jan 2009 14:54:00 +0000 Subject: [PATCH] XML attributes as binary(). Change Node argument to binary in the following hooks: disco_local_items, disco_local_features, disco_local_identity, disco_sm_items and disco_sm_identity. SVN Revision: 1780 --- ChangeLog | 15 ++ src/adhoc.erl | 10 +- src/ejabberd_c2s.erl | 4 +- src/ejabberd_s2s_in.erl | 4 +- src/ejabberd_s2s_out.erl | 4 +- src/ejabberd_service.erl | 8 +- src/mod_adhoc.erl | 57 +++--- src/mod_announce.erl | 114 +++++------ src/mod_configure.erl | 311 +++++++++++++++-------------- src/mod_configure2.erl | 12 +- src/mod_disco.erl | 60 +++--- src/mod_irc/mod_irc.erl | 32 +-- src/mod_irc/mod_irc_connection.erl | 68 +++---- src/mod_last.erl | 4 +- src/mod_last_odbc.erl | 4 +- src/mod_muc/mod_muc.erl | 9 +- src/mod_offline_odbc.erl | 4 +- src/mod_privacy.erl | 38 ++-- src/mod_privacy_odbc.erl | 38 ++-- src/mod_pubsub/mod_pubsub.erl | 13 +- src/mod_roster.erl | 18 +- src/mod_roster.hrl | 2 +- src/mod_roster_odbc.erl | 22 +- src/mod_stats.erl | 102 +++++----- src/mod_vcard.erl | 92 ++++----- src/mod_vcard_ldap.erl | 28 +-- src/mod_vcard_odbc.erl | 92 ++++----- src/web/ejabberd_http_poll.erl | 4 +- 28 files changed, 596 insertions(+), 573 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0dfeb25eb..b03b74aee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2009-01-08 Pablo Polvorin + * src/mod_vcard_ldap.erl, src/mod_muc/mod_muc.erl, src/mod_roster.hrl, + src/mod_offline_odbc.erl, src/ejabberd_s2s_in.erl, src/adhoc.erl, + src/mod_configure.erl, src/mod_irc/mod_irc_connection.erl, + src/mod_irc/mod_irc.erl, src/web/ejabberd_http_poll.erl, + src/mod_privacy_odbc.erl, src/ejabberd_c2s.erl, src/mod_announce.erl, + src/mod_privacy.erl, src/mod_adhoc.erl, src/mod_pubsub/mod_pubsub.erl, + src/mod_vcard_odbc.erl, src/mod_stats.erl, src/mod_last.erl, + src/mod_roster.erl, src/ejabberd_service.erl, src/mod_disco.erl, + src/mod_configure2.erl, src/mod_roster_odbc.erl, src/ejabberd_s2s_out.erl, + src/mod_last_odbc.erl: XML attributes as binary(). Change Node argument + to binary in the following hooks: disco_local_items, disco_local_features, + disco_local_identity, disco_sm_items and disco_sm_identity. + + 2009-01-05 Pablo Polvorin * src/mod_roster.erl: Fix typo. diff --git a/src/adhoc.erl b/src/adhoc.erl index 26ea5a7c2..32f4d4038 100644 --- a/src/adhoc.erl +++ b/src/adhoc.erl @@ -113,7 +113,7 @@ produce_response(#adhoc_response{lang = _Lang, "" -> ActionsElAttrs = []; _ -> - ActionsElAttrs = [#xmlattr{name = 'execute', value = DefaultAction}] + ActionsElAttrs = [#xmlattr{name = 'execute', value = list_to_binary(DefaultAction)}] end, ActionsEls = [#xmlel{ns = ?NS_ADHOC, name = 'actions', attrs = ActionsElAttrs, children = @@ -121,11 +121,11 @@ produce_response(#adhoc_response{lang = _Lang, end, NotesEls = lists:map(fun({Type, Text}) -> #xmlel{ns = ?NS_ADHOC, name = 'note', attrs = - [#xmlattr{name = 'type', value = Type}], + [#xmlattr{name = 'type', value = list_to_binary(Type)}], children = [#xmlcdata{cdata = list_to_binary(Text)}]} end, Notes), #xmlel{ns = ?NS_ADHOC, name = 'command', attrs = - [#xmlattr{name = 'sessionid', value = SessionID}, - #xmlattr{name = 'node', value = Node}, - #xmlattr{name = 'status', value = atom_to_list(Status)}], children = + [#xmlattr{name = 'sessionid', value = list_to_binary(SessionID)}, + #xmlattr{name = 'node', value = list_to_binary(Node)}, + #xmlattr{name = 'status', value = list_to_binary(atom_to_list(Status))}], children = ActionsEls ++ NotesEls ++ Elements}. diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index 2a806fbc1..34b124587 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -837,7 +837,7 @@ session_established2(El, StateData) -> undefined -> exmpp_jid:jid_to_bare_jid(StateData#state.jid); _ -> - exmpp_jid:list_to_jid(To) + exmpp_jid:binary_to_jid(To) end, NewEl = case exmpp_stanza:get_lang(El) of undefined -> @@ -1923,7 +1923,7 @@ check_from(El, FromJID) -> El; SJID -> try - JID = exmpp_jid:list_to_jid(SJID), + JID = exmpp_jid:binary_to_jid(SJID), case exmpp_jid:compare_jids(JID, FromJID) of true -> El; diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl index 2092415ba..703e20cd9 100644 --- a/src/ejabberd_s2s_in.erl +++ b/src/ejabberd_s2s_in.erl @@ -371,7 +371,7 @@ stream_established({xmlstreamelement, El}, StateData) -> error; F -> try - exmpp_jid:list_to_jid(F) + exmpp_jid:binary_to_jid(F) catch _Exception1 -> error end @@ -381,7 +381,7 @@ stream_established({xmlstreamelement, El}, StateData) -> error; T -> try - exmpp_jid:list_to_jid(T) + exmpp_jid:binary_to_jid(T) catch _Exception2 -> error end diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl index 88f2e8aad..ea4078db0 100644 --- a/src/ejabberd_s2s_out.erl +++ b/src/ejabberd_s2s_out.erl @@ -807,8 +807,8 @@ bounce_element(El, Condition) -> "result" -> ok; _ -> Err = exmpp_stanza:reply_with_error(El, Condition), - From = exmpp_jid:list_to_jid(exmpp_stanza:get_sender(El)), - To = exmpp_jid:list_to_jid(exmpp_stanza:get_recipient(El)), + From = exmpp_jid:binary_to_jid(exmpp_stanza:get_sender(El)), + To = exmpp_jid:binary_to_jid(exmpp_stanza:get_recipient(El)), % No namespace conversion (:server <-> :client) is done. % This is handled by C2S and S2S send_element functions. ejabberd_router:route(To, From, Err) diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl index 3a819c130..bc8266b19 100644 --- a/src/ejabberd_service.erl +++ b/src/ejabberd_service.erl @@ -154,7 +154,7 @@ wait_for_stream({xmlstreamstart, #xmlel{ns = NS, attrs = Attrs}}, StateData) -> %% component served by this Jabber server. %% However several transports don't respect that, %% so ejabberd doesn't check 'to' attribute (EJAB-717) - To = exmpp_stanza:get_recipient_from_attrs(Attrs), + To = binary_to_list(exmpp_stanza:get_recipient_from_attrs(Attrs)), Opening_Reply = exmpp_stream:opening_reply(xml:crypt(To), ?NS_COMPONENT_ACCEPT, {0, 0}, StateData#state.streamid), @@ -227,10 +227,10 @@ stream_established({xmlstreamelement, El}, StateData) -> %% when accept packets from any address. %% In this case, the component can send packet of %% behalf of the server users. - false -> exmpp_jid:list_to_jid(From); + false -> exmpp_jid:binary_to_jid(From); %% The default is the standard behaviour in XEP-0114 _ -> - FromJID1 = exmpp_jib:string_to_jid(From), + FromJID1 = exmpp_jid:binary_to_jid(From), Server = exmpp_jid:ldomain_as_list(FromJID1), case lists:member(Server, StateData#state.hosts) of true -> FromJID1; @@ -240,7 +240,7 @@ stream_established({xmlstreamelement, El}, StateData) -> To = exmpp_stanza:get_recipient(El), ToJID = case To of undefined -> error; - _ -> exmpp_jib:string_to_jid(To) + _ -> exmpp_jib:binary_to_jid(To) end, if ((El#xmlel.name == 'iq') or (El#xmlel.name == 'message') or diff --git a/src/mod_adhoc.erl b/src/mod_adhoc.erl index 70f2900f2..9a92347ed 100644 --- a/src/mod_adhoc.erl +++ b/src/mod_adhoc.erl @@ -81,8 +81,8 @@ stop(Host) -> %------------------------------------------------------------------------- -get_local_commands(Acc, _From, To, "", Lang) -> - Server = exmpp_jid:domain_as_list(To), +get_local_commands(Acc, _From, To, <<>>, Lang) -> + Server = exmpp_jid:domain(To), LServer = exmpp_jid:ldomain_as_list(To), Display = gen_mod:get_module_opt(LServer, ?MODULE, report_commands_node, false), case Display of @@ -96,16 +96,17 @@ get_local_commands(Acc, _From, To, "", Lang) -> Nodes = [#xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = [#xmlattr{name = 'jid', value = Server}, - #xmlattr{name = 'node', value = ?NS_ADHOC_s}, - #xmlattr{name = 'name', value = translate:translate(Lang, "Commands")}] + #xmlattr{name = 'node', value = list_to_binary(?NS_ADHOC_s)}, + #xmlattr{name = 'name', + value = list_to_binary(translate:translate(Lang, "Commands"))}] }], {result, Items ++ Nodes} end; -get_local_commands(_Acc, From, To, ?NS_ADHOC_s, Lang) -> +get_local_commands(_Acc, From, To, ?NS_ADHOC_b, Lang) -> ejabberd_hooks:run_fold(adhoc_local_items, exmpp_jid:ldomain(To), {result, []}, [From, To, Lang]); -get_local_commands(_Acc, _From, _To, "ping", _Lang) -> +get_local_commands(_Acc, _From, _To, <<"ping">>, _Lang) -> {result, []}; get_local_commands(Acc, _From, _To, _Node, _Lang) -> @@ -113,7 +114,7 @@ get_local_commands(Acc, _From, _To, _Node, _Lang) -> %------------------------------------------------------------------------- -get_sm_commands(Acc, _From, To, "", Lang) -> +get_sm_commands(Acc, _From, To, <<>>, Lang) -> LServer = exmpp_jid:ldomain_as_list(To), Display = gen_mod:get_module_opt(LServer, ?MODULE, report_commands_node, false), case Display of @@ -126,14 +127,14 @@ get_sm_commands(Acc, _From, To, "", Lang) -> end, Nodes = [#xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(To)}, - #xmlattr{name = 'node', value = ?NS_ADHOC_s}, - #xmlattr{name = 'name', value = translate:translate(Lang, "Commands")}] + [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_binary(To)}, + #xmlattr{name = 'node', value = list_to_binary(?NS_ADHOC_s)}, + #xmlattr{name = 'name', value = list_to_binary(translate:translate(Lang, "Commands"))}] }], {result, Items ++ Nodes} end; -get_sm_commands(_Acc, From, To, ?NS_ADHOC_s, Lang) -> +get_sm_commands(_Acc, From, To, ?NS_ADHOC_b, Lang) -> ejabberd_hooks:run_fold(adhoc_sm_items, exmpp_jid:ldomain(To), {result, []}, [From, To, Lang]); get_sm_commands(Acc, _From, _To, _Node, _Lang) -> @@ -142,17 +143,17 @@ get_sm_commands(Acc, _From, _To, _Node, _Lang) -> %------------------------------------------------------------------------- %% On disco info request to the ad-hoc node, return automation/command-list. -get_local_identity(Acc, _From, _To, ?NS_ADHOC_s, Lang) -> +get_local_identity(Acc, _From, _To, ?NS_ADHOC_b, Lang) -> [#xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = - [#xmlattr{name = 'category', value = "automation"}, - #xmlattr{name = 'type', value = "command-list"}, - #xmlattr{name = 'name', value = translate:translate(Lang, "Commands")}]} | Acc]; + [#xmlattr{name = 'category', value = <<"automation">>}, + #xmlattr{name = 'type', value = <<"command-list">>}, + #xmlattr{name = 'name', value = list_to_binary(translate:translate(Lang, "Commands"))}]} | Acc]; -get_local_identity(Acc, _From, _To, "ping", Lang) -> +get_local_identity(Acc, _From, _To, <<"ping">>, Lang) -> [#xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = - [#xmlattr{name = 'category', value = "automation"}, - #xmlattr{name = 'type', value = "command-node"}, - #xmlattr{name = 'name', value = translate:translate(Lang, "Ping")}]} | Acc]; + [#xmlattr{name = 'category', value = <<"automation">>}, + #xmlattr{name = 'type', value = <<"command-node">>}, + #xmlattr{name = 'name', value = list_to_binary(translate:translate(Lang, "Ping"))}]} | Acc]; get_local_identity(Acc, _From, _To, _Node, _Lang) -> Acc. @@ -162,27 +163,27 @@ get_local_identity(Acc, _From, _To, _Node, _Lang) -> %% On disco info request to the ad-hoc node, return automation/command-list. get_sm_identity(Acc, _From, _To, ?NS_ADHOC_s, Lang) -> [#xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = - [#xmlattr{name = 'category', value = "automation"}, - #xmlattr{name = 'type', value = "command-list"}, - #xmlattr{name = 'name', value = translate:translate(Lang, "Commands")}]} | Acc]; + [#xmlattr{name = 'category', value = <<"automation">>}, + #xmlattr{name = 'type', value = <<"command-list">>}, + #xmlattr{name = 'name', value = list_to_binary(translate:translate(Lang, "Commands"))}]} | Acc]; get_sm_identity(Acc, _From, _To, _Node, _Lang) -> Acc. %------------------------------------------------------------------------- -get_local_features(Acc, _From, _To, "", _Lang) -> +get_local_features(Acc, _From, _To, <<>>, _Lang) -> Feats = case Acc of {result, I} -> I; _ -> [] end, {result, Feats ++ [?NS_ADHOC_s]}; -get_local_features(_Acc, _From, _To, ?NS_ADHOC_s, _Lang) -> +get_local_features(_Acc, _From, _To, ?NS_ADHOC_b, _Lang) -> %% override all lesser features... {result, []}; -get_local_features(_Acc, _From, _To, "ping", _Lang) -> +get_local_features(_Acc, _From, _To, <<"ping">>, _Lang) -> %% override all lesser features... {result, [?NS_ADHOC_s]}; @@ -236,7 +237,7 @@ process_adhoc_request(From, To, IQ_Rec, Hook) -> ping_item(Acc, _From, To, Lang) -> - Server = exmpp_jid:domain_as_list(To), + Server = exmpp_jid:domain(To), Items = case Acc of {result, I} -> I; @@ -245,8 +246,8 @@ ping_item(Acc, _From, To, Lang) -> end, Nodes = [#xmlel{ns = ?NS_DISCO_INFO, name = 'item', attrs = [#xmlattr{name = 'jid', value = Server}, - #xmlattr{name = 'node', value = "ping"}, - #xmlattr{name = 'name', value = translate:translate(Lang, "Ping")}]}], + #xmlattr{name = 'node', value = <<"ping">>}, + #xmlattr{name = 'name', value = list_to_binary(translate:translate(Lang, "Ping"))}]}], {result, Items ++ Nodes}. diff --git a/src/mod_announce.erl b/src/mod_announce.erl index 7ef24156e..f3a7cbb37 100644 --- a/src/mod_announce.erl +++ b/src/mod_announce.erl @@ -179,12 +179,12 @@ announce(From, To, Packet) -> %% Announcing via ad-hoc commands -define(INFO_COMMAND(Lang, Node), [#xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = - [#xmlattr{name = 'category', value = "automation"}, - #xmlattr{name = 'type', value = "command-node"}, - #xmlattr{name = 'name', value = get_title(Lang, Node)}]}]). + [#xmlattr{name = 'category', value = <<"automation">>}, + #xmlattr{name = 'type', value = <<"command-node">>}, + #xmlattr{name = 'name', value = list_to_binary(get_title(Lang, Node))}]}]). disco_identity(Acc, _From, _To, Node, Lang) -> - LNode = tokenize(Node), + LNode = tokenize(binary_to_list(Node)), case LNode of ?NS_ADMINL("announce") -> ?INFO_COMMAND(Lang, Node); @@ -220,7 +220,7 @@ disco_identity(Acc, _From, _To, Node, Lang) -> {result, Feats} end). -disco_features(Acc, From, To, "announce", _Lang) -> +disco_features(Acc, From, To, <<"announce">>, _Lang) -> LServer = exmpp_jid:ldomain_as_list(To), case gen_mod:is_loaded(LServer, mod_adhoc) of false -> @@ -248,25 +248,25 @@ disco_features(Acc, From, To, Node, _Lang) -> AccessGlobal = gen_mod:get_module_opt(global, ?MODULE, access, none), AllowGlobal = acl:match_rule(global, AccessGlobal, From), case Node of - ?NS_ADMIN_s ++ "#announce" -> + <> -> ?INFO_RESULT(Allow, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#announce-all" -> + <> -> ?INFO_RESULT(Allow, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#set-motd" -> + <> -> ?INFO_RESULT(Allow, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#edit-motd" -> + <> -> ?INFO_RESULT(Allow, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#delete-motd" -> + <> -> ?INFO_RESULT(Allow, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#announce-allhosts" -> + <> -> ?INFO_RESULT(AllowGlobal, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#announce-all-allhosts" -> + <> -> ?INFO_RESULT(AllowGlobal, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#set-motd-allhosts" -> + <> -> ?INFO_RESULT(AllowGlobal, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#edit-motd-allhosts" -> + <> -> ?INFO_RESULT(AllowGlobal, [?NS_ADHOC_s]); - ?NS_ADMIN_s ++ "#delete-motd-allhosts" -> + <> -> ?INFO_RESULT(AllowGlobal, [?NS_ADHOC_s]); _ -> Acc @@ -279,7 +279,7 @@ disco_features(Acc, From, To, Node, _Lang) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = [#xmlattr{name = 'jid', value = Server}, #xmlattr{name = 'node', value = Node}, - #xmlattr{name = 'name', value = get_title(Lang, Node)}]}). + #xmlattr{name = 'name', value = list_to_binary(get_title(Lang, Node))}]}). -define(ITEMS_RESULT(Allow, Items), case Allow of @@ -289,9 +289,9 @@ disco_features(Acc, From, To, Node, _Lang) -> {result, Items} end). -disco_items(Acc, From, To, "", Lang) -> +disco_items(Acc, From, To, <<>>, Lang) -> LServer = exmpp_jid:ldomain_as_list(To), - Server = exmpp_jid:domain_as_list(To), + Server = exmpp_jid:domain(To), case gen_mod:is_loaded(LServer, mod_adhoc) of false -> @@ -308,12 +308,12 @@ disco_items(Acc, From, To, "", Lang) -> {result, I} -> I; _ -> [] end, - Nodes = [?NODE_TO_ITEM(Lang, Server, "announce")], + Nodes = [?NODE_TO_ITEM(Lang, Server, <<"announce">>)], {result, Items ++ Nodes} end end; -disco_items(Acc, From, To, "announce", Lang) -> +disco_items(Acc, From, To, <<"announce">>, Lang) -> LServer = exmpp_jid:ldomain_as_list(To), case gen_mod:is_loaded(LServer, mod_adhoc) of false -> @@ -333,25 +333,25 @@ disco_items(Acc, From, To, Node, _Lang) -> AccessGlobal = gen_mod:get_module_opt(global, ?MODULE, access, none), AllowGlobal = acl:match_rule(global, AccessGlobal, From), case Node of - ?NS_ADMIN_s ++ "#announce" -> + <> -> ?ITEMS_RESULT(Allow, []); - ?NS_ADMIN_s ++ "#announce-all" -> + <> -> ?ITEMS_RESULT(Allow, []); - ?NS_ADMIN_s ++ "#set-motd" -> + <> -> ?ITEMS_RESULT(Allow, []); - ?NS_ADMIN_s ++ "#edit-motd" -> + <> -> ?ITEMS_RESULT(Allow, []); - ?NS_ADMIN_s ++ "#delete-motd" -> + <> -> ?ITEMS_RESULT(Allow, []); - ?NS_ADMIN_s ++ "#announce-allhosts" -> + <> -> ?ITEMS_RESULT(AllowGlobal, []); - ?NS_ADMIN_s ++ "#announce-all-allhosts" -> + <> -> ?ITEMS_RESULT(AllowGlobal, []); - ?NS_ADMIN_s ++ "#set-motd-allhosts" -> + <> -> ?ITEMS_RESULT(AllowGlobal, []); - ?NS_ADMIN_s ++ "#edit-motd-allhosts" -> + <> -> ?ITEMS_RESULT(AllowGlobal, []); - ?NS_ADMIN_s ++ "#delete-motd-allhosts" -> + <> -> ?ITEMS_RESULT(AllowGlobal, []); _ -> Acc @@ -362,26 +362,26 @@ disco_items(Acc, From, To, Node, _Lang) -> announce_items(Acc, From, To, Lang) -> LServer = exmpp_jid:ldomain_as_list(To), - Server = exmpp_jid:domain_as_list(To), + Server = exmpp_jid:domain(To), Access1 = gen_mod:get_module_opt(LServer, ?MODULE, access, none), Nodes1 = case acl:match_rule(LServer, Access1, From) of allow -> - [?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#announce"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#announce-all"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#set-motd"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#edit-motd"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#delete-motd")]; + [?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>)]; deny -> [] end, Access2 = gen_mod:get_module_opt(global, ?MODULE, access, none), Nodes2 = case acl:match_rule(global, Access2, From) of allow -> - [?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#announce-allhosts"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#announce-all-allhosts"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#set-motd-allhosts"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#edit-motd-allhosts"), - ?NODE_TO_ITEM(Lang, Server, ?NS_ADMIN_s ++ "#delete-motd-allhosts")]; + [?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>), + ?NODE_TO_ITEM(Lang, Server, <>)]; deny -> [] end, @@ -481,17 +481,17 @@ announce_commands(From, To, end. -define(VVALUE(Val), - #xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Val)}]}). + #xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = Val}]}). -define(VVALUEL(Val), case Val of - "" -> []; + <<>> -> []; _ -> [?VVALUE(Val)] end). -define(TVFIELD(Type, Var, Val), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = Type}, #xmlattr{name = 'var', value = Var}], children = ?VVALUEL(Val)}). --define(HFIELD(), ?TVFIELD("hidden", "FORM_TYPE", ?NS_ADMIN_s)). +-define(HFIELD(), ?TVFIELD(<<"hidden">>, <<"FORM_TYPE">>, list_to_binary(?NS_ADMIN_s))). generate_adhoc_form(Lang, Node, ServerHost) -> LNode = tokenize(Node), @@ -502,29 +502,29 @@ generate_adhoc_form(Lang, Node, ServerHost) -> {[], []} end, #xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = - [#xmlattr{name = 'type', value = "form"}], children = + [#xmlattr{name = 'type', value = <<"form">>}], children = [?HFIELD(), #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(get_title(Lang, Node))}]}] ++ if (LNode == ?NS_ADMINL("delete-motd")) or (LNode == ?NS_ADMINL("delete-motd-allhosts")) -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "confirm"}, - #xmlattr{name = 'type', value = "boolean"}, - #xmlattr{name = 'label', value = translate:translate(Lang, "Really delete message of the day?")}], children = + [#xmlattr{name = 'var', value = <<"confirm">>}, + #xmlattr{name = 'type', value = <<"boolean">>}, + #xmlattr{name = 'label', value = list_to_binary(translate:translate(Lang, "Really delete message of the day?"))}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = <<"true">>}]}]}]; true -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "subject"}, - #xmlattr{name = 'type', value = "text-single"}, - #xmlattr{name = 'label', value = translate:translate(Lang, "Subject")}], children = - ?VVALUEL(OldSubject)}, + [#xmlattr{name = 'var', value = <<"subject">>}, + #xmlattr{name = 'type', value = <<"text-single">>}, + #xmlattr{name = 'label', value = list_to_binary(translate:translate(Lang, "Subject"))}], children = + ?VVALUEL(list_to_binary(OldSubject))}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "body"}, - #xmlattr{name = 'type', value = "text-multi"}, - #xmlattr{name = 'label', value = translate:translate(Lang, "Message body")}], children = - ?VVALUEL(OldBody)}] + [#xmlattr{name = 'var', value = <<"body">>}, + #xmlattr{name = 'type', value = <<"text-multi">>}, + #xmlattr{name = 'label', value = list_to_binary(translate:translate(Lang, "Message body"))}], children = + ?VVALUEL(list_to_binary(OldBody))}] end}. join_lines([]) -> @@ -569,7 +569,7 @@ handle_adhoc_form(From, To, node = Node, sessionid = SessionID, status = completed}, - Packet = #xmlel{ns = ?NS_JABBER_CLIENT, name = 'message', attrs = [#xmlattr{name = 'type', value = "normal"}], children = + Packet = #xmlel{ns = ?NS_JABBER_CLIENT, name = 'message', attrs = [#xmlattr{name = 'type', value = <<"normal">>}], children = if Subject /= [] -> [#xmlel{ns = ?NS_JABBER_CLIENT, name = 'subject', children = [#xmlcdata{cdata = list_to_binary(Subject)}]}]; diff --git a/src/mod_configure.erl b/src/mod_configure.erl index 9fb3f72c5..1271e976a 100644 --- a/src/mod_configure.erl +++ b/src/mod_configure.erl @@ -51,7 +51,7 @@ -include("ejabberd.hrl"). -include("adhoc.hrl"). --define(T(Lang, Text), translate:translate(Lang, Text)). +-define(T(Lang, Text), list_to_binary(translate:translate(Lang, Text))). %% Copied from ejabberd_sm.erl -record(session, {sid, usr, us, priority, info}). @@ -96,11 +96,11 @@ stop(Host) -> #xmlattr{name = 'name', value = ?T(Lang, Name)}]}]). -define(INFO_COMMAND(Name, Lang), - ?INFO_IDENTITY("automation", "command-node", Name, Lang)). + ?INFO_IDENTITY(<<"automation">>, <<"command-node">>, Name, Lang)). -define(NODEJID(To, Name, Node), #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(To)}, + [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_binary(To)}, #xmlattr{name = 'name', value = ?T(Lang, Name)}, #xmlattr{name = 'node', value = Node}]}). @@ -110,7 +110,7 @@ stop(Host) -> #xmlattr{name = 'name', value = ?T(Lang, Name)}, #xmlattr{name = 'node', value = Node}]}). --define(NS_ADMINX(Sub), ?NS_ADMIN_s++"#"++Sub). +-define(NS_ADMINX(Sub), <>). -define(NS_ADMINL(Sub), ["http:","jabber.org","protocol","admin", Sub]). tokenize(Node) -> string:tokens(Node, "/#"). @@ -123,10 +123,10 @@ get_sm_identity(Acc, _From, _To, Node, Lang) -> end. get_local_identity(Acc, _From, _To, Node, Lang) -> - LNode = tokenize(Node), + LNode = tokenize(binary_to_list(Node)), case LNode of ["running nodes", ENode] -> - ?INFO_IDENTITY("ejabberd", "node", ENode, Lang); + ?INFO_IDENTITY(<<"ejabberd">>, <<"node">>, ENode, Lang); ["running nodes", _ENode, "DB"] -> ?INFO_COMMAND("Database", Lang); ["running nodes", _ENode, "modules", "start"] -> @@ -204,7 +204,7 @@ get_local_features(Acc, From, To, Node, _Lang) -> false -> Acc; _ -> - LNode = tokenize(Node), + LNode = tokenize(binary_to_list(Node)), Allow = acl:match_rule(LServer, configure, From), case LNode of ["config"] -> @@ -263,9 +263,9 @@ adhoc_sm_items(Acc, From, To, Lang) -> empty -> [] end, Nodes = [#xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(To)}, + [#xmlattr{name = 'jid', value = exmpp_jid:jid_binary(To)}, #xmlattr{name = 'name', value = ?T(Lang, "Configuration")}, - #xmlattr{name = 'node', value = "config"}]}], + #xmlattr{name = 'node', value = <<"config">>}]}], {result, Items ++ Nodes}; _ -> Acc @@ -283,10 +283,10 @@ get_sm_items(Acc, From, To, Node, Lang) -> {result, Its} -> Its; empty -> [] end, - case {acl:match_rule(LServer, configure, From), Node} of + case {acl:match_rule(LServer, configure, From), binary_to_list(Node)} of {allow, ""} -> - Nodes = [?NODEJID(To, "Configuration", "config"), - ?NODEJID(To, "User Management", "user")], + Nodes = [?NODEJID(To, "Configuration", <<"config">>), + ?NODEJID(To, "User Management", <<"user">>)], {result, Items ++ Nodes ++ get_user_resources(To)}; {allow, "config"} -> {result, []}; @@ -303,17 +303,16 @@ get_user_resources(BareJID) -> lists:map(fun(R) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = [#xmlattr{name = 'jid', - value = exmpp_jid:jid_to_list( + value = exmpp_jid:jid_to_binary( exmpp_jid:bare_jid_to_jid(BareJID, R))}, #xmlattr{name = 'name', - value = exmpp_jid:lnode_as_list(BareJID)}]} + value = exmpp_jid:lnode(BareJID)}]} end, lists:sort(Rs)). %%%----------------------------------------------------------------------- adhoc_local_items(Acc, From, To, Lang) -> LServer = exmpp_jid:ldomain_as_list(To), - Server = exmpp_jid:domain_as_list(To), case acl:match_rule(LServer, configure, From) of allow -> Items = case Acc of @@ -321,7 +320,7 @@ adhoc_local_items(Acc, From, To, Lang) -> empty -> [] end, %% Recursively get all configure commands - Nodes = recursively_get_local_items(LServer, "", Server, Lang), + Nodes = recursively_get_local_items(LServer, "", exmpp_jid:domain(To), Lang), Nodes1 = lists:filter( fun(N) -> Nd = exmpp_xml:get_attribute(N, 'node', ""), @@ -374,7 +373,7 @@ recursively_get_local_items(LServer, Node, Server, Lang) -> Fallback; allow -> case get_local_items(LServer, LNode, - exmpp_jid:jid_to_list(To), Lang) of + exmpp_jid:jid_to_binary(To), Lang) of {result, Res} -> {result, Res}; {error, Error} -> @@ -382,7 +381,7 @@ recursively_get_local_items(LServer, Node, Server, Lang) -> end end). -get_local_items(Acc, From, To, "", Lang) -> +get_local_items(Acc, From, To, <<>>, Lang) -> LServer = exmpp_jid:ldomain_as_list(To), case gen_mod:is_loaded(LServer, mod_adhoc) of false -> @@ -398,7 +397,7 @@ get_local_items(Acc, From, To, "", Lang) -> {result, Items}; allow -> case get_local_items(LServer, [], - exmpp_jid:jid_to_list(To), Lang) of + exmpp_jid:jid_to_binary(To), Lang) of {result, Res} -> {result, Items ++ Res}; {error, _Error} -> @@ -413,7 +412,7 @@ get_local_items(Acc, From, To, Node, Lang) -> false -> Acc; _ -> - LNode = tokenize(Node), + LNode = tokenize(binary_to_list(Node)), Allow = acl:match_rule(LServer, configure, From), case LNode of ["config"] -> @@ -465,19 +464,19 @@ get_local_items(Acc, From, To, Node, Lang) -> get_local_items(_Host, [], Server, Lang) -> {result, - [?NODE("Configuration", "config"), - ?NODE("User Management", "user"), - ?NODE("Online Users", "online users"), - ?NODE("All Users", "all users"), - ?NODE("Outgoing s2s Connections", "outgoing s2s"), - ?NODE("Running Nodes", "running nodes"), - ?NODE("Stopped Nodes", "stopped nodes") + [?NODE("Configuration", <<"config">>), + ?NODE("User Management", <<"user">>), + ?NODE("Online Users", <<"online users">>), + ?NODE("All Users", <<"all users">>), + ?NODE("Outgoing s2s Connections", <<"outgoing s2s">>), + ?NODE("Running Nodes", <<"running nodes">>), + ?NODE("Stopped Nodes", <<"stopped nodes">>) ]}; get_local_items(_Host, ["config"], Server, Lang) -> {result, - [?NODE("Access Control Lists", "config/acls"), - ?NODE("Access Rules", "config/access") + [?NODE("Access Control Lists", <<"config/acls">>), + ?NODE("Access Rules", <<"config/access">>) ]}; get_local_items(_Host, ["config", _], _Server, _Lang) -> @@ -485,15 +484,15 @@ get_local_items(_Host, ["config", _], _Server, _Lang) -> get_local_items(_Host, ["user"], Server, Lang) -> {result, - [?NODE("Add User", ?NS_ADMINX("add-user")), - ?NODE("Delete User", ?NS_ADMINX("delete-user")), - ?NODE("End User Session", ?NS_ADMINX("end-user-session")), - ?NODE("Get User Password", ?NS_ADMINX("get-user-password")), - ?NODE("Change User Password",?NS_ADMINX("change-user-password")), - ?NODE("Get User Last Login Time", ?NS_ADMINX("get-user-lastlogin")), - ?NODE("Get User Statistics", ?NS_ADMINX("user-stats")), - ?NODE("Get Number of Registered Users",?NS_ADMINX("get-registered-users-num")), - ?NODE("Get Number of Online Users",?NS_ADMINX("get-online-users-num")) + [?NODE("Add User", ?NS_ADMINX(<<"add-user">>)), + ?NODE("Delete User", ?NS_ADMINX(<<"delete-user">>)), + ?NODE("End User Session", ?NS_ADMINX(<<"end-user-session">>)), + ?NODE("Get User Password", ?NS_ADMINX(<<"get-user-password">>)), + ?NODE("Change User Password",?NS_ADMINX(<<"change-user-password">>)), + ?NODE("Get User Last Login Time", ?NS_ADMINX(<<"get-user-lastlogin">>)), + ?NODE("Get User Statistics", ?NS_ADMINX(<<"user-stats">>)), + ?NODE("Get Number of Registered Users",?NS_ADMINX(<<"get-registered-users-num">>)), + ?NODE("Get Number of Online Users",?NS_ADMINX(<<"get-online-users-num">>)) ]}; get_local_items(_Host, ["http:" | _], _Server, _Lang) -> @@ -518,8 +517,8 @@ get_local_items(Host, ["all users", [$@ | Diap]], _Server, _Lang) -> Sub = lists:sublist(SUsers, N1, N2 - N1 + 1), lists:map(fun({S, U}) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(U, S)}, - #xmlattr{name = 'name', value = exmpp_jid:jid_to_list(U, S)}]} + [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_binary(U, S)}, + #xmlattr{name = 'name', value = exmpp_jid:jid_to_binary(U, S)}]} end, Sub) end of {'EXIT', _Reason} -> @@ -542,43 +541,47 @@ get_local_items(_Host, ["stopped nodes"], _Server, Lang) -> {result, get_stopped_nodes(Lang)}; get_local_items(_Host, ["running nodes", ENode], Server, Lang) -> + ENodeB = list_to_binary(ENode), {result, - [?NODE("Database", "running nodes/" ++ ENode ++ "/DB"), - ?NODE("Modules", "running nodes/" ++ ENode ++ "/modules"), - ?NODE("Backup Management", "running nodes/" ++ ENode ++ "/backup"), + [?NODE("Database", <<"running nodes/", ENodeB/binary, "/DB">>), + ?NODE("Modules", <<"running nodes/", ENodeB/binary, "/modules">>), + ?NODE("Backup Management", <<"running nodes/", ENodeB/binary, "/backup">>), ?NODE("Import Users From jabberd 1.4 Spool Files", - "running nodes/" ++ ENode ++ "/import"), - ?NODE("Restart Service", "running nodes/" ++ ENode ++ "/restart"), - ?NODE("Shut Down Service", "running nodes/" ++ ENode ++ "/shutdown") + <<"running nodes/", ENodeB/binary, "/import">>), + ?NODE("Restart Service", <<"running nodes/", ENodeB/binary, "/restart">>), + ?NODE("Shut Down Service", <<"running nodes/", ENodeB/binary, "/shutdown">>) ]}; get_local_items(_Host, ["running nodes", _ENode, "DB"], _Server, _Lang) -> {result, []}; get_local_items(_Host, ["running nodes", ENode, "modules"], Server, Lang) -> + ENodeB = list_to_binary(ENode), {result, - [?NODE("Start Modules", "running nodes/" ++ ENode ++ "/modules/start"), - ?NODE("Stop Modules", "running nodes/" ++ ENode ++ "/modules/stop") + [?NODE("Start Modules", <<"running nodes/", ENodeB/binary, "/modules/start">>), + ?NODE("Stop Modules", <<"running nodes/", ENodeB/binary, "/modules/stop">>) ]}; get_local_items(_Host, ["running nodes", _ENode, "modules", _], _Server, _Lang) -> {result, []}; get_local_items(_Host, ["running nodes", ENode, "backup"], Server, Lang) -> + ENodeB = list_to_binary(ENode), {result, - [?NODE("Backup", "running nodes/" ++ ENode ++ "/backup/backup"), - ?NODE("Restore", "running nodes/" ++ ENode ++ "/backup/restore"), + [?NODE("Backup", <<"running nodes/", ENodeB/binary, "/backup/backup">>), + ?NODE("Restore", <<"running nodes/", ENodeB/binary, "/backup/restore">>), ?NODE("Dump to Text File", - "running nodes/" ++ ENode ++ "/backup/textfile") + <<"running nodes/", ENodeB/binary, "/backup/textfile">>) ]}; get_local_items(_Host, ["running nodes", _ENode, "backup", _], _Server, _Lang) -> {result, []}; get_local_items(_Host, ["running nodes", ENode, "import"], Server, Lang) -> + ENodeB = list_to_binary(ENode), {result, - [?NODE("Import File", "running nodes/" ++ ENode ++ "/import/file"), - ?NODE("Import Directory", "running nodes/" ++ ENode ++ "/import/dir") + [?NODE("Import File", <<"running nodes/", ENodeB/binary, "/import/file">>), + ?NODE("Import Directory", <<"running nodes/", ENodeB/binary, "/import/dir">>) ]}; get_local_items(_Host, ["running nodes", _ENode, "import", _], _Server, _Lang) -> @@ -602,8 +605,8 @@ get_online_vh_users(Host) -> SURs = lists:sort([{S, U, R} || {U, S, R} <- USRs]), lists:map(fun({S, U, R}) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(U, S, R)}, - #xmlattr{name = 'name', value = exmpp_jid:jid_to_list(U, S)}]} + [#xmlattr{name = 'jid', value = exmpp_jid:jid_binary(U, S, R)}, + #xmlattr{name = 'name', value = exmpp_jid:jid_to_binary(U, S)}]} end, SURs) end. @@ -617,8 +620,8 @@ get_all_vh_users(Host) -> N when N =< 100 -> lists:map(fun({S, U}) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(U, S)}, - #xmlattr{name = 'name', value = exmpp_jid:jid_to_list(U, S)}]} + [#xmlattr{name = 'jid', value = exmpp_jid:jid_to_binary(U, S)}, + #xmlattr{name = 'name', value = exmpp_jid:jid_to_binary(U, S)}]} end, SUsers); N -> NParts = trunc(math:sqrt(N * 0.618)) + 1, @@ -626,20 +629,19 @@ get_all_vh_users(Host) -> lists:map(fun(K) -> L = K + M - 1, Node = - "@" ++ integer_to_list(K) ++ - "-" ++ integer_to_list(L), + <<"@", (list_to_binary(integer_to_list(K)))/binary, + "-", (list_to_binary(integer_to_list(L)))/binary>>, {FS, FU} = lists:nth(K, SUsers), {LS, LU} = if L < N -> lists:nth(L, SUsers); true -> lists:last(SUsers) end, Name = - FU ++ "@" ++ FS ++ - " -- " ++ - LU ++ "@" ++ LS, + <<(list_to_binary(FU))/binary, "@", (list_to_binary(FS))/binary, + " -- ", (list_to_binary(LU))/binary, "@", (list_to_binary(LS))/binary>>, #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = Host}, - #xmlattr{name = 'node', value = "all users/" ++ Node}, + [#xmlattr{name = 'jid', value = list_to_binary(Host)}, + #xmlattr{name = 'node', value = <<"all users/", Node/binary>>}, #xmlattr{name = 'name', value = Name}]} end, lists:seq(1, N, M)) end @@ -656,10 +658,10 @@ get_outgoing_s2s(Host, Lang) -> lists:map( fun(T) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = Host}, - #xmlattr{name = 'node', value = "outgoing s2s/" ++ T}, + [#xmlattr{name = 'jid', value = list_to_binary(Host)}, + #xmlattr{name = 'node', value = <<"outgoing s2s/", (list_to_binary(T))/binary>>}, #xmlattr{name = 'name', value = - lists:flatten( + list_to_binary( io_lib:format( ?T(Lang, "To ~s"), [T]))}]} end, lists:usort(TConns)) @@ -673,10 +675,10 @@ get_outgoing_s2s(Host, Lang, To) -> lists:map( fun({F, _T}) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = Host}, - #xmlattr{name = 'node', value = "outgoing s2s/" ++ To ++ "/" ++ F}, + [#xmlattr{name = 'jid', value = list_to_binary(Host)}, + #xmlattr{name = 'node', value = <<"outgoing s2s/", (list_to_binary(To))/binary, "/", (list_to_binary(F))/binary>>}, #xmlattr{name = 'name', value = - lists:flatten( + list_to_binary( io_lib:format( ?T(Lang, "From ~s"), [F]))}]} end, lists:keysort(1, lists:filter(fun(E) -> @@ -692,10 +694,10 @@ get_running_nodes(Server, _Lang) -> DBNodes -> lists:map( fun(N) -> - S = atom_to_list(N), + S = list_to_binary(atom_to_list(N)), #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = Server}, - #xmlattr{name = 'node', value = "running nodes/" ++ S}, + [#xmlattr{name = 'jid', value = list_to_binary(Server)}, + #xmlattr{name = 'node', value = <<"running nodes/", (list_to_binary(S))/binary>>}, #xmlattr{name = 'name', value = S}]} end, lists:sort(DBNodes)) end. @@ -709,10 +711,10 @@ get_stopped_nodes(_Lang) -> DBNodes -> lists:map( fun(N) -> - S = atom_to_list(N), + S = list_to_binary(atom_to_list(N)), #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - [#xmlattr{name = 'jid', value = ?MYNAME}, - #xmlattr{name = 'node', value = "stopped nodes/" ++ S}, + [#xmlattr{name = 'jid', value = list_to_binary(?MYNAME)}, + #xmlattr{name = 'node', value = <<"stopped nodes/", S/binary>>}, #xmlattr{name = 'name', value = S}]} end, lists:sort(DBNodes)) end. @@ -815,8 +817,8 @@ adhoc_local_commands(From, To, -define(TVFIELD(Type, Var, Val), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = Type}, #xmlattr{name = 'var', value = Var}], - children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Val)}]}]}). --define(HFIELD(), ?TVFIELD("hidden", "FORM_TYPE", ?NS_ADMIN_s)). + children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = Val}]}]}). +-define(HFIELD(), ?TVFIELD(<<"hidden">>, <<"FORM_TYPE">>, list_to_binary(?NS_ADMIN_s))). -define(TLFIELD(Type, Label, Var), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = Type}, @@ -827,7 +829,7 @@ adhoc_local_commands(From, To, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = Type}, #xmlattr{name = 'label', value = ?T(Lang, Label)}, #xmlattr{name = 'var', value = Var}], - children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Val)}]}]}). + children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = Val}]}]}). -define(XMFIELD(Type, Label, Var, Vals), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = Type}, @@ -836,9 +838,9 @@ adhoc_local_commands(From, To, children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Val)}]} || Val <- Vals]}). -define(TABLEFIELD(Table, Val), - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = "list-single"}, - #xmlattr{name = 'label', value = atom_to_list(Table)}, - #xmlattr{name = 'var', value = atom_to_list(Table)}], + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = <<"list-single">>}, + #xmlattr{name = 'label', value = list_to_binary(atom_to_list(Table))}, + #xmlattr{name = 'var', value = list_to_binary(atom_to_list(Table))}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(atom_to_list(Val))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'option', attrs = [#xmlattr{name = 'label', value = ?T(Lang, "RAM copy")}], @@ -917,7 +919,7 @@ get_form(Host, ["running nodes", ENode, "modules", "stop"], Lang) -> Lang, "Choose modules to stop"))}]} | lists:map(fun(M) -> S = atom_to_list(M), - ?XFIELD("boolean", S, S, "0") + ?XFIELD(<<"boolean">>, S, list_to_binary(S), <<"0">>) end, SModules) ]}]} end @@ -934,21 +936,22 @@ get_form(_Host, ["running nodes", ENode, "modules", "start"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Enter list of {Module, [Options]}"))}]}, - ?XFIELD("text-multi", "List of modules to start", "modules", "[].") + ?XFIELD(<<"text-multi">>, "List of modules to start", <<"modules">>, <<"[].">>) ]}]}; get_form(_Host, ["running nodes", ENode, "backup", "backup"], Lang) -> {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = - [?HFIELD(), + [ + ?HFIELD(), #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T( Lang, "Backup to File at ") ++ ENode)}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'instructions', children = + #xmlel{ns = ?NS_DATA_FORMS, name = 'instructions', children = [#xmlcdata{cdata = list_to_binary(?T( - Lang, "Enter path to backup file"))}]}, - ?XFIELD("text-single", "Path to File", "path", "") + Lang, "Enter path to backup file"))}]}, + ?XFIELD(<<"text-single">>, "Path to File", <<"path">>, <<"">>) ]}]}; get_form(_Host, ["running nodes", ENode, "backup", "restore"], Lang) -> @@ -962,7 +965,7 @@ get_form(_Host, ["running nodes", ENode, "backup", "restore"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Enter path to backup file"))}]}, - ?XFIELD("text-single", "Path to File", "path", "") + ?XFIELD(<<"text-single">>, "Path to File", <<"path">>, <<"">>) ]}]}; get_form(_Host, ["running nodes", ENode, "backup", "textfile"], Lang) -> @@ -976,7 +979,7 @@ get_form(_Host, ["running nodes", ENode, "backup", "textfile"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Enter path to text file"))}]}, - ?XFIELD("text-single", "Path to File", "path", "") + ?XFIELD(<<"text-single">>, "Path to File", <<"path">>, <<"">>) ]}]}; get_form(_Host, ["running nodes", ENode, "import", "file"], Lang) -> @@ -990,7 +993,7 @@ get_form(_Host, ["running nodes", ENode, "import", "file"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Enter path to jabberd1.4 spool file"))}]}, - ?XFIELD("text-single", "Path to File", "path", "") + ?XFIELD(<<"text-single">>, "Path to File", <<"path">>, <<"">>) ]}]}; get_form(_Host, ["running nodes", ENode, "import", "dir"], Lang) -> @@ -1004,14 +1007,14 @@ get_form(_Host, ["running nodes", ENode, "import", "dir"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Enter path to jabberd1.4 spool dir"))}]}, - ?XFIELD("text-single", "Path to Dir", "path", "") + ?XFIELD(<<"text-single">>, "Path to Dir", <<"path">>, <<"">>) ]}]}; get_form(_Host, ["running nodes", _ENode, "restart"], Lang) -> Make_option = fun(LabelNum, LabelUnit, Value)-> #xmlel{ns = ?NS_DATA_FORMS, name = 'option', attrs = - [#xmlattr{name = 'label', value = LabelNum ++ ?T(Lang, LabelUnit)}], children = + [#xmlattr{name = 'label', value = <<(list_to_binary(LabelNum))/binary, (?T(Lang, LabelUnit))/binary>>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Value)}]}]} end, {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = @@ -1019,9 +1022,9 @@ get_form(_Host, ["running nodes", _ENode, "restart"], Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Restart Service"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "list-single"}, + [#xmlattr{name = 'type', value = <<"list-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Time delay")}, - #xmlattr{name = 'var', value = "delay"}], children = + #xmlattr{name = 'var', value = <<"delay">>}], children = [Make_option("", "immediately", "1"), Make_option("15 ", "seconds", "15"), Make_option("30 ", "seconds", "30"), @@ -1037,15 +1040,15 @@ get_form(_Host, ["running nodes", _ENode, "restart"], Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'required'} ]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "fixed"}, + [#xmlattr{name = 'type', value = <<"fixed">>}, #xmlattr{name = 'label', value = ?T(Lang, "Send announcement to all online users on all hosts")}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "subject"}, - #xmlattr{name = 'type', value = "text-single"}, + [#xmlattr{name = 'var', value = <<"subject">>}, + #xmlattr{name = 'type', value = <<"text-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Subject")}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "announcement"}, - #xmlattr{name = 'type', value = "text-multi"}, + [#xmlattr{name = 'var', value = <<"announcement">>}, + #xmlattr{name = 'type', value = <<"text-multi">>}, #xmlattr{name = 'label', value = ?T(Lang, "Message body")}]} ]}]}; @@ -1053,7 +1056,7 @@ get_form(_Host, ["running nodes", _ENode, "shutdown"], Lang) -> Make_option = fun(LabelNum, LabelUnit, Value)-> #xmlel{ns = ?NS_DATA_FORMS, name = 'option', attrs = - [#xmlattr{name = 'label', value = LabelNum ++ ?T(Lang, LabelUnit)}], children = + [#xmlattr{name = 'label', value = <<(list_to_binary(LabelNum))/binary, (?T(Lang, LabelUnit))/binary>>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Value)}]}]} end, {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = @@ -1061,9 +1064,9 @@ get_form(_Host, ["running nodes", _ENode, "shutdown"], Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Shut Down Service"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "list-single"}, + [#xmlattr{name = 'type', value = <<"list-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Time delay")}, - #xmlattr{name = 'var', value = "delay"}], children = + #xmlattr{name = 'var', value = <<"delay">>}], children = [Make_option("", "immediately", "1"), Make_option("15 ", "seconds", "15"), Make_option("30 ", "seconds", "30"), @@ -1079,15 +1082,15 @@ get_form(_Host, ["running nodes", _ENode, "shutdown"], Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'required'} ]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "fixed"}, + [#xmlattr{name = 'type', value = <<"fixed">>}, #xmlattr{name = 'label', value = ?T(Lang, "Send announcement to all online users on all hosts")}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "subject"}, - #xmlattr{name = 'type', value = "text-single"}, + [#xmlattr{name = 'var', value = <<"subject">>}, + #xmlattr{name = 'type', value = <<"text-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Subject")}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'var', value = "announcement"}, - #xmlattr{name = 'type', value = "text-multi"}, + [#xmlattr{name = 'var', value = <<"announcement">>}, + #xmlattr{name = 'type', value = <<"text-multi">>}, #xmlattr{name = 'label', value = ?T(Lang, "Message body")}]} ]}]}; @@ -1098,11 +1101,11 @@ get_form(Host, ["config", "acls"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Access Control List Configuration"))}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = "text-multi"}, + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = <<"text-multi">>}, #xmlattr{name = 'label', value = ?T( Lang, "Access control lists")}, - #xmlattr{name = 'var', value = "acls"}], + #xmlattr{name = 'var', value = <<"acls">>}], children = lists:map(fun(S) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(S)}]} end, @@ -1126,11 +1129,11 @@ get_form(Host, ["config", "access"], Lang) -> [#xmlcdata{cdata = list_to_binary(?T( Lang, "Access Configuration"))}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs =[#xmlattr{name = 'type', value = "text-multi"}, + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs =[#xmlattr{name = 'type', value = <<"text-multi">>}, #xmlattr{name = 'label', value = ?T( Lang, "Access rules")}, - #xmlattr{name = 'var', value = "access"}], + #xmlattr{name = 'var', value = <<"access">>}], children = lists:map(fun(S) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'value', children =[#xmlcdata{cdata = list_to_binary(S)}]} end, @@ -1153,19 +1156,19 @@ get_form(_Host, ?NS_ADMINL("add-user"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Add User"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-single"}, + [#xmlattr{name = 'type', value = <<"jid-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Jabber ID")}, - #xmlattr{name = 'var', value = "accountjid"}], children = + #xmlattr{name = 'var', value = <<"accountjid">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "text-private"}, + [#xmlattr{name = 'type', value = <<"text-private">>}, #xmlattr{name = 'label', value = ?T(Lang, "Password")}, - #xmlattr{name = 'var', value = "password"}], children = + #xmlattr{name = 'var', value = <<"password">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "text-private"}, + [#xmlattr{name = 'type', value = <<"text-private">>}, #xmlattr{name = 'label', value = ?T(Lang, "Password Verification")}, - #xmlattr{name = 'var', value = "password-verify"}], children = + #xmlattr{name = 'var', value = <<"password-verify">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1175,9 +1178,9 @@ get_form(_Host, ?NS_ADMINL("delete-user"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Delete User"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-multi"}, + [#xmlattr{name = 'type', value = <<"jid-multi">>}, #xmlattr{name = 'label', value = ?T(Lang, "Jabber ID")}, - #xmlattr{name = 'var', value = "accountjids"}], children = + #xmlattr{name = 'var', value = <<"accountjids">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1187,9 +1190,9 @@ get_form(_Host, ?NS_ADMINL("end-user-session"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "End User Session"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-single"}, + [#xmlattr{name = 'type', value = <<"jid-single">>}, #xmlattr{name = 'label', value = list_to_binary(?T(Lang, "Jabber ID"))}, - #xmlattr{name = 'var', value = "accountjid"}], children = + #xmlattr{name = 'var', value = <<"accountjid">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1199,9 +1202,9 @@ get_form(_Host, ?NS_ADMINL("get-user-password"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Get User Password"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-single"}, + [#xmlattr{name = 'type', value = <<"jid-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Jabber ID")}, - #xmlattr{name = 'var', value = "accountjid"}], children = + #xmlattr{name = 'var', value = <<"accountjid">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1211,14 +1214,14 @@ get_form(_Host, ?NS_ADMINL("change-user-password"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Get User Password"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-single"}, + [#xmlattr{name = 'type', value = <<"jid-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Jabber ID")}, - #xmlattr{name = 'var', value = "accountjid"}], children = + #xmlattr{name = 'var', value = <<"accountjid">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "text-private"}, + [#xmlattr{name = 'type', value = <<"text-private">>}, #xmlattr{name = 'label', value = ?T(Lang, "Password")}, - #xmlattr{name = 'var', value = "password"}], children = + #xmlattr{name = 'var', value = <<"password">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1228,9 +1231,9 @@ get_form(_Host, ?NS_ADMINL("get-user-lastlogin"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Get User Last Login Time"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-single"}, + [#xmlattr{name = 'type', value = <<"jid-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Jabber ID")}, - #xmlattr{name = 'var', value = "accountjid"}], children = + #xmlattr{name = 'var', value = <<"accountjid">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1240,9 +1243,9 @@ get_form(_Host, ?NS_ADMINL("user-stats"), Lang) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(?T(Lang, "Get User Statistics"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "jid-single"}, + [#xmlattr{name = 'type', value = <<"jid-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Jabber ID")}, - #xmlattr{name = 'var', value = "accountjid"}], children = + #xmlattr{name = 'var', value = <<"accountjid">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'required'}]} ]}]}; @@ -1252,9 +1255,9 @@ get_form(Host, ?NS_ADMINL("get-registered-users-num"), Lang) -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = [?HFIELD(), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "text-single"}, + [#xmlattr{name = 'type', value = <<"text-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Number of registered users")}, - #xmlattr{name = 'var', value = "registeredusersnum"}], children = + #xmlattr{name = 'var', value = <<"registeredusersnum">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Num)}]}] }]}]}; @@ -1264,9 +1267,9 @@ get_form(Host, ?NS_ADMINL("get-online-users-num"), Lang) -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = [?HFIELD(), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "text-single"}, + [#xmlattr{name = 'type', value = <<"text-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Number of online users")}, - #xmlattr{name = 'var', value = "onlineusersnum"}], children = + #xmlattr{name = 'var', value = <<"onlineusersnum">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Num)}]}] }]}]}; @@ -1595,8 +1598,8 @@ set_form(_From, _Host, ?NS_ADMINL("get-user-password"), Lang, XData) -> true = is_list(Password), {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = [?HFIELD(), - ?XFIELD("jid-single", "Jabber ID", "accountjid", AccountString), - ?XFIELD("text-single", "Password", "password", Password) + ?XFIELD(<<"jid-single">>, "Jabber ID", <<"accountjid">>, list_to_binary(AccountString)), + ?XFIELD(<<"text-single">>, "Password", <<"password">>, list_to_binary(Password)) ]}]}; set_form(_From, _Host, ?NS_ADMINL("change-user-password"), _Lang, XData) -> @@ -1640,10 +1643,10 @@ set_form(_From, _Host, ?NS_ADMINL("get-user-lastlogin"), Lang, XData) -> _ -> ?T(Lang, "Online") end, - {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = [#xmlattr{name = 'type', value = "result"}], children = + {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = [#xmlattr{name = 'type', value = <<"result">>}], children = [?HFIELD(), - ?XFIELD("jid-single", "Jabber ID", "accountjid", AccountString), - ?XFIELD("text-single", "Last login", "lastlogin", FLast) + ?XFIELD(<<"jid-single">>, "Jabber ID", <<"accountjid">>, list_to_binary(AccountString)), + ?XFIELD(<<"text-single">>, "Last login", <<"lastlogin">>, list_to_binary(FLast)) ]}]}; set_form(_From, _Host, ?NS_ADMINL("user-stats"), Lang, XData) -> @@ -1666,10 +1669,10 @@ set_form(_From, _Host, ?NS_ADMINL("user-stats"), Lang, XData) -> {result, [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', children = [?HFIELD(), - ?XFIELD("jid-single", "Jabber ID", "accountjid", AccountString), - ?XFIELD("text-single", "Roster size", "rostersize", Rostersize), - ?XMFIELD("text-multi", "IP addresses", "ipaddresses", IPs), - ?XMFIELD("text-multi", "Resources", "onlineresources", Resources) + ?XFIELD(<<"jid-single">>, "Jabber ID", <<"accountjid">>, AccountString), + ?XFIELD(<<"text-single">>, "Roster size", <<"rostersize">>, Rostersize), + ?XMFIELD(<<"text-multi">>, "IP addresses", <<"ipaddresses">>, IPs), + ?XMFIELD(<<"text-multi">>, "Resources", <<"onlineresources">>, Resources) ]}]}; set_form(_From, _Host, _, _Lang, _XData) -> @@ -1699,25 +1702,25 @@ stop_node(From, Host, ENode, Action, XData) -> Delay = list_to_integer(get_value("delay", XData)), Subject = case get_value("subject", XData) of [] -> []; - S -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = "subject"}], children = + S -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = <<"subject">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(S)}]}]}] end, Announcement = case get_values("announcement", XData) of [] -> []; - As -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = "body"}], children = + As -> [#xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = <<"body">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Line)}]} || Line <- As] }] end, case Subject ++ Announcement of [] -> ok; SubEls -> Request = #adhoc_request{ - node = ?NS_ADMINX("announce-allhosts"), + node = binary_to_list(?NS_ADMINX(<<"announce-allhosts">>)), action = "complete", xdata = #xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = - [#xmlattr{name = 'type', value = "submit"}], children = + [#xmlattr{name = 'type', value = <<"submit">>}], children = SubEls}, others= [#xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = - [#xmlattr{name = 'type', value = "submit"}], children = + [#xmlattr{name = 'type', value = <<"submit">>}], children = SubEls}] }, To = exmpp_jid:make_jid(Host), @@ -1799,9 +1802,9 @@ get_sm_form(User, Server, "config", Lang) -> list_to_binary(?T( Lang, "Administration of ") ++ User)}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = - [#xmlattr{name = 'type', value = "list-single"}, + [#xmlattr{name = 'type', value = <<"list-single">>}, #xmlattr{name = 'label', value = ?T(Lang, "Action on user")}, - #xmlattr{name = 'var', value = "action"}], children = + #xmlattr{name = 'var', value = <<"action">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = <<"edit">>}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'option', attrs = [#xmlattr{name = 'label', value = ?T(Lang, "Edit Properties")}], children = @@ -1810,8 +1813,8 @@ get_sm_form(User, Server, "config", Lang) -> [#xmlattr{name = 'label', value = ?T(Lang, "Remove User")}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = <<"remove">>}]}]} ]}, - ?XFIELD("text-private", "Password", "password", - ejabberd_auth:get_password_s(User, Server)) + ?XFIELD(<<"text-private">>, "Password", <<"password">>, + list_to_binary(ejabberd_auth:get_password_s(User, Server))) ]}]}; get_sm_form(_User, _Server, _Node, _Lang) -> diff --git a/src/mod_configure2.erl b/src/mod_configure2.erl index 9dd9b8c81..252a127bd 100644 --- a/src/mod_configure2.erl +++ b/src/mod_configure2.erl @@ -125,18 +125,18 @@ process_get(#xmlel{ns = ?NS_ECONFIGURE, name = 'info'}) -> S2SConns = ejabberd_s2s:dirty_get_connections(), TConns = lists:usort([element(2, C) || C <- S2SConns]), Attrs = [#xmlattr{name = 'registered-users', value = - integer_to_list(mnesia:table_info(passwd, size))}, + list_to_binary(integer_to_list(mnesia:table_info(passwd, size)))}, #xmlattr{name = 'online-users', value = - integer_to_list(mnesia:table_info(presence, size))}, + list_to_binary(integer_to_list(mnesia:table_info(presence, size)))}, #xmlattr{name = 'running-nodes', value = - integer_to_list(length(mnesia:system_info(running_db_nodes)))}, + list_to_binary(integer_to_list(length(mnesia:system_info(running_db_nodes))))}, #xmlattr{name = 'stopped-nodes', value = - integer_to_list( + list_to_binary(integer_to_list( length(lists:usort(mnesia:system_info(db_nodes) ++ mnesia:system_info(extra_db_nodes)) -- - mnesia:system_info(running_db_nodes)))}, + mnesia:system_info(running_db_nodes))))}, #xmlattr{name = 'outgoing-s2s-servers', value = - integer_to_list(length(TConns))}], + list_to_binary(integer_to_list(length(TConns)))}], {result, #xmlel{ns = ?NS_ECONFIGURE, name = 'info', attrs = Attrs}}; process_get(#xmlel{ns = ?NS_ECONFIGURE, name = 'welcome-message', attrs = Attrs}) -> {Subj, Body} = case ejabberd_config:get_local_option(welcome_message) of diff --git a/src/mod_disco.erl b/src/mod_disco.erl index be36ce749..ab57c109e 100644 --- a/src/mod_disco.erl +++ b/src/mod_disco.erl @@ -130,7 +130,7 @@ unregister_extra_domain(Host, Domain) -> process_local_iq_items(From, To, #iq{type = get, payload = SubEl, lang = Lang} = IQ_Rec) -> - Node = exmpp_xml:get_attribute(SubEl, 'node', ""), + Node = exmpp_xml:get_attribute_as_binary(SubEl, 'node', <<>>), case ejabberd_hooks:run_fold(disco_local_items, exmpp_jid:ldomain(To), @@ -138,7 +138,7 @@ process_local_iq_items(From, To, #iq{type = get, payload = SubEl, [From, To, Node, Lang]) of {result, Items} -> ANode = case Node of - "" -> []; + <<>> -> []; _ -> [#xmlattr{name = 'node', value = Node}] end, Result = #xmlel{ns = ?NS_DISCO_ITEMS, name = 'query', @@ -153,7 +153,7 @@ process_local_iq_items(_From, _To, #iq{type = set} = IQ_Rec) -> process_local_iq_info(From, To, #iq{type = get, payload = SubEl, lang = Lang} = IQ_Rec) -> - Node = exmpp_xml:get_attribute(SubEl, 'node', ""), + Node = exmpp_xml:get_attribute_as_binary(SubEl, 'node', <<>>), Identity = ejabberd_hooks:run_fold(disco_local_identity, exmpp_jid:ldomain(To), [], @@ -164,7 +164,7 @@ process_local_iq_info(From, To, #iq{type = get, payload = SubEl, [From, To, Node, Lang]) of {result, Features} -> ANode = case Node of - "" -> []; + <<>> -> []; _ -> [#xmlattr{name = 'node', value = Node}] end, Result = #xmlel{ns = ?NS_DISCO_INFO, name = 'query', @@ -178,11 +178,11 @@ process_local_iq_info(From, To, #iq{type = get, payload = SubEl, process_local_iq_info(_From, _To, #iq{type = set} = IQ_Rec) -> exmpp_iq:error(IQ_Rec, 'not-allowed'). -get_local_identity(Acc, _From, _To, [], _Lang) -> +get_local_identity(Acc, _From, _To, <<>>, _Lang) -> Acc ++ [#xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = [ - #xmlattr{name = 'category', value = "server"}, - #xmlattr{name = 'type', value = "im"}, - #xmlattr{name = 'name', value = "ejabberd"} + #xmlattr{name = 'category', value = <<"server">>}, + #xmlattr{name = 'type', value = <<"im">>}, + #xmlattr{name = 'name', value = <<"ejabberd">>} ]}]; get_local_identity(Acc, _From, _To, _Node, _Lang) -> @@ -191,7 +191,7 @@ get_local_identity(Acc, _From, _To, _Node, _Lang) -> get_local_features({error, _Error} = Acc, _From, _To, _Node, _Lang) -> Acc; -get_local_features(Acc, _From, To, [], _Lang) -> +get_local_features(Acc, _From, To, <<>>, _Lang) -> Feats = case Acc of {result, Features} -> Features; empty -> [] @@ -211,28 +211,30 @@ get_local_features(Acc, _From, _To, _Node, _Lang) -> feature_to_xml({{Feature, _Host}}) -> feature_to_xml(Feature); -feature_to_xml(Feature) when is_list(Feature) -> + +feature_to_xml(Feature) when is_binary(Feature) -> #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', value = Feature} ]}; + +feature_to_xml(Feature) when is_list(Feature) -> + feature_to_xml(list_to_binary(Feature)); feature_to_xml(Feature) when is_atom(Feature) -> - #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ - #xmlattr{name = 'var', value = atom_to_list(Feature)} - ]}. + feature_to_xml(atom_to_list(Feature)). domain_to_xml({Domain}) -> + domain_to_xml(Domain); +domain_to_xml(Domain) when is_binary(Domain)-> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = [ #xmlattr{name = 'jid', value = Domain} ]}; -domain_to_xml(Domain) -> - #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = [ - #xmlattr{name = 'jid', value = Domain} - ]}. +domain_to_xml(Domain) when is_list(Domain) -> + domain_to_xml(list_to_binary(Domain)). get_local_services({error, _Error} = Acc, _From, _To, _Node, _Lang) -> Acc; -get_local_services(Acc, _From, To, [], _Lang) -> +get_local_services(Acc, _From, To, <<>>, _Lang) -> Items = case Acc of {result, Its} -> Its; empty -> [] @@ -270,14 +272,14 @@ get_vh_services(Host) -> process_sm_iq_items(From, To, #iq{type = get, payload = SubEl, lang = Lang} = IQ_Rec) -> - Node = exmpp_xml:get_attribute(SubEl, 'node', ""), + Node = exmpp_xml:get_attribute_as_binary(SubEl, 'node', <<>>), case ejabberd_hooks:run_fold(disco_sm_items, exmpp_jid:ldomain(To), empty, [From, To, Node, Lang]) of {result, Items} -> ANode = case Node of - "" -> []; + <<>> -> []; _ -> [#xmlattr{name = 'node', value = Node}] end, Result = #xmlel{ns = ?NS_DISCO_ITEMS, name = 'query', @@ -311,7 +313,7 @@ process_sm_iq_items(From, To, #iq{type = set, payload = SubEl} = IQ_Rec) -> get_sm_items({error, _Error} = Acc, _From, _To, _Node, _Lang) -> Acc; -get_sm_items(Acc, From, To, [], _Lang) -> +get_sm_items(Acc, From, To, <<>>, _Lang) -> LFrom = exmpp_jid:lnode_as_list(From), LSFrom = exmpp_jid:ldomain_as_list(From), LTo = exmpp_jid:lnode_as_list(To), @@ -344,7 +346,7 @@ get_sm_items(empty, From, To, _Node, _Lang) -> process_sm_iq_info(From, To, #iq{type = get, payload = SubEl, lang = Lang} = IQ_Rec) -> - Node = exmpp_xml:get_attribute(SubEl, 'node', ""), + Node = exmpp_xml:get_attribute_as_binary(SubEl, 'node', <<>>), Identity = ejabberd_hooks:run_fold(disco_sm_identity, exmpp_jid:ldomain(To), [], @@ -355,7 +357,7 @@ process_sm_iq_info(From, To, #iq{type = get, payload = SubEl, [From, To, Node, Lang]) of {result, Features} -> ANode = case Node of - "" -> []; + <<>> -> []; _ -> [#xmlattr{name = 'node', value = Node}] end, Result = #xmlel{ns = ?NS_DISCO_INFO, name = 'query', @@ -395,8 +397,8 @@ get_user_resources(JID) -> lists:map(fun(R) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = [ #xmlattr{name = 'jid', value = - exmpp_jid:jid_to_list(exmpp_jid:bare_jid_to_jid(JID, R))}, - #xmlattr{name = 'name', value = exmpp_jid:lnode_as_list(JID)} + exmpp_jid:jid_to_binary(exmpp_jid:bare_jid_to_jid(JID, R))}, + #xmlattr{name = 'name', value = exmpp_jid:lnode(JID)} ]} end, lists:sort(Rs)). @@ -408,7 +410,7 @@ get_publish_items(empty, From, To, Node, _Lang) -> LSTo = exmpp_jid:ldomain_as_list(To), if (LFrom == LTo) and (LSFrom == LSTo) -> - retrieve_disco_publish({LTo, LSTo}, Node); + retrieve_disco_publish({LTo, LSTo}, binary_to_list(Node)); true -> empty end; @@ -486,18 +488,18 @@ retrieve_disco_publish(User, Node) -> name = Name, node = PNode}) -> #xmlel{ns = ?NS_DISCO_ITEMS, name = 'item', attrs = - lists:append([[#xmlattr{name = 'jid', value = Jid}], + lists:append([[#xmlattr{name = 'jid', value = list_to_binary(Jid)}], case Name of "" -> []; _ -> - [#xmlattr{name = 'name', value = Name}] + [#xmlattr{name = 'name', value = list_to_binary(Name)}] end, case PNode of "" -> []; _ -> - [#xmlattr{name = 'node', value = PNode}] + [#xmlattr{name = 'node', value = list_to_binary(PNode)}] end])} end, Items)} end. diff --git a/src/mod_irc/mod_irc.erl b/src/mod_irc/mod_irc.erl index cadef5e2f..28ab85e63 100644 --- a/src/mod_irc/mod_irc.erl +++ b/src/mod_irc/mod_irc.erl @@ -303,17 +303,17 @@ closed_connection(Host, From, Server) -> iq_disco(Lang) -> [#xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = - [#xmlattr{name = 'category', value = "conference"}, - #xmlattr{name = 'type', value = "irc"}, - #xmlattr{name = 'name', value = translate:translate(Lang, "IRC Transport")}]}, + [#xmlattr{name = 'category', value = <<"conference">>}, + #xmlattr{name = 'type', value = <<"irc">>}, + #xmlattr{name = 'name', value = list_to_binary(translate:translate(Lang, "IRC Transport"))}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = - [#xmlattr{name = 'var', value = ?NS_DISCO_INFO_s}]}, + [#xmlattr{name = 'var', value = list_to_binary(?NS_DISCO_INFO_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = - [#xmlattr{name = 'var', value = ?NS_MUC_s}]}, + [#xmlattr{name = 'var', value = list_to_binary(?NS_MUC_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = - [#xmlattr{name = 'var', value = ?NS_INBAND_REGISTER_s}]}, + [#xmlattr{name = 'var', value = list_to_binary(?NS_INBAND_REGISTER_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = - [#xmlattr{name = 'var', value = ?NS_VCARD_s}]}]. + [#xmlattr{name = 'var', value = list_to_binary(?NS_VCARD_s)}]}]. iq_get_vcard(Lang) -> [#xmlel{ns = ?NS_VCARD, name = 'FN', children = @@ -439,13 +439,13 @@ get_form(Host, From, [], Lang, DefEnc) -> Lang, "Enter username and encodings you wish to use for " "connecting to IRC servers"))}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = "text-single"}, + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = <<"text-single">>}, #xmlattr{name = 'label', value = - translate:translate( - Lang, "IRC Username")}, - #xmlattr{name = 'var', value = "username"}], children = + list_to_binary(translate:translate( + Lang, "IRC Username"))}, + #xmlattr{name = 'var', value = <<"username">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(Username)}]}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = "fixed"}], children = + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = <<"fixed">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary( lists:flatten( @@ -457,7 +457,7 @@ get_form(Host, From, [], Lang, DefEnc) -> "in format '{\"irc server\", \"encoding\"}'. " "By default this service use \"~s\" encoding."), [DefEnc])))}]}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = "fixed"}], children = + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = <<"fixed">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary( translate:translate( @@ -465,10 +465,10 @@ get_form(Host, From, [], Lang, DefEnc) -> "Example: [{\"irc.lucky.net\", \"koi8-r\"}, " "{\"vendetta.fef.net\", \"iso8859-1\"}]." ))}]}]}, - #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = "text-multi"}, + #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'type', value = <<"text-multi">>}, #xmlattr{name = 'label', value = - translate:translate(Lang, "Encodings")}, - #xmlattr{name = 'var', value = "encodings"}], children = + list_to_binary(translate:translate(Lang, "Encodings"))}, + #xmlattr{name = 'var', value = <<"encodings">>}], children = lists:map( fun(S) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = [#xmlcdata{cdata = list_to_binary(S)}]} diff --git a/src/mod_irc/mod_irc_connection.erl b/src/mod_irc/mod_irc_connection.erl index 3548effa2..9852db8c5 100644 --- a/src/mod_irc/mod_irc_connection.erl +++ b/src/mod_irc/mod_irc_connection.erl @@ -590,8 +590,8 @@ terminate(_Reason, _StateName, StateData) -> lists:concat([Chan, "%", StateData#state.server]), StateData#state.host, StateData#state.nick), StateData#state.user, - #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = "error"}], children = - [#xmlel{ns = ?NS_JABBER_CLIENT, name = 'error', attrs = [#xmlattr{name = 'code', value = "502"}], children = + #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = <<"error">>}], children = + [#xmlel{ns = ?NS_JABBER_CLIENT, name = 'error', attrs = [#xmlattr{name = 'code', value = <<"502">>}], children = [#xmlcdata{cdata = <<"Server Connect Failed">>}]}]}) end, dict:fetch_keys(StateData#state.channels)), case StateData#state.socket of @@ -629,11 +629,11 @@ bounce_messages(Reason) -> ok; _ -> Error = #xmlel{ns = ?NS_JABBER_CLIENT, name = 'error', - attrs = [#xmlattr{name = 'code', value = "502"}], + attrs = [#xmlattr{name = 'code', value = <<"502">>}], children = [#xmlcdata{cdata = Reason}]}, Err = exmpp_stanza:reply_with_error(El, Error), - From = exmpp_jid:list_to_jid(exmpp_stanza:get_sender(El)), - To = exmpp_jid:list_to_jid(exmpp_stanza:get_recipient(El)), + From = exmpp_jid:binary_to_jid(exmpp_stanza:get_sender(El)), + To = exmpp_jid:binary_to_jid(exmpp_stanza:get_recipient(El)), ejabberd_router:route(To, From, Err) end, bounce_messages(Reason) @@ -678,12 +678,12 @@ process_channel_list_user(StateData, Chan, User) -> end, {User2, Affiliation, Role} = case User1 of - [$@ | U2] -> {U2, "admin", "moderator"}; - [$+ | U2] -> {U2, "member", "participant"}; - [$\% | U2] -> {U2, "admin", "moderator"}; - [$& | U2] -> {U2, "admin", "moderator"}; - [$~ | U2] -> {U2, "admin", "moderator"}; - _ -> {User1, "member", "participant"} + [$@ | U2] -> {U2, <<"admin">>, <<"moderator">>}; + [$+ | U2] -> {U2, <<"member">>, <<"participant">>}; + [$\% | U2] -> {U2, <<"admin">>, <<"moderator">>}; + [$& | U2] -> {U2, <<"admin">>, <<"moderator">>}; + [$~ | U2] -> {U2, <<"admin">>, <<"moderator">>}; + _ -> {User1, <<"member">>, <<"participant">>} end, ejabberd_router:route( exmpp_jid:make_jid(lists:concat([Chan, "%", StateData#state.server]), @@ -893,11 +893,11 @@ process_part(StateData, Chan, From, String) -> exmpp_jid:make_jid(lists:concat([Chan, "%", StateData#state.server]), StateData#state.host, FromUser), StateData#state.user, - #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = "unavailable"}], children = + #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = <<"unavailable">>}], children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = "member"}, - #xmlattr{name = 'role', value = "none"}]}]}, + [#xmlattr{name = 'affiliation', value = <<"member">>}, + #xmlattr{name = 'role', value = <<"none">>}]}]}, #xmlel{ns = ?NS_MUC_USER, name = 'status', children = [#xmlcdata{cdata = list_to_binary(Msg1 ++ " (" ++ FromIdent ++ ")")}]}] }), @@ -927,11 +927,11 @@ process_quit(StateData, From, String) -> lists:concat([Chan, "%", StateData#state.server]), StateData#state.host, FromUser), StateData#state.user, - #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = "unavailable"}], children = + #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = <<"unavailable">>}], children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = "member"}, - #xmlattr{name = 'role', value = "none"}]}]}, + [#xmlattr{name = 'affiliation', value = <<"member">>}, + #xmlattr{name = 'role', value = <<"none">>}]}]}, #xmlel{ns = ?NS_MUC_USER, name = 'status', children = [#xmlcdata{cdata = list_to_binary(Msg1 ++ " (" ++ FromIdent ++ ")")}]} ]}), @@ -953,8 +953,8 @@ process_join(StateData, Channel, From, _String) -> #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = "member"}, - #xmlattr{name = 'role', value = "participant"}]}]}, + [#xmlattr{name = 'affiliation', value = <<"member">>}, + #xmlattr{name = 'role', value = <<"participant">>}]}]}, #xmlel{ns = ?NS_MUC_USER, name = 'status', children = [#xmlcdata{cdata = list_to_binary(FromIdent)}]}]}), @@ -979,8 +979,8 @@ process_mode_o(StateData, Chan, _From, Nick, Affiliation, Role) -> #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = Affiliation}, - #xmlattr{name = 'role', value = Role}]}]}]}). + [#xmlattr{name = 'affiliation', value = list_to_binary(Affiliation)}, + #xmlattr{name = 'role', value = list_to_binary(Role)}]}]}]}). process_kick(StateData, Chan, From, Nick, String) -> Msg = lists:last(string:tokens(String, ":")), @@ -994,12 +994,12 @@ process_kick(StateData, Chan, From, Nick, String) -> exmpp_jid:make_jid(lists:concat([Chan, "%", StateData#state.server]), StateData#state.host, Nick), StateData#state.user, - #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = "unavailable"}], children = + #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = <<"unavailable">>}], children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = "none"}, - #xmlattr{name = 'role', value = "none"}]}, - #xmlel{ns = ?NS_MUC_USER, name = 'status', attrs = [#xmlattr{name = 'code', value = "307"}]} + [#xmlattr{name = 'affiliation', value = <<"none">>}, + #xmlattr{name = 'role', value = <<"none">>}]}, + #xmlel{ns = ?NS_MUC_USER, name = 'status', attrs = [#xmlattr{name = 'code', value = <<"307">>}]} ]}]}). process_nick(StateData, From, NewNick) -> @@ -1015,13 +1015,13 @@ process_nick(StateData, From, NewNick) -> lists:concat([Chan, "%", StateData#state.server]), StateData#state.host, FromUser), StateData#state.user, - #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = "unavailable"}], children = + #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = <<"unavailable">>}], children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = "member"}, - #xmlattr{name = 'role', value = "participant"}, - #xmlattr{name = 'nick', value = Nick}]}, - #xmlel{ns = ?NS_MUC_USER, name = 'status', attrs = [#xmlattr{name = 'code', value = "303"}]} + [#xmlattr{name = 'affiliation', value = <<"member">>}, + #xmlattr{name = 'role', value = <<"participant">>}, + #xmlattr{name = 'nick', value = list_to_binary(Nick)}]}, + #xmlel{ns = ?NS_MUC_USER, name = 'status', attrs = [#xmlattr{name = 'code', value = <<"303">>}]} ]}]}), ejabberd_router:route( exmpp_jid:make_jid( @@ -1031,8 +1031,8 @@ process_nick(StateData, From, NewNick) -> #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', children = [#xmlel{ns = ?NS_MUC_USER, name = 'x', children = [#xmlel{ns = ?NS_MUC_USER, name = 'item', attrs = - [#xmlattr{name = 'affiliation', value = "member"}, - #xmlattr{name = 'role', value = "participant"}]} + [#xmlattr{name = 'affiliation', value = <<"member">>}, + #xmlattr{name = 'role', value = <<"participant">>}]} ]}]}), ?SETS:add_element(Nick, remove_element(FromUser, Ps)); @@ -1051,8 +1051,8 @@ process_error(StateData, String) -> lists:concat([Chan, "%", StateData#state.server]), StateData#state.host, StateData#state.nick), StateData#state.user, - #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = "error"}], children = - [#xmlel{ns = ?NS_JABBER_CLIENT, name = 'error', attrs = [#xmlattr{name = 'code', value = "502"}], children = + #xmlel{ns = ?NS_JABBER_CLIENT, name = 'presence', attrs = [#xmlattr{name = 'type', value = <<"error">>}], children = + [#xmlel{ns = ?NS_JABBER_CLIENT, name = 'error', attrs = [#xmlattr{name = 'code', value = <<"502">>}], children = [#xmlcdata{cdata = list_to_binary(String)}]}]}) end, dict:fetch_keys(StateData#state.channels)). diff --git a/src/mod_last.erl b/src/mod_last.erl index 85644b775..b363db588 100644 --- a/src/mod_last.erl +++ b/src/mod_last.erl @@ -74,7 +74,7 @@ stop(Host) -> process_local_iq(_From, _To, #iq{type = get} = IQ_Rec) -> Sec = trunc(element(1, erlang:statistics(wall_clock))/1000), Response = #xmlel{ns = ?NS_LAST_ACTIVITY, name = 'query', attrs = - [#xmlattr{name = 'seconds', value = integer_to_list(Sec)}]}, + [#xmlattr{name = 'seconds', value = list_to_binary(integer_to_list(Sec))}]}, exmpp_iq:result(IQ_Rec, Response); process_local_iq(_From, _To, #iq{type = set} = IQ_Rec) -> exmpp_iq:error(IQ_Rec, 'not-allowed'). @@ -121,7 +121,7 @@ get_last(IQ_Rec, LUser, LServer) -> TimeStamp2 = MegaSecs * 1000000 + Secs, Sec = TimeStamp2 - TimeStamp, Response = #xmlel{ns = ?NS_LAST_ACTIVITY, name = 'query', - attrs = [#xmlattr{name = 'seconds', value = integer_to_list(Sec)}], + attrs = [#xmlattr{name = 'seconds', value = list_to_binary(integer_to_list(Sec))}], children = [#xmlcdata{cdata = Status}]}, exmpp_iq:result(IQ_Rec, Response) end. diff --git a/src/mod_last_odbc.erl b/src/mod_last_odbc.erl index 1dca155e8..286f19867 100644 --- a/src/mod_last_odbc.erl +++ b/src/mod_last_odbc.erl @@ -67,7 +67,7 @@ stop(Host) -> process_local_iq(_From, _To, #iq{type = get} = IQ_Rec) -> Sec = trunc(element(1, erlang:statistics(wall_clock))/1000), Response = #xmlel{ns = ?NS_LAST_ACTIVITY, name = 'query', attrs = - [#xmlattr{name = 'seconds', value = integer_to_list(Sec)}]}, + [#xmlattr{name = 'seconds', value = list_to_binary(integer_to_list(Sec))}]}, exmpp_iq:result(IQ_Rec, Response); process_local_iq(_From, _To, #iq{type = set} = IQ_Rec) -> exmpp_iq:error(IQ_Rec, 'not-allowed'). @@ -116,7 +116,7 @@ get_last(IQ_Rec, LUser, LServer) -> TimeStamp2 = MegaSecs * 1000000 + Secs, Sec = TimeStamp2 - TimeStamp, Response = #xmlel{ns = ?NS_LAST_ACTIVITY, name = 'query', - attrs = [#xmlattr{name = 'seconds', value = integer_to_list(Sec)}], + attrs = [#xmlattr{name = 'seconds', value = list_to_binary(integer_to_list(Sec))}], children = [#xmlcdata{cdata = list_to_binary(Status)}]}, exmpp_iq:result(IQ_Rec, Response); _ -> diff --git a/src/mod_muc/mod_muc.erl b/src/mod_muc/mod_muc.erl index e55b19afb..9dd7de980 100644 --- a/src/mod_muc/mod_muc.erl +++ b/src/mod_muc/mod_muc.erl @@ -98,19 +98,20 @@ stop(Host) -> %% C) mod_muc:stop was called, and each room is being terminated %% In this case, the mod_muc process died before the room processes %% So the message sending must be catched -room_destroyed(Host, Room, Pid, ServerHost) -> +room_destroyed(Host, Room, Pid, ServerHost) when is_binary(Host), + is_binary(Room) -> catch gen_mod:get_module_proc(ServerHost, ?PROCNAME) ! {room_destroyed, {Room, Host}, Pid}, ok. -store_room(Host, Name, Opts) -> +store_room(Host, Name, Opts) when is_binary(Host), is_binary(Name) -> F = fun() -> mnesia:write(#muc_room{name_host = {Name, Host}, opts = Opts}) end, mnesia:transaction(F). -restore_room(Host, Name) -> +restore_room(Host, Name) when is_binary(Host), is_binary(Name) -> case catch mnesia:dirty_read(muc_room, {Name, Host}) of [#muc_room{opts = Opts}] -> Opts; @@ -118,7 +119,7 @@ restore_room(Host, Name) -> error end. -forget_room(Host, Name) -> +forget_room(Host, Name) when is_binary(Host), is_binary(Name) -> F = fun() -> mnesia:delete({muc_room, {Name, Host}}) end, diff --git a/src/mod_offline_odbc.erl b/src/mod_offline_odbc.erl index 4f121e0af..4a169c10f 100644 --- a/src/mod_offline_odbc.erl +++ b/src/mod_offline_odbc.erl @@ -257,9 +257,9 @@ pop_offline_messages(Ls, User, Server) [El] = exmpp_xml:parse_document(XML, [names_as_atom, {check_elems, xmpp}, {check_nss,xmpp}, {check_attrs,xmpp}]), - To = exmpp_jid:list_to_jid( + To = exmpp_jid:binary_to_jid( exmpp_stanza:get_recipient(El)), - From = exmpp_jid:list_to_jid( + From = exmpp_jid:binary_to_jid( exmpp_stanza:get_sender(El)), [{route, From, To, El}] catch diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl index 674bdd0c6..0b1352d5d 100644 --- a/src/mod_privacy.erl +++ b/src/mod_privacy.erl @@ -156,14 +156,14 @@ process_list_get(LUser, LServer, Name) -> item_to_xml(Item) -> - Attrs1 = [#xmlattr{name = 'action', value = action_to_list(Item#listitem.action)}, - #xmlattr{name = 'order', value = order_to_list(Item#listitem.order)}], + Attrs1 = [#xmlattr{name = 'action', value = action_to_binary(Item#listitem.action)}, + #xmlattr{name = 'order', value = order_to_binary(Item#listitem.order)}], Attrs2 = case Item#listitem.type of none -> Attrs1; Type -> - [#xmlattr{name = 'type', value = type_to_list(Item#listitem.type)}, - #xmlattr{name = 'value', value = value_to_list(Type, Item#listitem.value)} | + [#xmlattr{name = 'type', value = type_to_binary(Item#listitem.type)}, + #xmlattr{name = 'value', value = value_to_binary(Type, Item#listitem.value)} | Attrs1] end, SubEls = case Item#listitem.match_all of @@ -199,34 +199,34 @@ item_to_xml(Item) -> exmpp_xml:set_attributes(#xmlel{ns = ?NS_PRIVACY, name = item, children = SubEls}, Attrs2). -action_to_list(Action) -> +action_to_binary(Action) -> case Action of - allow -> "allow"; - deny -> "deny" + allow -> <<"allow">>; + deny -> <<"deny">> end. -order_to_list(Order) -> - integer_to_list(Order). +order_to_binary(Order) -> + list_to_binary(integer_to_list(Order)). -type_to_list(Type) -> +type_to_binary(Type) -> case Type of - jid -> "jid"; - group -> "group"; - subscription -> "subscription" + jid -> <<"jid">>; + group -> <<"group">>; + subscription -> <<"subscription">> end. -value_to_list(Type, Val) -> +value_to_binary(Type, Val) -> case Type of jid -> {N, D, R} = Val, - exmpp_jid:jid_to_list(N, D, R); + exmpp_jid:jid_to_binary(N, D, R); group -> Val; subscription -> case Val of - both -> "both"; - to -> "to"; - from -> "from"; - none -> "none" + both -> <<"both">>; + to -> <<"to">>; + from -> <<"from">>; + none -> <<"none">> end end. diff --git a/src/mod_privacy_odbc.erl b/src/mod_privacy_odbc.erl index 67a8e6a33..943354191 100644 --- a/src/mod_privacy_odbc.erl +++ b/src/mod_privacy_odbc.erl @@ -162,14 +162,14 @@ process_list_get(LUser, LServer, Name) -> item_to_xml(Item) -> - Attrs1 = [#xmlattr{name = 'action', value = action_to_list(Item#listitem.action)}, - #xmlattr{name = 'order', value = order_to_list(Item#listitem.order)}], + Attrs1 = [#xmlattr{name = 'action', value = action_to_binary(Item#listitem.action)}, + #xmlattr{name = 'order', value = order_to_binary(Item#listitem.order)}], Attrs2 = case Item#listitem.type of none -> Attrs1; Type -> - [#xmlattr{name = 'type', value = type_to_list(Item#listitem.type)}, - #xmlattr{name = 'value', value = value_to_list(Type, Item#listitem.value)} | + [#xmlattr{name = 'type', value = type_to_binary(Item#listitem.type)}, + #xmlattr{name = 'value', value = value_to_binary(Type, Item#listitem.value)} | Attrs1] end, SubEls = case Item#listitem.match_all of @@ -205,34 +205,34 @@ item_to_xml(Item) -> exmpp_xml:set_attributes(#xmlel{ns = ?NS_PRIVACY, name = item, children = SubEls}, Attrs2). -action_to_list(Action) -> +action_to_binary(Action) -> case Action of - allow -> "allow"; - deny -> "deny" + allow -> <<"allow">>; + deny -> <<"deny">> end. -order_to_list(Order) -> - integer_to_list(Order). +order_to_binary(Order) -> + list_to_binary(integer_to_list(Order)). -type_to_list(Type) -> +type_to_binary(Type) -> case Type of - jid -> "jid"; - group -> "group"; - subscription -> "subscription" + jid -> <<"jid">>; + group -> <<"group">>; + subscription -> <<"subscription">> end. -value_to_list(Type, Val) -> +value_to_binary(Type, Val) -> case Type of jid -> {N, D, R} = Val, - exmpp_jid:jid_to_list(N, D, R); + exmpp_jid:jid_to_binary(N, D, R); group -> Val; subscription -> case Val of - both -> "both"; - to -> "to"; - from -> "from"; - none -> "none" + both -> <<"both">>; + to -> <<"to">>; + from -> <<"from">>; + none -> <<"none">> end end. diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index 95aab8969..4b388d72c 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -315,12 +315,12 @@ identity(Host) -> end, #xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = Identity}. -disco_local_identity(Acc, _From, To, [], _Lang) -> +disco_local_identity(Acc, _From, To, <<>>, _Lang) -> Acc ++ [identity(To#jid.ldomain)]; disco_local_identity(Acc, _From, _To, _Node, _Lang) -> Acc. -disco_local_features(Acc, _From, To, [], _Lang) -> +disco_local_features(Acc, _From, To, <<>>, _Lang) -> Host = To#jid.ldomain, Feats = case Acc of {result, I} -> I; @@ -332,12 +332,12 @@ disco_local_features(Acc, _From, To, [], _Lang) -> disco_local_features(Acc, _From, _To, _Node, _Lang) -> Acc. -disco_local_items(Acc, _From, _To, [], _Lang) -> +disco_local_items(Acc, _From, _To, <<>>, _Lang) -> Acc; disco_local_items(Acc, _From, _To, _Node, _Lang) -> Acc. -disco_sm_identity(Acc, _From, To, [], _Lang) -> +disco_sm_identity(Acc, _From, To, <<>>, _Lang) -> Acc ++ [identity(To#jid.ldomain)]; disco_sm_identity(Acc, From, To, Node, _Lang) -> LOwner = jlib:short_prepd_bare_jid(To), @@ -360,7 +360,7 @@ disco_sm_features(Acc, From, To, Node, _Lang) -> Acc end. -disco_sm_items(Acc, From, To, [], _Lang) -> +disco_sm_items(Acc, From, To, <<>>, _Lang) -> %% TODO, use iq_disco_items(Host, [], From) Host = To#jid.ldomain, LJID = jlib:short_prepd_bare_jid(To), @@ -381,7 +381,8 @@ disco_sm_items(Acc, From, To, [], _Lang) -> {result, NodeItems ++ Items} end; -disco_sm_items(Acc, From, To, Node, _Lang) -> +disco_sm_items(Acc, From, To, NodeB, _Lang) -> + Node = binary_to_list(NodeB), %% TODO, use iq_disco_items(Host, Node, From) Host = To#jid.ldomain, LJID = jlib:short_prepd_bare_jid(To), diff --git a/src/mod_roster.erl b/src/mod_roster.erl index 6817e07a2..f412e1906 100644 --- a/src/mod_roster.erl +++ b/src/mod_roster.erl @@ -154,7 +154,7 @@ item_to_xml(Item) -> Attrs1 = exmpp_xml:set_attribute_in_list([], 'jid', exmpp_jid:jid_to_list(U, S, R)), Attrs2 = case Item#roster.name of - "" -> + <<>> -> Attrs1; Name -> exmpp_xml:set_attribute_in_list(Attrs1, 'name', Name) @@ -205,7 +205,7 @@ process_item_set(From, To, #xmlel{} = El) -> jid = JID}; [I] -> I#roster{jid = JID, - name = "", + name = <<>>, groups = [], xs = []} end, @@ -274,7 +274,7 @@ process_item_attrs(Item, [#xmlattr{name = Attr, value = Val} | Attrs]) -> process_item_attrs(Item#roster{name = Val}, Attrs); 'subscription' -> case Val of - "remove" -> + <<"remove">> -> process_item_attrs(Item#roster{subscription = remove}, Attrs); _ -> @@ -623,19 +623,19 @@ process_item_attrs_ws(Item, [#xmlattr{name = Attr, value = Val} | Attrs]) -> process_item_attrs_ws(Item#roster{name = Val}, Attrs); 'subscription' -> case Val of - "remove" -> + <<"remove">> -> process_item_attrs_ws(Item#roster{subscription = remove}, Attrs); - "none" -> + <<"none">> -> process_item_attrs_ws(Item#roster{subscription = none}, Attrs); - "both" -> + <<"both">> -> process_item_attrs_ws(Item#roster{subscription = both}, Attrs); - "from" -> + <<"from">> -> process_item_attrs_ws(Item#roster{subscription = from}, Attrs); - "to" -> + <<"to">> -> process_item_attrs_ws(Item#roster{subscription = to}, Attrs); _ -> @@ -888,7 +888,7 @@ user_roster(User, Server, Query, Lang) -> [?XAC("td", [{"class", "valign"}], catch exmpp_jid:jid_to_list(U, S, R)), ?XAC("td", [{"class", "valign"}], - R#roster.name), + binary_to_list(R#roster.name)), ?XAC("td", [{"class", "valign"}], atom_to_list(R#roster.subscription)), ?XAC("td", [{"class", "valign"}], diff --git a/src/mod_roster.hrl b/src/mod_roster.hrl index 617e17df4..8fd0be57f 100644 --- a/src/mod_roster.hrl +++ b/src/mod_roster.hrl @@ -22,7 +22,7 @@ -record(roster, {usj, us, jid, - name = "", + name = <<>>, subscription = none, ask = none, groups = [], diff --git a/src/mod_roster_odbc.erl b/src/mod_roster_odbc.erl index ad85f0890..6434f3897 100644 --- a/src/mod_roster_odbc.erl +++ b/src/mod_roster_odbc.erl @@ -181,7 +181,7 @@ item_to_xml(Item) -> Attrs1 = exmpp_xml:set_attribute_in_list([], 'jid', exmpp_jid:jid_to_list(U, S, R)), Attrs2 = case Item#roster.name of - "" -> + <<>> -> Attrs1; Name -> exmpp_xml:set_attribute_in_list(Attrs1, 'name', Name) @@ -245,7 +245,7 @@ process_item_set(From, To, #xmlel{} = El) -> usj = {LUser, LServer, LJID}, us = {LUser, LServer}, jid = LJID, - name = ""} + name = <<>>} end end, Item1 = process_item_attrs(Item, El#xmlel.attrs), @@ -315,7 +315,7 @@ process_item_attrs(Item, [#xmlattr{name = Attr, value = Val} | Attrs]) -> process_item_attrs(Item#roster{name = Val}, Attrs); 'subscription' -> case Val of - "remove" -> + <<"remove">> -> process_item_attrs(Item#roster{subscription = remove}, Attrs); _ -> @@ -685,19 +685,19 @@ process_item_attrs_ws(Item, [#xmlattr{name = Attr, value = Val} | Attrs]) -> process_item_attrs_ws(Item#roster{name = Val}, Attrs); 'subscription' -> case Val of - "remove" -> + <<"remove">> -> process_item_attrs_ws(Item#roster{subscription = remove}, Attrs); - "none" -> + <<"none">> -> process_item_attrs_ws(Item#roster{subscription = none}, Attrs); - "both" -> + <<"both">> -> process_item_attrs_ws(Item#roster{subscription = both}, Attrs); - "from" -> + <<"from">> -> process_item_attrs_ws(Item#roster{subscription = from}, Attrs); - "to" -> + <<"to">> -> process_item_attrs_ws(Item#roster{subscription = to}, Attrs); _ -> @@ -834,7 +834,7 @@ raw_to_record(LServer, {User, SJID, Nick, SSubscription, SAsk, SAskMessage, #roster{usj = {UserB, LServer, LJID}, us = {UserB, LServer}, jid = LJID, - name = Nick, + name = list_to_binary(Nick), subscription = Subscription, ask = Ask, askmessage = list_to_binary(SAskMessage)} @@ -852,7 +852,7 @@ record_to_string(#roster{us = {User, _Server}, Username = ejabberd_odbc:escape(binary_to_list(User)), {U, S, R} = JID, SJID = ejabberd_odbc:escape(exmpp_jid:jid_to_list(U, S, R)), - Nick = ejabberd_odbc:escape(Name), + Nick = ejabberd_odbc:escape(binary_to_list(Name)), SSubscription = case Subscription of both -> "B"; to -> "T"; @@ -939,7 +939,7 @@ user_roster(User, Server, Query, Lang) -> [?XAC("td", [{"class", "valign"}], catch exmpp_jid:jid_to_list(U, S, R)), ?XAC("td", [{"class", "valign"}], - R#roster.name), + binary_to_list(R#roster.name)), ?XAC("td", [{"class", "valign"}], atom_to_list(R#roster.subscription)), ?XAC("td", [{"class", "valign"}], diff --git a/src/mod_stats.erl b/src/mod_stats.erl index 0884ba252..b1f80a98e 100644 --- a/src/mod_stats.erl +++ b/src/mod_stats.erl @@ -63,9 +63,9 @@ process_local_iq(_From, _To, #iq{type = set} = IQ_Rec) -> get_names([], Res) -> Res; get_names([#xmlel{name = 'stat', attrs = Attrs} | Els], Res) -> - Name = exmpp_xml:get_attribute_from_list(Attrs, 'name', ""), + Name = exmpp_xml:get_attribute_from_list_as_binary(Attrs, 'name', <<>>), case Name of - "" -> + <<>> -> get_names(Els, Res); _ -> get_names(Els, [Name | Res]) @@ -78,10 +78,10 @@ get_names([_ | Els], Res) -> get_local_stats(_Server, [], []) -> {result, - [?STAT("users/online"), - ?STAT("users/total"), - ?STAT("users/all-hosts/online"), - ?STAT("users/all-hosts/total") + [?STAT(<<"users/online">>), + ?STAT(<<"users/total">>), + ?STAT(<<"users/all-hosts/online">>), + ?STAT(<<"users/all-hosts/total">>) ]}; get_local_stats(Server, [], Names) -> @@ -91,13 +91,13 @@ get_local_stats(Server, [], Names) -> get_local_stats(_Server, ["running nodes", _], []) -> {result, - [?STAT("time/uptime"), - ?STAT("time/cputime"), - ?STAT("users/online"), - ?STAT("transactions/commited"), - ?STAT("transactions/aborted"), - ?STAT("transactions/restarted"), - ?STAT("transactions/logged") + [?STAT(<<"time/uptime">>), + ?STAT(<<"time/cputime">>), + ?STAT(<<"users/online">>), + ?STAT(<<"transactions/commited">>), + ?STAT(<<"transactions/aborted">>), + ?STAT(<<"transactions/restarted">>), + ?STAT(<<"transactions/logged">>) ]}; get_local_stats(_Server, ["running nodes", ENode], Names) -> @@ -126,107 +126,107 @@ get_local_stats(_Server, _, _) -> [#xmlattr{name = 'name', value = Name}], children = [#xmlel{ns = ?NS_STATS, name = 'error', attrs = [#xmlattr{name = 'code', value = Code}], children = - [#xmlcdata{cdata = list_to_binary(Desc)}]}]}). + [#xmlcdata{cdata = Desc}]}]}). -get_local_stat(Server, [], Name) when Name == "users/online" -> +get_local_stat(Server, [], Name) when Name == <<"users/online">> -> case catch ejabberd_sm:get_vh_session_list(list_to_binary(Server)) of {'EXIT', _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Users -> - ?STATVAL(integer_to_list(length(Users)), "users") + ?STATVAL(list_to_binary(integer_to_list(length(Users))), <<"users">>) end; -get_local_stat(Server, [], Name) when Name == "users/total" -> +get_local_stat(Server, [], Name) when Name == <<"users/total">> -> %%LServer = jlib:nameprep(Server), case catch ejabberd_auth:get_vh_registered_users_number(Server) of {'EXIT', _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); NUsers -> - ?STATVAL(integer_to_list(NUsers), "users") + ?STATVAL(list_to_binary(integer_to_list(NUsers)), <<"users">>) end; -get_local_stat(_Server, [], Name) when Name == "users/all-hosts/online" -> +get_local_stat(_Server, [], Name) when Name == <<"users/all-hosts/online">> -> case catch mnesia:table_info(session, size) of {'EXIT', _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Users -> - ?STATVAL(integer_to_list(Users), "users") + ?STATVAL(list_to_binary(integer_to_list(Users)), <<"users">>) end; -get_local_stat(_Server, [], Name) when Name == "users/all-hosts/total" -> +get_local_stat(_Server, [], Name) when Name == <<"users/all-hosts/total">> -> case catch mnesia:table_info(passwd, size) of {'EXIT', _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Users -> - ?STATVAL(integer_to_list(Users), "users") + ?STATVAL(list_to_binary(integer_to_list(Users)), <<"users">>) end; get_local_stat(_Server, _, Name) -> - ?STATERR("404", "Not Found"). + ?STATERR(<<"404">>, <<"Not Found">>). -get_node_stat(Node, Name) when Name == "time/uptime" -> +get_node_stat(Node, Name) when Name == <<"time/uptime">> -> case catch rpc:call(Node, erlang, statistics, [wall_clock]) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); CPUTime -> - ?STATVAL( - io_lib:format("~.3f", [element(1, CPUTime)/1000]), "seconds") + ?STATVAL(list_to_binary( + io_lib:format("~.3f", [element(1, CPUTime)/1000])), "seconds") end; -get_node_stat(Node, Name) when Name == "time/cputime" -> +get_node_stat(Node, Name) when Name == <<"time/cputime">> -> case catch rpc:call(Node, erlang, statistics, [runtime]) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); RunTime -> - ?STATVAL( - io_lib:format("~.3f", [element(1, RunTime)/1000]), "seconds") + ?STATVAL(list_to_binary( + io_lib:format("~.3f", [element(1, RunTime)/1000])), "seconds") end; -get_node_stat(Node, Name) when Name == "users/online" -> +get_node_stat(Node, Name) when Name == <<"users/online">> -> case catch rpc:call(Node, ejabberd_sm, dirty_get_my_sessions_list, []) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Users -> - ?STATVAL(integer_to_list(length(Users)), "users") + ?STATVAL(list_to_binary(integer_to_list(length(Users))), <<"users">>) end; -get_node_stat(Node, Name) when Name == "transactions/commited" -> +get_node_stat(Node, Name) when Name == <<"transactions/commited">> -> case catch rpc:call(Node, mnesia, system_info, [transaction_commits]) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Transactions -> - ?STATVAL(integer_to_list(Transactions), "transactions") + ?STATVAL(list_to_binary(integer_to_list(Transactions)), <<"transactions">>) end; -get_node_stat(Node, Name) when Name == "transactions/aborted" -> +get_node_stat(Node, Name) when Name == <<"transactions/aborted">> -> case catch rpc:call(Node, mnesia, system_info, [transaction_failures]) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Transactions -> - ?STATVAL(integer_to_list(Transactions), "transactions") + ?STATVAL(list_to_binary(integer_to_list(Transactions)), <<"transactions">>) end; -get_node_stat(Node, Name) when Name == "transactions/restarted" -> +get_node_stat(Node, Name) when Name == <<"transactions/restarted">> -> case catch rpc:call(Node, mnesia, system_info, [transaction_restarts]) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Transactions -> - ?STATVAL(integer_to_list(Transactions), "transactions") + ?STATVAL(list_to_binary(integer_to_list(Transactions)), <<"transactions">>) end; -get_node_stat(Node, Name) when Name == "transactions/logged" -> +get_node_stat(Node, Name) when Name == <<"transactions/logged">> -> case catch rpc:call(Node, mnesia, system_info, [transaction_log_writes]) of {badrpc, _Reason} -> - ?STATERR("500", "Internal Server Error"); + ?STATERR(<<"500">>, <<"Internal Server Error">>); Transactions -> - ?STATVAL(integer_to_list(Transactions), "transactions") + ?STATVAL(list_to_binary(integer_to_list(Transactions)), <<"transactions">>) end; get_node_stat(_, Name) -> - ?STATERR("404", "Not Found"). + ?STATERR(<<"404">>, <<"Not Found">>). search_running_node(SNode) -> diff --git a/src/mod_vcard.erl b/src/mod_vcard.erl index 465203b1d..b465a14ed 100644 --- a/src/mod_vcard.erl +++ b/src/mod_vcard.erl @@ -284,7 +284,7 @@ set_vcard(User, LServer, VCARD) -> [#xmlel{ns = ?NS_SEARCH, name = 'instructions', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "You need an x:data capable client to search"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = - [#xmlattr{name = 'type', value = "form"}], children = + [#xmlattr{name = 'type', value = <<"form">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "Search users in ") ++ exmpp_jid:jid_to_list(JID))}]}, #xmlel{ns = ?NS_SEARCH, name = 'instructions', children = @@ -293,18 +293,18 @@ set_vcard(User, LServer, VCARD) -> "for any matching Jabber User " "(Add * to the end of field to " "match substring)"))}]}, - ?TLFIELD("text-single", "User", "user"), - ?TLFIELD("text-single", "Full Name", "fn"), - ?TLFIELD("text-single", "Name", "first"), - ?TLFIELD("text-single", "Middle Name", "middle"), - ?TLFIELD("text-single", "Family Name", "last"), - ?TLFIELD("text-single", "Nickname", "nick"), - ?TLFIELD("text-single", "Birthday", "bday"), - ?TLFIELD("text-single", "Country", "ctry"), - ?TLFIELD("text-single", "City", "locality"), - ?TLFIELD("text-single", "Email", "email"), - ?TLFIELD("text-single", "Organization Name", "orgname"), - ?TLFIELD("text-single", "Organization Unit", "orgunit") + ?TLFIELD(<<"text-single">>, "User", <<"user">>), + ?TLFIELD(<<"text-single">>, "Full Name", <<"fn">>), + ?TLFIELD(<<"text-single">>, "Name", <<"first">>), + ?TLFIELD(<<"text-single">>, "Middle Name", <<"middle">>), + ?TLFIELD(<<"text-single">>, "Family Name", <<"last">>), + ?TLFIELD(<<"text-single">>, "Nickname", <<"nick">>), + ?TLFIELD(<<"text-single">>, "Birthday", <<"bday">>), + ?TLFIELD(<<"text-single">>, "Country", <<"ctry">>), + ?TLFIELD(<<"text-single">>, "City", <<"locality">>), + ?TLFIELD(<<"text-single">>, "Email", <<"email">>), + ?TLFIELD(<<"text-single">>, "Organization Name", <<"orgname">>), + ?TLFIELD(<<"text-single">>, "Organization Unit", <<"orgunit">>) ]}]). @@ -346,7 +346,7 @@ do_route(ServerHost, From, To, Packet) -> ns = ?NS_DATA_FORMS, name = 'x', attrs = [#xmlattr{name = 'type', - value = "result"}], + value = <<"result">>}], children = search_result(Lang, To, ServerHost, XData)}]}, ResIQ = exmpp_iq:result(Packet, @@ -371,24 +371,24 @@ do_route(ServerHost, From, To, Packet) -> #xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = [ #xmlattr{name = 'category', - value = "directory"}, + value = <<"directory">>}, #xmlattr{name = 'type', - value = "user"}, + value = <<"user">>}, #xmlattr{name = 'name', - value = translate:translate(Lang, - "vCard User Search")}]}, + value = list_to_binary(translate:translate(Lang, + "vCard User Search"))}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_DISCO_INFO_s}]}, + value = list_to_binary(?NS_DISCO_INFO_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_SEARCH_s}]}, + value = list_to_binary(?NS_SEARCH_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_VCARD_s}]} + value = list_to_binary(?NS_VCARD_s)}]} ]}, ResIQ = exmpp_iq:result(Packet, Result), ejabberd_router:route(To, @@ -449,42 +449,42 @@ search_result(Lang, JID, ServerHost, Data) -> translate:translate(Lang, "Search Results for ") ++ exmpp_jid:jid_to_list(JID))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'reported', children = - [?TLFIELD("text-single", "Jabber ID", "jid"), - ?TLFIELD("text-single", "Full Name", "fn"), - ?TLFIELD("text-single", "Name", "first"), - ?TLFIELD("text-single", "Middle Name", "middle"), - ?TLFIELD("text-single", "Family Name", "last"), - ?TLFIELD("text-single", "Nickname", "nick"), - ?TLFIELD("text-single", "Birthday", "bday"), - ?TLFIELD("text-single", "Country", "ctry"), - ?TLFIELD("text-single", "City", "locality"), - ?TLFIELD("text-single", "Email", "email"), - ?TLFIELD("text-single", "Organization Name", "orgname"), - ?TLFIELD("text-single", "Organization Unit", "orgunit") + [?TLFIELD(<<"text-single">>, "Jabber ID", <<"jid">>), + ?TLFIELD(<<"text-single">>, "Full Name", <<"fn">>), + ?TLFIELD(<<"text-single">>, "Name", <<"first">>), + ?TLFIELD(<<"text-single">>, "Middle Name", <<"middle">>), + ?TLFIELD(<<"text-single">>, "Family Name", <<"last">>), + ?TLFIELD(<<"text-single">>, "Nickname", <<"nick">>), + ?TLFIELD(<<"text-single">>, "Birthday", <<"bday">>), + ?TLFIELD(<<"text-single">>, "Country", <<"ctry">>), + ?TLFIELD(<<"text-single">>, "City", <<"locality">>), + ?TLFIELD(<<"text-single">>, "Email", <<"email">>), + ?TLFIELD(<<"text-single">>, "Organization Name", <<"orgname">>), + ?TLFIELD(<<"text-single">>, "Organization Unit", <<"orgunit">>) ]}] ++ lists:map(fun record_to_item/1, search(ServerHost, Data)). -define(FIELD(Var, Val), #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = Var}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = - [#xmlcdata{cdata = list_to_binary(Val)}]}]}). + [#xmlcdata{cdata = Val}]}]}). record_to_item(R) -> {User, Server} = R#vcard_search.user, #xmlel{ns = ?NS_DATA_FORMS, name = 'item', children = [ - ?FIELD("jid", User ++ "@" ++ Server), - ?FIELD("fn", R#vcard_search.fn), - ?FIELD("last", R#vcard_search.family), - ?FIELD("first", R#vcard_search.given), - ?FIELD("middle", R#vcard_search.middle), - ?FIELD("nick", R#vcard_search.nickname), - ?FIELD("bday", R#vcard_search.bday), - ?FIELD("ctry", R#vcard_search.ctry), - ?FIELD("locality", R#vcard_search.locality), - ?FIELD("email", R#vcard_search.email), - ?FIELD("orgname", R#vcard_search.orgname), - ?FIELD("orgunit", R#vcard_search.orgunit) + ?FIELD(<<"jid">>, list_to_binary(User ++ "@" ++ Server)), + ?FIELD(<<"fn">>, list_to_binary(R#vcard_search.fn)), + ?FIELD(<<"last">>, list_to_binary(R#vcard_search.family)), + ?FIELD(<<"first">>, list_to_binary(R#vcard_search.given)), + ?FIELD(<<"middle">>, list_to_binary(R#vcard_search.middle)), + ?FIELD(<<"nick">>, list_to_binary(R#vcard_search.nickname)), + ?FIELD(<<"bday">>, list_to_binary(R#vcard_search.bday)), + ?FIELD(<<"ctry">>, list_to_binary(R#vcard_search.ctry)), + ?FIELD(<<"locality">>, list_to_binary(R#vcard_search.locality)), + ?FIELD(<<"email">>, list_to_binary(R#vcard_search.email)), + ?FIELD(<<"orgname">>, list_to_binary(R#vcard_search.orgname)), + ?FIELD(<<"orgunit">>, list_to_binary(R#vcard_search.orgunit)) ] }. diff --git a/src/mod_vcard_ldap.erl b/src/mod_vcard_ldap.erl index a7200a38a..b6f5a35d3 100644 --- a/src/mod_vcard_ldap.erl +++ b/src/mod_vcard_ldap.erl @@ -391,14 +391,14 @@ ldap_attribute_to_vcard(_, _) -> [#xmlel{ns = ?NS_SEARCH, name = 'instructions', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "You need an x:data capable client to search"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = - [#xmlattr{name = 'type', value = "form"}], children = + [#xmlattr{name = 'type', value = <<"form">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "Search users in ") ++ exmpp_jid:jid_to_list(JID))}]}, #xmlel{ns = ?NS_SEARCH, name = 'instructions', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "Fill in fields to search " "for any matching Jabber User"))}]} - ] ++ lists:map(fun({X,Y}) -> ?TLFIELD("text-single", X, Y) end, SearchFields)}]). + ] ++ lists:map(fun({X,Y}) -> ?TLFIELD(<<"text-single">>, X, list_to_binary(Y)) end, SearchFields)}]). do_route(State, From, To, Packet) -> spawn(?MODULE, route, [State, From, To, Packet]). @@ -439,7 +439,7 @@ route(State, From, To, Packet) -> ns = ?NS_DATA_FORMS, name = 'x', attrs = [#xmlattr{name = 'type', - value = "result"}], + value = <<"result">>}], children = search_result(Lang, To, State, XData)}]}, ResIQ = exmpp_iq:result(Packet, Result), @@ -464,20 +464,20 @@ route(State, From, To, Packet) -> #xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = [ #xmlattr{name = 'category', - value = "directory"}, + value = <<"directory">>}, #xmlattr{name = 'type', - value = "user"}, + value = <<"user">>}, #xmlattr{name = 'name', - value = translate:translate(Lang, - "vCard User Search")}]}, + value = list_to_binary(translate:translate(Lang, + "vCard User Search"))}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_SEARCH_s}]}, + value = list_to_binary(?NS_SEARCH_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_VCARD_s}]} + value = list_to_binary(?NS_VCARD_s)}]} ]}, ResIQ = exmpp_iq:result(Packet, Result), ejabberd_router:route(To, @@ -528,9 +528,9 @@ search_result(Lang, JID, State, Data) -> [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "Search Results for ") ++ exmpp_jid:jid_to_list(JID))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'reported', children = - [?TLFIELD("text-single", "Jabber ID", "jid")] ++ + [?TLFIELD(<<"text-single">>, "Jabber ID", <<"jid">>)] ++ lists:map( - fun({Name, Value}) -> ?TLFIELD("text-single", Name, Value) end, + fun({Name, Value}) -> ?TLFIELD(<<"text-single">>, Name, list_to_binary(Value)) end, SearchReported) }], case search(State, Data) of @@ -544,7 +544,7 @@ search_result(Lang, JID, State, Data) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = Var}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = - [#xmlcdata{cdata = list_to_binary(Val)}]}]}). + [#xmlcdata{cdata = Val}]}]}). search(State, Data) -> Base = State#state.base, @@ -591,8 +591,8 @@ search_items(Entries, State) -> VCardMap, {Username, ?MYNAME})} end, SearchReported), - Result = [?FIELD("jid", Username ++ "@" ++ LServer)] ++ - [?FIELD(Name, Value) || {Name, Value} <- RFields], + Result = [?FIELD(<<"jid">>, list_to_binary(Username ++ "@" ++ LServer))] ++ + [?FIELD(list_to_binary(Name), list_to_binary(Value)) || {Name, Value} <- RFields], [#xmlel{ns = ?NS_DATA_FORMS, name = 'item', children = Result}]; _ -> [] diff --git a/src/mod_vcard_odbc.erl b/src/mod_vcard_odbc.erl index 21f9d0595..a67412dff 100644 --- a/src/mod_vcard_odbc.erl +++ b/src/mod_vcard_odbc.erl @@ -250,7 +250,7 @@ set_vcard(User, LServer, VCARD) -> -define(TLFIELD(Type, Label, Var), #xmlel{ns = ?NS_VCARD, name = 'field', attrs = [ #xmlattr{name = 'type', value = Type}, - #xmlattr{name = 'label', value = translate:translate(Lang, Label)}, + #xmlattr{name = 'label', value = list_to_binary(translate:translate(Lang, Label))}, #xmlattr{name = 'var', value = Var}]}). @@ -258,7 +258,7 @@ set_vcard(User, LServer, VCARD) -> [#xmlel{ns = ?NS_SEARCH, name = 'instructions', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "You need an x:data capable client to search"))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'x', attrs = - [#xmlattr{name = 'type', value = "form"}], children = + [#xmlattr{name = 'type', value = <<"form">>}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'title', children = [#xmlcdata{cdata = list_to_binary(translate:translate(Lang, "Search users in ") ++ exmpp_jid:jid_to_list(JID))}]}, #xmlel{ns = ?NS_SEARCH, name = 'instructions', children = @@ -267,18 +267,18 @@ set_vcard(User, LServer, VCARD) -> "for any matching Jabber User " "(Add * to the end of field to " "match substring)"))}]}, - ?TLFIELD("text-single", "User", "user"), - ?TLFIELD("text-single", "Full Name", "fn"), - ?TLFIELD("text-single", "Name", "first"), - ?TLFIELD("text-single", "Middle Name", "middle"), - ?TLFIELD("text-single", "Family Name", "last"), - ?TLFIELD("text-single", "Nickname", "nick"), - ?TLFIELD("text-single", "Birthday", "bday"), - ?TLFIELD("text-single", "Country", "ctry"), - ?TLFIELD("text-single", "City", "locality"), - ?TLFIELD("text-single", "Email", "email"), - ?TLFIELD("text-single", "Organization Name", "orgname"), - ?TLFIELD("text-single", "Organization Unit", "orgunit") + ?TLFIELD(<<"text-single">>, "User", <<"user">>), + ?TLFIELD(<<"text-single">>, "Full Name", <<"fn">>), + ?TLFIELD(<<"text-single">>, "Name", <<"first">>), + ?TLFIELD(<<"text-single">>, "Middle Name", <<"middle">>), + ?TLFIELD(<<"text-single">>, "Family Name", <<"last">>), + ?TLFIELD(<<"text-single">>, "Nickname", <<"nick">>), + ?TLFIELD(<<"text-single">>, "Birthday", <<"bday">>), + ?TLFIELD(<<"text-single">>, "Country", <<"ctry">>), + ?TLFIELD(<<"text-single">>, "City", <<"locality">>), + ?TLFIELD(<<"text-single">>, "Email", <<"email">>), + ?TLFIELD(<<"text-single">>, "Organization Name", <<"orgname">>), + ?TLFIELD(<<"text-single">>, "Organization Unit", <<"orgunit">>) ]}]). do_route(ServerHost, From, To, Packet) -> @@ -317,7 +317,7 @@ do_route(ServerHost, From, To, Packet) -> ns = ?NS_DATA_FORMS, name = 'x', attrs = [#xmlattr{name = 'type', - value = "result"}], + value = <<"result">>}], children = search_result(Lang, To, ServerHost, XData)}]}, ResIQ = exmpp_iq:result(Packet, @@ -342,20 +342,20 @@ do_route(ServerHost, From, To, Packet) -> #xmlel{ns = ?NS_DISCO_INFO, name = 'identity', attrs = [ #xmlattr{name = 'category', - value = "directory"}, + value = <<"directory">>}, #xmlattr{name = 'type', - value = "user"}, + value = <<"user">>}, #xmlattr{name = 'name', - value = translate:translate(Lang, - "vCard User Search")}]}, + value = list_to_binary(translate:translate(Lang, + "vCard User Search"))}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_SEARCH_s}]}, + value = list_to_binary(?NS_SEARCH_s)}]}, #xmlel{ns = ?NS_DISCO_INFO, name = 'feature', attrs = [ #xmlattr{name = 'var', - value = ?NS_VCARD_s}]} + value = list_to_binary(?NS_VCARD_s)}]} ]}, ResIQ = exmpp_iq:result(Packet, Result), ejabberd_router:route(To, @@ -416,18 +416,18 @@ search_result(Lang, JID, ServerHost, Data) -> translate:translate(Lang, "Search Results for ") ++ exmpp_jid:jid_to_list(JID))}]}, #xmlel{ns = ?NS_DATA_FORMS, name = 'reported', children = - [?TLFIELD("text-single", "Jabber ID", "jid"), - ?TLFIELD("text-single", "Full Name", "fn"), - ?TLFIELD("text-single", "Name", "first"), - ?TLFIELD("text-single", "Middle Name", "middle"), - ?TLFIELD("text-single", "Family Name", "last"), - ?TLFIELD("text-single", "Nickname", "nick"), - ?TLFIELD("text-single", "Birthday", "bday"), - ?TLFIELD("text-single", "Country", "ctry"), - ?TLFIELD("text-single", "City", "locality"), - ?TLFIELD("text-single", "Email", "email"), - ?TLFIELD("text-single", "Organization Name", "orgname"), - ?TLFIELD("text-single", "Organization Unit", "orgunit") + [?TLFIELD(<<"text-single">>, "Jabber ID", <<"jid">>), + ?TLFIELD(<<"text-single">>, "Full Name", <<"fn">>), + ?TLFIELD(<<"text-single">>, "Name", <<"first">>), + ?TLFIELD(<<"text-single">>, "Middle Name", <<"middle">>), + ?TLFIELD(<<"text-single">>, "Family Name", <<"last">>), + ?TLFIELD(<<"text-single">>, "Nickname", <<"nick">>), + ?TLFIELD(<<"text-single">>, "Birthday", <<"bday">>), + ?TLFIELD(<<"text-single">>, "Country", <<"ctry">>), + ?TLFIELD(<<"text-single">>, "City", <<"locality">>), + ?TLFIELD(<<"text-single">>, "Email", <<"email">>), + ?TLFIELD(<<"text-single">>, "Organization Name", <<"orgname">>), + ?TLFIELD(<<"text-single">>, "Organization Unit", <<"orgunit">>) ]}] ++ lists:map(fun(R) -> record_to_item(ServerHost, R) end, search(ServerHost, Data)). @@ -435,7 +435,7 @@ search_result(Lang, JID, ServerHost, Data) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'field', attrs = [#xmlattr{name = 'var', value = Var}], children = [#xmlel{ns = ?NS_DATA_FORMS, name = 'value', children = - [#xmlcdata{cdata = list_to_binary(Val)}]}]}). + [#xmlcdata{cdata = Val}]}]}). record_to_item(LServer, {Username, FN, Family, Given, Middle, @@ -443,18 +443,18 @@ record_to_item(LServer, {Username, FN, Family, Given, Middle, EMail, OrgName, OrgUnit}) -> #xmlel{ns = ?NS_DATA_FORMS, name = 'item', children = [ - ?FIELD("jid", Username ++ "@" ++ LServer), - ?FIELD("fn", FN), - ?FIELD("last", Family), - ?FIELD("first", Given), - ?FIELD("middle", Middle), - ?FIELD("nick", Nickname), - ?FIELD("bday", BDay), - ?FIELD("ctry", CTRY), - ?FIELD("locality", Locality), - ?FIELD("email", EMail), - ?FIELD("orgname", OrgName), - ?FIELD("orgunit", OrgUnit) + ?FIELD(<<"jid">>, list_to_binary(Username ++ "@" ++ LServer)), + ?FIELD(<<"fn">>, list_to_binary(FN)), + ?FIELD(<<"last">>, list_to_binary(Family)), + ?FIELD(<<"first">>, list_to_binary(Given)), + ?FIELD(<<"middle">>, list_to_binary(Middle)), + ?FIELD(<<"nick">>, list_to_binary(Nickname)), + ?FIELD(<<"bday">>, list_to_binary(BDay)), + ?FIELD(<<"ctry">>, list_to_binary(CTRY)), + ?FIELD(<<"locality">>, list_to_binary(Locality)), + ?FIELD(<<"email">>, list_to_binary(EMail)), + ?FIELD(<<"orgname">>, list_to_binary(OrgName)), + ?FIELD(<<"orgunit">>, list_to_binary(OrgUnit)) ] }. diff --git a/src/web/ejabberd_http_poll.erl b/src/web/ejabberd_http_poll.erl index 370217998..7f8c70807 100644 --- a/src/web/ejabberd_http_poll.erl +++ b/src/web/ejabberd_http_poll.erl @@ -416,12 +416,12 @@ get_jid("from", ParsedPacket) -> undefined -> #jid{}; From -> - exmpp_jid:list_to_jid(From) + exmpp_jid:binary_to_jid(From) end; get_jid("to", ParsedPacket) -> case exmpp_stanza:get_recipient(ParsedPacket) of undefined -> #jid{}; From -> - exmpp_jid:list_to_jid(From) + exmpp_jid:binary_to_jid(From) end.