mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
Adapt to new exmpp API where get_id/1, get_lang/1, get_initiating_entity/1, get_receiving_entity/1 and get_type/1 returns binary().
SVN Revision: 1791
This commit is contained in:
parent
d2524b20d5
commit
98f51dc91f
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
|||||||
|
2009-01-09 Pablo Polvorin <pablo.polvorin@process-one.net>
|
||||||
|
|
||||||
|
* src/mod_muc/mod_muc_room.erl, src/mod_muc/mod_muc.erl
|
||||||
|
src/mod_offline_odbc.erl, src/mod_irc/mod_irc_connection.erl,
|
||||||
|
src/mod_irc/mod_irc.erl, src/ejabberd_c2s.erl, src/ejabberd_local.erl,
|
||||||
|
src/mod_pubsub/mod_pubsub.erl, src/ejabberd_s2s.erl, src/mod_roster.erl,
|
||||||
|
src/mod_roster_odbc.erl, src/ejabberd_s2s_out.erl, src/mod_offline.erl,
|
||||||
|
src/translate.erl: Adapt to new exmpp API where get_id/1, get_lang/1,
|
||||||
|
get_initiating_entity/1, get_receiving_entity/1 and get_type/1
|
||||||
|
returns binary().
|
||||||
|
|
||||||
|
* src/mod_pubsub/node_default.erl: Fix typo in variable name.
|
||||||
|
|
||||||
|
* src/ejabberd_c2s.erl: Fix bug in handle_info/3 when dealing with
|
||||||
|
VCARD requests: convert to IQ struct before invoking gen_iq_handler.
|
||||||
|
|
||||||
|
|
||||||
2009-01-08 Christophe Romain <christophe.romain@process-one.net>
|
2009-01-08 Christophe Romain <christophe.romain@process-one.net>
|
||||||
|
|
||||||
* src/mod_pubsub/mod_pubsub.erl: completely support subscription using
|
* src/mod_pubsub/mod_pubsub.erl: completely support subscription using
|
||||||
|
@ -239,9 +239,9 @@ wait_for_stream({xmlstreamstart, #xmlel{ns = NS} = Opening}, StateData) ->
|
|||||||
StateData#state.streamid, DefaultLang),
|
StateData#state.streamid, DefaultLang),
|
||||||
case NS of
|
case NS of
|
||||||
?NS_XMPP ->
|
?NS_XMPP ->
|
||||||
Server = exmpp_stringprep:nameprep(
|
ServerB = exmpp_stringprep:nameprep(
|
||||||
exmpp_stream:get_receiving_entity(Opening)),
|
exmpp_stream:get_receiving_entity(Opening)),
|
||||||
ServerB = list_to_binary(Server),
|
Server = binary_to_list(ServerB),
|
||||||
case lists:member(Server, ?MYHOSTS) of
|
case lists:member(Server, ?MYHOSTS) of
|
||||||
true ->
|
true ->
|
||||||
Lang = exmpp_stream:get_lang(Opening),
|
Lang = exmpp_stream:get_lang(Opening),
|
||||||
@ -900,9 +900,9 @@ session_established2(El, StateData) ->
|
|||||||
catch
|
catch
|
||||||
throw:{stringprep, _, _, _} ->
|
throw:{stringprep, _, _, _} ->
|
||||||
case exmpp_stanza:get_type(El) of
|
case exmpp_stanza:get_type(El) of
|
||||||
"error" ->
|
<<"error">> ->
|
||||||
ok;
|
ok;
|
||||||
"result" ->
|
<<"result">> ->
|
||||||
ok;
|
ok;
|
||||||
_ ->
|
_ ->
|
||||||
Err = exmpp_stanza:reply_with_error(El, 'jid-malformed'),
|
Err = exmpp_stanza:reply_with_error(El, 'jid-malformed'),
|
||||||
@ -1166,7 +1166,7 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
|
|||||||
case ets:lookup(sm_iqtable, {?NS_VCARD, Host}) of
|
case ets:lookup(sm_iqtable, {?NS_VCARD, Host}) of
|
||||||
[{_, Module, Function, Opts}] ->
|
[{_, Module, Function, Opts}] ->
|
||||||
gen_iq_handler:handle(Host, Module, Function, Opts,
|
gen_iq_handler:handle(Host, Module, Function, Opts,
|
||||||
From, To, Packet);
|
From, To, exmpp_iq:xmlel_to_iq(Packet));
|
||||||
[] ->
|
[] ->
|
||||||
Res = exmpp_iq:error(Packet, 'feature-not-implemented'),
|
Res = exmpp_iq:error(Packet, 'feature-not-implemented'),
|
||||||
ejabberd_router:route(To, From, Res)
|
ejabberd_router:route(To, From, Res)
|
||||||
@ -1857,7 +1857,6 @@ resend_subscription_requests(#state{user = UserB,
|
|||||||
PendingSubscriptions).
|
PendingSubscriptions).
|
||||||
|
|
||||||
process_unauthenticated_stanza(StateData, El) when ?IS_IQ(El) ->
|
process_unauthenticated_stanza(StateData, El) when ?IS_IQ(El) ->
|
||||||
ServerString = binary_to_list(StateData#state.server),
|
|
||||||
case exmpp_iq:get_kind(El) of
|
case exmpp_iq:get_kind(El) of
|
||||||
request ->
|
request ->
|
||||||
IQ_Rec = exmpp_iq:xmlel_to_iq(El),
|
IQ_Rec = exmpp_iq:xmlel_to_iq(El),
|
||||||
@ -1873,7 +1872,7 @@ process_unauthenticated_stanza(StateData, El) when ?IS_IQ(El) ->
|
|||||||
ResIQ = exmpp_iq:error_without_original(El,
|
ResIQ = exmpp_iq:error_without_original(El,
|
||||||
'service-unavailable'),
|
'service-unavailable'),
|
||||||
Res1 = exmpp_stanza:set_sender(ResIQ,
|
Res1 = exmpp_stanza:set_sender(ResIQ,
|
||||||
exmpp_jid:make_bare_jid(ServerString)),
|
exmpp_jid:make_bare_jid(StateData#state.server)),
|
||||||
Res2 = exmpp_stanza:remove_recipient(Res1),
|
Res2 = exmpp_stanza:remove_recipient(Res1),
|
||||||
send_element(StateData, Res2);
|
send_element(StateData, Res2);
|
||||||
_ ->
|
_ ->
|
||||||
|
@ -321,8 +321,8 @@ do_route(From, To, Packet) ->
|
|||||||
end;
|
end;
|
||||||
true ->
|
true ->
|
||||||
case exmpp_stanza:get_type(Packet) of
|
case exmpp_stanza:get_type(Packet) of
|
||||||
"error" -> ok;
|
<<"error">> -> ok;
|
||||||
"result" -> ok;
|
<<"result">> -> ok;
|
||||||
_ ->
|
_ ->
|
||||||
ejabberd_hooks:run(local_send_to_resource_hook,
|
ejabberd_hooks:run(local_send_to_resource_hook,
|
||||||
exmpp_jid:ldomain(To),
|
exmpp_jid:ldomain(To),
|
||||||
|
@ -290,8 +290,8 @@ do_route(From, To, Packet) ->
|
|||||||
ok;
|
ok;
|
||||||
{aborted, _Reason} ->
|
{aborted, _Reason} ->
|
||||||
case exmpp_stanza:get_type(Packet) of
|
case exmpp_stanza:get_type(Packet) of
|
||||||
"error" -> ok;
|
<<"error">> -> ok;
|
||||||
"result" -> ok;
|
<<"result">> -> ok;
|
||||||
_ ->
|
_ ->
|
||||||
Err = exmpp_stanza:reply_with_error(Packet,
|
Err = exmpp_stanza:reply_with_error(Packet,
|
||||||
'service-unavailable'),
|
'service-unavailable'),
|
||||||
|
@ -803,8 +803,8 @@ send_queue(StateData, Q) ->
|
|||||||
%% Bounce a single message (xmlel)
|
%% Bounce a single message (xmlel)
|
||||||
bounce_element(El, Condition) ->
|
bounce_element(El, Condition) ->
|
||||||
case exmpp_stanza:get_type(El) of
|
case exmpp_stanza:get_type(El) of
|
||||||
"error" -> ok;
|
<<"error">> -> ok;
|
||||||
"result" -> ok;
|
<<"result">> -> ok;
|
||||||
_ ->
|
_ ->
|
||||||
Err = exmpp_stanza:reply_with_error(El, Condition),
|
Err = exmpp_stanza:reply_with_error(El, Condition),
|
||||||
From = exmpp_jid:binary_to_jid(exmpp_stanza:get_sender(El)),
|
From = exmpp_jid:binary_to_jid(exmpp_stanza:get_sender(El)),
|
||||||
@ -882,14 +882,14 @@ is_verify_res(#xmlel{ns = ?NS_DIALBACK, name = 'result',
|
|||||||
exmpp_stanza:get_recipient_from_attrs(Attrs),
|
exmpp_stanza:get_recipient_from_attrs(Attrs),
|
||||||
exmpp_stanza:get_sender_from_attrs(Attrs),
|
exmpp_stanza:get_sender_from_attrs(Attrs),
|
||||||
exmpp_stanza:get_id_from_attrs(Attrs),
|
exmpp_stanza:get_id_from_attrs(Attrs),
|
||||||
exmpp_stanza:get_type_from_attrs(Attrs)};
|
binary_to_list(exmpp_stanza:get_type_from_attrs(Attrs))};
|
||||||
is_verify_res(#xmlel{ns = ?NS_DIALBACK, name = 'verify',
|
is_verify_res(#xmlel{ns = ?NS_DIALBACK, name = 'verify',
|
||||||
attrs = Attrs}) ->
|
attrs = Attrs}) ->
|
||||||
{verify,
|
{verify,
|
||||||
exmpp_stanza:get_recipient_from_attrs(Attrs),
|
exmpp_stanza:get_recipient_from_attrs(Attrs),
|
||||||
exmpp_stanza:get_sender_from_attrs(Attrs),
|
exmpp_stanza:get_sender_from_attrs(Attrs),
|
||||||
exmpp_stanza:get_id_from_attrs(Attrs),
|
exmpp_stanza:get_id_from_attrs(Attrs),
|
||||||
exmpp_stanza:get_type_from_attrs(Attrs)};
|
binary_to_list(exmpp_stanza:get_type_from_attrs(Attrs))};
|
||||||
is_verify_res(_) ->
|
is_verify_res(_) ->
|
||||||
false.
|
false.
|
||||||
|
|
||||||
|
@ -371,10 +371,10 @@ process_irc_register(Host, From, _To, _DefEnc,
|
|||||||
exmpp_iq:error(IQ_Rec, 'not-acceptable');
|
exmpp_iq:error(IQ_Rec, 'not-acceptable');
|
||||||
_ ->
|
_ ->
|
||||||
case exmpp_stanza:get_type(XDataEl) of
|
case exmpp_stanza:get_type(XDataEl) of
|
||||||
"cancel" ->
|
<<"cancel">> ->
|
||||||
Result = #xmlel{ns = XMLNS, name = 'query'},
|
Result = #xmlel{ns = XMLNS, name = 'query'},
|
||||||
exmpp_iq:result(IQ_Rec, Result);
|
exmpp_iq:result(IQ_Rec, Result);
|
||||||
"submit" ->
|
<<"submit">> ->
|
||||||
XData = jlib:parse_xdata_submit(XDataEl),
|
XData = jlib:parse_xdata_submit(XDataEl),
|
||||||
case XData of
|
case XData of
|
||||||
invalid ->
|
invalid ->
|
||||||
|
@ -625,7 +625,7 @@ bounce_messages(Reason) ->
|
|||||||
receive
|
receive
|
||||||
{send_element, El} ->
|
{send_element, El} ->
|
||||||
case exmpp_stanza:get_type(El) of
|
case exmpp_stanza:get_type(El) of
|
||||||
"error" ->
|
<<"error">> ->
|
||||||
ok;
|
ok;
|
||||||
_ ->
|
_ ->
|
||||||
Error = #xmlel{ns = ?NS_JABBER_CLIENT, name = 'error',
|
Error = #xmlel{ns = ?NS_JABBER_CLIENT, name = 'error',
|
||||||
|
@ -401,9 +401,9 @@ do_route1(Host, ServerHost, Access, HistorySize, RoomShaper,
|
|||||||
end;
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
case exmpp_stanza:get_type(Packet) of
|
case exmpp_stanza:get_type(Packet) of
|
||||||
"error" ->
|
<<"error">> ->
|
||||||
ok;
|
ok;
|
||||||
"result" ->
|
<<"result">> ->
|
||||||
ok;
|
ok;
|
||||||
_ ->
|
_ ->
|
||||||
Err = exmpp_iq:error(Packet,'item-not-found'),
|
Err = exmpp_iq:error(Packet,'item-not-found'),
|
||||||
@ -638,9 +638,9 @@ process_iq_register_set(Host, From, SubEl, Lang) ->
|
|||||||
case exmpp_xml:get_child_elements(SubEl) of
|
case exmpp_xml:get_child_elements(SubEl) of
|
||||||
[#xmlel{ns= NS, name = 'x'} = XEl] ->
|
[#xmlel{ns= NS, name = 'x'} = XEl] ->
|
||||||
case {NS, exmpp_stanza:get_type(XEl)} of
|
case {NS, exmpp_stanza:get_type(XEl)} of
|
||||||
{?NS_DATA_FORMS, "cancel"} ->
|
{?NS_DATA_FORMS, <<"cancel">>} ->
|
||||||
ok;
|
ok;
|
||||||
{?NS_DATA_FORMS, "submit"} ->
|
{?NS_DATA_FORMS, <<"submit">>} ->
|
||||||
XData = jlib:parse_xdata_submit(XEl),
|
XData = jlib:parse_xdata_submit(XEl),
|
||||||
case XData of
|
case XData of
|
||||||
invalid ->
|
invalid ->
|
||||||
|
@ -966,38 +966,38 @@ is_user_online(JID, StateData) ->
|
|||||||
LJID = jlib:short_prepd_jid(JID),
|
LJID = jlib:short_prepd_jid(JID),
|
||||||
?DICT:is_key(LJID, StateData#state.users).
|
?DICT:is_key(LJID, StateData#state.users).
|
||||||
|
|
||||||
role_to_list(Role) ->
|
role_to_binary(Role) ->
|
||||||
case Role of
|
case Role of
|
||||||
moderator -> "moderator";
|
moderator -> <<"moderator">>;
|
||||||
participant -> "participant";
|
participant -> <<"participant">>;
|
||||||
visitor -> "visitor";
|
visitor -> <<"visitor">>;
|
||||||
none -> "none"
|
none -> <<"none">>
|
||||||
end.
|
end.
|
||||||
|
|
||||||
affiliation_to_list(Affiliation) ->
|
affiliation_to_binary(Affiliation) ->
|
||||||
case Affiliation of
|
case Affiliation of
|
||||||
owner -> "owner";
|
owner -> <<"owner">>;
|
||||||
admin -> "admin";
|
admin -> <<"admin">>;
|
||||||
member -> "member";
|
member -> <<"member">>;
|
||||||
outcast -> "outcast";
|
outcast -> <<"outcast">>;
|
||||||
none -> "none"
|
none -> <<"none">>
|
||||||
end.
|
end.
|
||||||
|
|
||||||
list_to_role(Role) ->
|
binary_to_role(Role) ->
|
||||||
case Role of
|
case Role of
|
||||||
"moderator" -> moderator;
|
<<"moderator">> -> moderator;
|
||||||
"participant" -> participant;
|
<<"participant">> -> participant;
|
||||||
"visitor" -> visitor;
|
<<"visitor">> -> visitor;
|
||||||
"none" -> none
|
<<"none">> -> none
|
||||||
end.
|
end.
|
||||||
|
|
||||||
list_to_affiliation(Affiliation) ->
|
binary_to_affiliation(Affiliation) ->
|
||||||
case Affiliation of
|
case Affiliation of
|
||||||
"owner" -> owner;
|
<<"owner">> -> owner;
|
||||||
"admin" -> admin;
|
<<"admin">> -> admin;
|
||||||
"member" -> member;
|
<<"member">> -> member;
|
||||||
"outcast" -> outcast;
|
<<"outcast">> -> outcast;
|
||||||
"none" -> none
|
<<"none">> -> none
|
||||||
end.
|
end.
|
||||||
|
|
||||||
%% Decide the fate of the message and its sender
|
%% Decide the fate of the message and its sender
|
||||||
@ -1758,8 +1758,8 @@ send_new_presence(NJID, Reason, StateData) ->
|
|||||||
last_presence = Presence}} =
|
last_presence = Presence}} =
|
||||||
?DICT:find(jlib:short_prepd_jid(NJID), StateData#state.users),
|
?DICT:find(jlib:short_prepd_jid(NJID), StateData#state.users),
|
||||||
Affiliation = get_affiliation(NJID, StateData),
|
Affiliation = get_affiliation(NJID, StateData),
|
||||||
SAffiliation = affiliation_to_list(Affiliation),
|
SAffiliation = affiliation_to_binary(Affiliation),
|
||||||
SRole = role_to_list(Role),
|
SRole = role_to_binary(Role),
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun({_LJID, Info}) ->
|
fun({_LJID, Info}) ->
|
||||||
ItemAttrs =
|
ItemAttrs =
|
||||||
@ -1824,12 +1824,12 @@ send_existing_presences(ToJID, StateData) ->
|
|||||||
true ->
|
true ->
|
||||||
[#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(FromJID)},
|
[#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(FromJID)},
|
||||||
#xmlattr{name = 'affiliation',
|
#xmlattr{name = 'affiliation',
|
||||||
value = affiliation_to_list(FromAffiliation)},
|
value = affiliation_to_binary(FromAffiliation)},
|
||||||
#xmlattr{name = 'role', value = role_to_list(FromRole)}];
|
#xmlattr{name = 'role', value = role_to_binary(FromRole)}];
|
||||||
_ ->
|
_ ->
|
||||||
[#xmlattr{name = 'affiliation',
|
[#xmlattr{name = 'affiliation',
|
||||||
value = affiliation_to_list(FromAffiliation)},
|
value = affiliation_to_binary(FromAffiliation)},
|
||||||
#xmlattr{name = 'role', value = role_to_list(FromRole)}]
|
#xmlattr{name = 'role', value = role_to_binary(FromRole)}]
|
||||||
end,
|
end,
|
||||||
Packet = exmpp_xml:append_child(Presence,
|
Packet = exmpp_xml:append_child(Presence,
|
||||||
#xmlel{ns = ?NS_MUC_USER, name = 'x',
|
#xmlel{ns = ?NS_MUC_USER, name = 'x',
|
||||||
@ -1871,8 +1871,8 @@ send_nick_changing(JID, OldNick, StateData) ->
|
|||||||
last_presence = Presence}} =
|
last_presence = Presence}} =
|
||||||
?DICT:find(jlib:short_prepd_jid(JID), StateData#state.users),
|
?DICT:find(jlib:short_prepd_jid(JID), StateData#state.users),
|
||||||
Affiliation = get_affiliation(JID, StateData),
|
Affiliation = get_affiliation(JID, StateData),
|
||||||
SAffiliation = affiliation_to_list(Affiliation),
|
SAffiliation = affiliation_to_binary(Affiliation),
|
||||||
SRole = role_to_list(Role),
|
SRole = role_to_binary(Role),
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun({_LJID, Info}) ->
|
fun({_LJID, Info}) ->
|
||||||
ItemAttrs1 =
|
ItemAttrs1 =
|
||||||
@ -2030,13 +2030,13 @@ process_iq_admin(From, get, Lang, SubEl, StateData) ->
|
|||||||
Item ->
|
Item ->
|
||||||
FAffiliation = get_affiliation(From, StateData),
|
FAffiliation = get_affiliation(From, StateData),
|
||||||
FRole = get_role(From, StateData),
|
FRole = get_role(From, StateData),
|
||||||
case exmpp_xml:get_attribute(Item, 'role', false) of
|
case exmpp_xml:get_attribute_as_binary(Item, 'role', false) of
|
||||||
false ->
|
false ->
|
||||||
case exmpp_xml:get_attribute(Item, 'affiliation', false) of
|
case exmpp_xml:get_attribute_as_binary(Item, 'affiliation', false) of
|
||||||
false ->
|
false ->
|
||||||
{error, 'bad-request'};
|
{error, 'bad-request'};
|
||||||
StrAffiliation ->
|
StrAffiliation ->
|
||||||
case catch list_to_affiliation(StrAffiliation) of
|
case catch binary_to_affiliation(StrAffiliation) of
|
||||||
{'EXIT', _} ->
|
{'EXIT', _} ->
|
||||||
{error, 'bad-request'};
|
{error, 'bad-request'};
|
||||||
SAffiliation ->
|
SAffiliation ->
|
||||||
@ -2053,7 +2053,7 @@ process_iq_admin(From, get, Lang, SubEl, StateData) ->
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
StrRole ->
|
StrRole ->
|
||||||
case catch list_to_role(StrRole) of
|
case catch binary_to_role(StrRole) of
|
||||||
{'EXIT', _} ->
|
{'EXIT', _} ->
|
||||||
{error, 'bad-request'};
|
{error, 'bad-request'};
|
||||||
SRole ->
|
SRole ->
|
||||||
@ -2082,9 +2082,9 @@ items_with_affiliation(SAffiliation, StateData) ->
|
|||||||
{N, D, R} = JID,
|
{N, D, R} = JID,
|
||||||
#xmlel{name = 'item',
|
#xmlel{name = 'item',
|
||||||
attrs = [#xmlattr{name = 'affiliation',
|
attrs = [#xmlattr{name = 'affiliation',
|
||||||
value = affiliation_to_list(Affiliation)},
|
value = affiliation_to_binary(Affiliation)},
|
||||||
#xmlattr{name = 'jid',
|
#xmlattr{name = 'jid',
|
||||||
value = exmpp_jid:jid_to_list(N, D, R)}],
|
value = exmpp_jid:jid_to_binary(N, D, R)}],
|
||||||
children = [ #xmlel{name = 'reason',
|
children = [ #xmlel{name = 'reason',
|
||||||
children = [#xmlcdata{cdata = Reason}]}]};
|
children = [#xmlcdata{cdata = Reason}]}]};
|
||||||
|
|
||||||
@ -2092,9 +2092,9 @@ items_with_affiliation(SAffiliation, StateData) ->
|
|||||||
{N, D, R} = JID,
|
{N, D, R} = JID,
|
||||||
#xmlel{name = 'item',
|
#xmlel{name = 'item',
|
||||||
attrs = [#xmlattr{name = 'affiliation',
|
attrs = [#xmlattr{name = 'affiliation',
|
||||||
value = affiliation_to_list(Affiliation)},
|
value = affiliation_to_binary(Affiliation)},
|
||||||
#xmlattr{name = 'jid',
|
#xmlattr{name = 'jid',
|
||||||
value = exmpp_jid:jid_to_list(N, D, R)}]}
|
value = exmpp_jid:jid_to_binary(N, D, R)}]}
|
||||||
end, search_affiliation(SAffiliation, StateData)).
|
end, search_affiliation(SAffiliation, StateData)).
|
||||||
|
|
||||||
user_to_item(#user{role = Role,
|
user_to_item(#user{role = Role,
|
||||||
@ -2104,10 +2104,10 @@ user_to_item(#user{role = Role,
|
|||||||
Affiliation = get_affiliation(JID, StateData),
|
Affiliation = get_affiliation(JID, StateData),
|
||||||
#xmlel{name = 'item',
|
#xmlel{name = 'item',
|
||||||
attrs = [
|
attrs = [
|
||||||
#xmlattr{name = 'role', value = role_to_list(Role)},
|
#xmlattr{name = 'role', value = role_to_binary(Role)},
|
||||||
#xmlattr{name = 'affiliation', value = affiliation_to_list(Affiliation)},
|
#xmlattr{name = 'affiliation', value = affiliation_to_binary(Affiliation)},
|
||||||
#xmlattr{name = 'nick', value = Nick},
|
#xmlattr{name = 'nick', value = Nick},
|
||||||
#xmlattr{name = 'jid', value = exmpp_jid:jid_to_list(JID)}]
|
#xmlattr{name = 'jid', value = exmpp_jid:jid_to_binary(JID)}]
|
||||||
}.
|
}.
|
||||||
|
|
||||||
search_role(Role, StateData) ->
|
search_role(Role, StateData) ->
|
||||||
@ -2225,9 +2225,9 @@ find_changed_items(UJID, UAffiliation, URole, [#xmlcdata{} | Items],
|
|||||||
find_changed_items(UJID, UAffiliation, URole,
|
find_changed_items(UJID, UAffiliation, URole,
|
||||||
[#xmlel{name = 'item'} = Item | Items],
|
[#xmlel{name = 'item'} = Item | Items],
|
||||||
Lang, StateData, Res) ->
|
Lang, StateData, Res) ->
|
||||||
TJID = case exmpp_xml:get_attribute(Item, 'jid',false) of
|
TJID = case exmpp_xml:get_attribute_as_binary(Item, 'jid',false) of
|
||||||
S when S =/= false ->
|
S when S =/= false ->
|
||||||
try exmpp_jid:list_to_jid(S) of
|
try exmpp_jid:binary_to_jid(S) of
|
||||||
J ->
|
J ->
|
||||||
{value, J}
|
{value, J}
|
||||||
catch
|
catch
|
||||||
@ -2261,13 +2261,13 @@ find_changed_items(UJID, UAffiliation, URole,
|
|||||||
{value, JID} ->
|
{value, JID} ->
|
||||||
TAffiliation = get_affiliation(JID, StateData),
|
TAffiliation = get_affiliation(JID, StateData),
|
||||||
TRole = get_role(JID, StateData),
|
TRole = get_role(JID, StateData),
|
||||||
case exmpp_xml:get_attribute(Item, 'role',false) of
|
case exmpp_xml:get_attribute_as_binary(Item, 'role',false) of
|
||||||
false ->
|
false ->
|
||||||
case exmpp_xml:get_attribute(Item, 'affiliation', false) of
|
case exmpp_xml:get_attribute_as_binary(Item, 'affiliation', false) of
|
||||||
false ->
|
false ->
|
||||||
{error, 'bad-request'};
|
{error, 'bad-request'};
|
||||||
StrAffiliation ->
|
StrAffiliation ->
|
||||||
case catch list_to_affiliation(StrAffiliation) of
|
case catch binary_to_affiliation(StrAffiliation) of
|
||||||
{'EXIT', _} ->
|
{'EXIT', _} ->
|
||||||
ErrText1 =
|
ErrText1 =
|
||||||
io_lib:format(
|
io_lib:format(
|
||||||
@ -2324,7 +2324,7 @@ find_changed_items(UJID, UAffiliation, URole,
|
|||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
StrRole ->
|
StrRole ->
|
||||||
case catch list_to_role(StrRole) of
|
case catch binary_to_role(StrRole) of
|
||||||
{'EXIT', _} ->
|
{'EXIT', _} ->
|
||||||
ErrText1 =
|
ErrText1 =
|
||||||
io_lib:format(
|
io_lib:format(
|
||||||
@ -2566,7 +2566,7 @@ send_kickban_presence1(UJID, Reason, Code, StateData) ->
|
|||||||
nick = Nick}} = ?DICT:find(UJID, StateData#state.users),
|
nick = Nick}} = ?DICT:find(UJID, StateData#state.users),
|
||||||
{N,D,R} = UJID,
|
{N,D,R} = UJID,
|
||||||
Affiliation = get_affiliation(exmpp_jid:make_jid(N,D,R), StateData),
|
Affiliation = get_affiliation(exmpp_jid:make_jid(N,D,R), StateData),
|
||||||
SAffiliation = affiliation_to_list(Affiliation),
|
SAffiliation = affiliation_to_binary(Affiliation),
|
||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun({_LJID, Info}) ->
|
fun({_LJID, Info}) ->
|
||||||
ItemAttrs = [#xmlattr{name = 'affiliation', value = SAffiliation},
|
ItemAttrs = [#xmlattr{name = 'affiliation', value = SAffiliation},
|
||||||
@ -2607,10 +2607,10 @@ process_iq_owner(From, set, Lang, SubEl, StateData) ->
|
|||||||
owner ->
|
owner ->
|
||||||
case exmpp_xml:get_child_elements(SubEl) of
|
case exmpp_xml:get_child_elements(SubEl) of
|
||||||
[#xmlel{ns = XMLNS, name = 'x'} = XEl] ->
|
[#xmlel{ns = XMLNS, name = 'x'} = XEl] ->
|
||||||
case {XMLNS, exmpp_xml:get_attribute(XEl, 'type',false)} of
|
case {XMLNS, exmpp_xml:get_attribute_as_binary(XEl, 'type',false)} of
|
||||||
{?NS_DATA_FORMS, "cancel"} ->
|
{?NS_DATA_FORMS, <<"cancel">>} ->
|
||||||
{result, [], StateData};
|
{result, [], StateData};
|
||||||
{?NS_DATA_FORMS, "submit"} ->
|
{?NS_DATA_FORMS, <<"submit">>} ->
|
||||||
case {check_allowed_log_change(XEl, StateData, From),
|
case {check_allowed_log_change(XEl, StateData, From),
|
||||||
check_allowed_persistent_change(XEl, StateData, From)} of
|
check_allowed_persistent_change(XEl, StateData, From)} of
|
||||||
{allow, allow} -> set_config(XEl, StateData);
|
{allow, allow} -> set_config(XEl, StateData);
|
||||||
@ -2639,11 +2639,11 @@ process_iq_owner(From, get, Lang, SubEl, StateData) ->
|
|||||||
[] ->
|
[] ->
|
||||||
get_config(Lang, StateData, From);
|
get_config(Lang, StateData, From);
|
||||||
[Item] ->
|
[Item] ->
|
||||||
case exmpp_xml:get_attribute(Item, 'affiliation',false) of
|
case exmpp_xml:get_attribute_as_binary(Item, 'affiliation',false) of
|
||||||
false ->
|
false ->
|
||||||
{error, 'bad-request'};
|
{error, 'bad-request'};
|
||||||
StrAffiliation ->
|
StrAffiliation ->
|
||||||
case catch list_to_affiliation(StrAffiliation) of
|
case catch binary_to_affiliation(StrAffiliation) of
|
||||||
{'EXIT', _} ->
|
{'EXIT', _} ->
|
||||||
ErrText =
|
ErrText =
|
||||||
io_lib:format(
|
io_lib:format(
|
||||||
@ -3227,7 +3227,7 @@ check_invitation(From, Els, Lang, StateData) ->
|
|||||||
_ ->
|
_ ->
|
||||||
throw({error, 'bad-request'})
|
throw({error, 'bad-request'})
|
||||||
end,
|
end,
|
||||||
JID = try exmpp_jid:list_to_jid(exmpp_xml:get_attribute(InviteEl,
|
JID = try exmpp_jid:binary_to_jid(exmpp_xml:get_attribute_as_binary(InviteEl,
|
||||||
'to',
|
'to',
|
||||||
false)) of
|
false)) of
|
||||||
JID1 -> JID1
|
JID1 -> JID1
|
||||||
@ -3330,8 +3330,8 @@ check_decline_invitation(Packet) ->
|
|||||||
#xmlel{name = 'message'} = Packet,
|
#xmlel{name = 'message'} = Packet,
|
||||||
#xmlel{ns = ?NS_MUC_USER} = XEl = exmpp_xml:get_element(Packet, 'x'),
|
#xmlel{ns = ?NS_MUC_USER} = XEl = exmpp_xml:get_element(Packet, 'x'),
|
||||||
DEl = exmpp_xml:get_element(XEl, 'decline'),
|
DEl = exmpp_xml:get_element(XEl, 'decline'),
|
||||||
ToString = exmpp_xml:get_attribute(DEl, 'to', false),
|
ToString = exmpp_xml:get_attribute_as_binary(DEl, 'to', false),
|
||||||
ToJID = exmpp_jid:list_to_jid(ToString),
|
ToJID = exmpp_jid:binary_to_jid(ToString),
|
||||||
{true, {Packet, XEl, DEl, ToJID}}.
|
{true, {Packet, XEl, DEl, ToJID}}.
|
||||||
|
|
||||||
%% Send the decline to the inviter user.
|
%% Send the decline to the inviter user.
|
||||||
|
@ -157,8 +157,8 @@ stop(Host) ->
|
|||||||
store_packet(From, To, Packet) ->
|
store_packet(From, To, Packet) ->
|
||||||
Type = exmpp_stanza:get_type(Packet),
|
Type = exmpp_stanza:get_type(Packet),
|
||||||
if
|
if
|
||||||
(Type /= "error") and (Type /= "groupchat") and
|
(Type /= <<"error">>) and (Type /= <<"groupchat">>) and
|
||||||
(Type /= "headline") ->
|
(Type /= <<"headline">>) ->
|
||||||
case check_event(From, To, Packet) of
|
case check_event(From, To, Packet) of
|
||||||
true ->
|
true ->
|
||||||
LUser = exmpp_jid:lnode_as_list(To),
|
LUser = exmpp_jid:lnode_as_list(To),
|
||||||
@ -197,7 +197,7 @@ check_event(From, To, Packet) ->
|
|||||||
S ->
|
S ->
|
||||||
#xmlel{ns = ?NS_MESSAGE_EVENT, name = 'id',
|
#xmlel{ns = ?NS_MESSAGE_EVENT, name = 'id',
|
||||||
children = [#xmlcdata{cdata =
|
children = [#xmlcdata{cdata =
|
||||||
list_to_binary(S)}]}
|
S}]}
|
||||||
end,
|
end,
|
||||||
X = #xmlel{ns = ?NS_MESSAGE_EVENT, name = 'x', children =
|
X = #xmlel{ns = ?NS_MESSAGE_EVENT, name = 'x', children =
|
||||||
[ID, #xmlel{ns = ?NS_MESSAGE_EVENT, name = 'offline'}]},
|
[ID, #xmlel{ns = ?NS_MESSAGE_EVENT, name = 'offline'}]},
|
||||||
|
@ -165,8 +165,8 @@ stop(Host) ->
|
|||||||
store_packet(From, To, Packet) ->
|
store_packet(From, To, Packet) ->
|
||||||
Type = exmpp_stanza:get_type(Packet),
|
Type = exmpp_stanza:get_type(Packet),
|
||||||
if
|
if
|
||||||
(Type /= "error") and (Type /= "groupchat") and
|
(Type /= <<"error">>) and (Type /= <<"groupchat">>) and
|
||||||
(Type /= "headline") ->
|
(Type /= <<"headline">>) ->
|
||||||
case check_event(From, To, Packet) of
|
case check_event(From, To, Packet) of
|
||||||
true ->
|
true ->
|
||||||
LUser = exmpp_jid:lnode_as_list(To),
|
LUser = exmpp_jid:lnode_as_list(To),
|
||||||
|
@ -694,9 +694,9 @@ do_route(ServerHost, Access, Plugins, Host, From, To, Packet) ->
|
|||||||
end;
|
end;
|
||||||
_ ->
|
_ ->
|
||||||
case exmpp_stanza:get_type(Packet) of
|
case exmpp_stanza:get_type(Packet) of
|
||||||
"error" ->
|
<<"error">> ->
|
||||||
ok;
|
ok;
|
||||||
"result" ->
|
<<"result">> ->
|
||||||
ok;
|
ok;
|
||||||
_ ->
|
_ ->
|
||||||
Err = exmpp_stanza:reply_with_error(Packet,
|
Err = exmpp_stanza:reply_with_error(Packet,
|
||||||
|
@ -279,7 +279,7 @@ delete_node(Host, Removed) ->
|
|||||||
%% <p>In the default plugin module, the record is unchanged.</p>
|
%% <p>In the default plugin module, the record is unchanged.</p>
|
||||||
subscribe_node(Host, Node, Sender, Subscriber, AccessModel,
|
subscribe_node(Host, Node, Sender, Subscriber, AccessModel,
|
||||||
SendLast, PresenceSubscription, RosterGroup) ->
|
SendLast, PresenceSubscription, RosterGroup) ->
|
||||||
SubKey = jlib:short_prepd_jid(Owner),
|
SubKey = jlib:short_prepd_jid(Subscriber),
|
||||||
GenKey = jlib:short_prepd_bare_jid(SubKey),
|
GenKey = jlib:short_prepd_bare_jid(SubKey),
|
||||||
Authorized = (jlib:short_prepd_bare_jid(Sender) == GenKey),
|
Authorized = (jlib:short_prepd_bare_jid(Sender) == GenKey),
|
||||||
GenState = get_state(Host, Node, GenKey),
|
GenState = get_state(Host, Node, GenKey),
|
||||||
|
@ -190,7 +190,7 @@ process_iq_set(From, To, #iq{payload = Request} = IQ_Rec) ->
|
|||||||
|
|
||||||
process_item_set(From, To, #xmlel{} = El) ->
|
process_item_set(From, To, #xmlel{} = El) ->
|
||||||
try
|
try
|
||||||
JID1 = exmpp_jid:list_to_jid(exmpp_xml:get_attribute(El, 'jid', "")),
|
JID1 = exmpp_jid:binary_to_jid(exmpp_xml:get_attribute_as_binary(El, 'jid', <<>>)),
|
||||||
User = exmpp_jid:node(From),
|
User = exmpp_jid:node(From),
|
||||||
LUser = exmpp_jid:lnode(From),
|
LUser = exmpp_jid:lnode(From),
|
||||||
LServer = exmpp_jid:ldomain(From),
|
LServer = exmpp_jid:ldomain(From),
|
||||||
@ -596,7 +596,7 @@ set_items(User, Server, #xmlel{children = Els}) ->
|
|||||||
|
|
||||||
process_item_set_t(LUser, LServer, #xmlel{} = El) ->
|
process_item_set_t(LUser, LServer, #xmlel{} = El) ->
|
||||||
try
|
try
|
||||||
JID1 = exmpp_jid:list_to_jid(exmpp_xml:get_attribute(El, 'jid', "")),
|
JID1 = exmpp_jid:binary_to_jid(exmpp_xml:get_attribute(El, 'jid', <<>>)),
|
||||||
JID = jlib:short_jid(JID1),
|
JID = jlib:short_jid(JID1),
|
||||||
LJID = jlib:short_prepd_jid(JID1),
|
LJID = jlib:short_prepd_jid(JID1),
|
||||||
Item = #roster{usj = {LUser, LServer, LJID},
|
Item = #roster{usj = {LUser, LServer, LJID},
|
||||||
|
@ -216,7 +216,7 @@ process_iq_set(From, To, #iq{payload = Request} = IQ_Rec) ->
|
|||||||
|
|
||||||
process_item_set(From, To, #xmlel{} = El) ->
|
process_item_set(From, To, #xmlel{} = El) ->
|
||||||
try
|
try
|
||||||
JID1 = exmpp_jid:list_to_jid(exmpp_xml:get_attribute(El, 'jid', "")),
|
JID1 = exmpp_jid:binary_to_jid(exmpp_xml:get_attribute_as_binary(El, 'jid', <<>>)),
|
||||||
LUser = exmpp_jid:lnode_as_list(From),
|
LUser = exmpp_jid:lnode_as_list(From),
|
||||||
LServer = exmpp_jid:ldomain_as_list(From),
|
LServer = exmpp_jid:ldomain_as_list(From),
|
||||||
{U0, S0, R0} = LJID = jlib:short_prepd_jid(JID1),
|
{U0, S0, R0} = LJID = jlib:short_prepd_jid(JID1),
|
||||||
@ -655,7 +655,7 @@ set_items(User, Server, #xmlel{children = Els}) ->
|
|||||||
|
|
||||||
process_item_set_t(LUser, LServer, #xmlel{} = El) ->
|
process_item_set_t(LUser, LServer, #xmlel{} = El) ->
|
||||||
try
|
try
|
||||||
JID1 = exmpp_jid:list_to_jid(exmpp_xml:get_attribute(El, 'jid', "")),
|
JID1 = exmpp_jid:binary_to_jid(exmpp_xml:get_attribute_as_binary(El, 'jid', <<>>)),
|
||||||
{U0, S0, R0} = LJID = jlib:short_prepd_jid(JID1),
|
{U0, S0, R0} = LJID = jlib:short_prepd_jid(JID1),
|
||||||
Username = ejabberd_odbc:escape(LUser),
|
Username = ejabberd_odbc:escape(LUser),
|
||||||
SJID = ejabberd_odbc:escape(exmpp_jid:jid_to_list(U0, S0, R0)),
|
SJID = ejabberd_odbc:escape(exmpp_jid:jid_to_list(U0, S0, R0)),
|
||||||
|
@ -32,6 +32,8 @@
|
|||||||
load_file/2,
|
load_file/2,
|
||||||
translate/2]).
|
translate/2]).
|
||||||
|
|
||||||
|
-export([tokens/2, ascii_tolower/1]).
|
||||||
|
|
||||||
-include("ejabberd.hrl").
|
-include("ejabberd.hrl").
|
||||||
|
|
||||||
start() ->
|
start() ->
|
||||||
@ -68,7 +70,8 @@ load_dir(Dir) ->
|
|||||||
lists:foreach(
|
lists:foreach(
|
||||||
fun(FN) ->
|
fun(FN) ->
|
||||||
L = ascii_tolower(
|
L = ascii_tolower(
|
||||||
string:substr(FN, 1, string:len(FN) - 4)),
|
list_to_binary(
|
||||||
|
string:substr(FN, 1, string:len(FN) - 4))),
|
||||||
load_file(L, Dir ++ "/" ++ FN)
|
load_file(L, Dir ++ "/" ++ FN)
|
||||||
end, MsgFiles),
|
end, MsgFiles),
|
||||||
ok;
|
ok;
|
||||||
@ -107,14 +110,14 @@ translate(Lang, Msg) ->
|
|||||||
[{_, Trans}] ->
|
[{_, Trans}] ->
|
||||||
Trans;
|
Trans;
|
||||||
_ ->
|
_ ->
|
||||||
ShortLang = case string:tokens(LLang, "-") of
|
ShortLang = case tokens(LLang, $-) of
|
||||||
[] ->
|
[] ->
|
||||||
LLang;
|
LLang;
|
||||||
[SL | _] ->
|
[SL | _] ->
|
||||||
SL
|
SL
|
||||||
end,
|
end,
|
||||||
case ShortLang of
|
case ShortLang of
|
||||||
"en" ->
|
<<"en">> ->
|
||||||
Msg;
|
Msg;
|
||||||
LLang ->
|
LLang ->
|
||||||
translate(Msg);
|
translate(Msg);
|
||||||
@ -132,7 +135,7 @@ translate(Msg) ->
|
|||||||
case ?MYLANG of
|
case ?MYLANG of
|
||||||
undefined ->
|
undefined ->
|
||||||
Msg;
|
Msg;
|
||||||
"en" ->
|
<<"en">> ->
|
||||||
Msg;
|
Msg;
|
||||||
Lang ->
|
Lang ->
|
||||||
LLang = ascii_tolower(Lang),
|
LLang = ascii_tolower(Lang),
|
||||||
@ -140,14 +143,14 @@ translate(Msg) ->
|
|||||||
[{_, Trans}] ->
|
[{_, Trans}] ->
|
||||||
Trans;
|
Trans;
|
||||||
_ ->
|
_ ->
|
||||||
ShortLang = case string:tokens(LLang, "-") of
|
ShortLang = case tokens(LLang, $-) of
|
||||||
[] ->
|
[] ->
|
||||||
LLang;
|
LLang;
|
||||||
[SL | _] ->
|
[SL | _] ->
|
||||||
SL
|
SL
|
||||||
end,
|
end,
|
||||||
case ShortLang of
|
case ShortLang of
|
||||||
"en" ->
|
<<"en">> ->
|
||||||
Msg;
|
Msg;
|
||||||
Lang ->
|
Lang ->
|
||||||
Msg;
|
Msg;
|
||||||
@ -162,11 +165,25 @@ translate(Msg) ->
|
|||||||
end
|
end
|
||||||
end.
|
end.
|
||||||
|
|
||||||
ascii_tolower([C | Cs]) when C >= $A, C =< $Z ->
|
|
||||||
[C + ($a - $A) | ascii_tolower(Cs)];
|
|
||||||
ascii_tolower([C | Cs]) ->
|
|
||||||
[C | ascii_tolower(Cs)];
|
|
||||||
ascii_tolower([]) ->
|
|
||||||
[];
|
|
||||||
ascii_tolower(undefined) ->
|
ascii_tolower(undefined) ->
|
||||||
[].
|
<<>>;
|
||||||
|
ascii_tolower(Bin) ->
|
||||||
|
<< <<(char_tolower(X))>> || <<X>> <= Bin >>.
|
||||||
|
|
||||||
|
char_tolower(C) when C >= $A, C =< $Z ->
|
||||||
|
C + ($a -$A);
|
||||||
|
char_tolower(C) ->
|
||||||
|
C.
|
||||||
|
|
||||||
|
tokens(<<>>,_Sep) ->
|
||||||
|
[];
|
||||||
|
tokens(Bin, Sep) ->
|
||||||
|
tokens(Bin, Sep, <<>>, []).
|
||||||
|
|
||||||
|
tokens(<<>>, _Sep, T, Tokens) ->
|
||||||
|
lists:reverse([T|Tokens]);
|
||||||
|
tokens(<<Sep, R/binary>>, Sep, T, Tokens) ->
|
||||||
|
tokens(R, Sep, <<>>, [T | Tokens]);
|
||||||
|
tokens(<<C, R/binary>>, Sep, T, Tokens) ->
|
||||||
|
tokens(R, Sep, <<T/binary, C>>, Tokens).
|
||||||
|
Loading…
Reference in New Issue
Block a user