diff options
Diffstat (limited to 'src/mod_proxy65_service.erl')
-rw-r--r-- | src/mod_proxy65_service.erl | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/mod_proxy65_service.erl b/src/mod_proxy65_service.erl index 97d5b00af..d64afa04d 100644 --- a/src/mod_proxy65_service.erl +++ b/src/mod_proxy65_service.erl @@ -63,7 +63,7 @@ start_link(Host, Opts) -> init([Host, Opts]) -> State = parse_options(Host, Opts), - ejabberd_router:register_route(State#state.myhost), + ejabberd_router:register_route(State#state.myhost, Host), {ok, State}. terminate(_Reason, #state{myhost = MyHost}) -> @@ -150,7 +150,7 @@ process_iq(_, children = iq_vcard(Lang)}]}; %% bytestreams info request process_iq(JID, - #iq{type = get, sub_el = SubEl, + #iq{type = get, sub_el = SubEl, lang = Lang, xmlns = ?NS_BYTESTREAMS} = IQ, #state{acl = ACL, stream_addr = StreamAddr, @@ -165,21 +165,22 @@ process_iq(JID, attrs = [{<<"xmlns">>, ?NS_BYTESTREAMS}], children = StreamHostEl}]}; deny -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_FORBIDDEN]} + Txt = <<"Denied by ACL">>, + IQ#iq{type = error, sub_el = [SubEl, ?ERRT_FORBIDDEN(Lang, Txt)]} end; %% bytestream activation request process_iq(InitiatorJID, - #iq{type = set, sub_el = SubEl, + #iq{type = set, sub_el = SubEl, lang = Lang, xmlns = ?NS_BYTESTREAMS} = IQ, #state{acl = ACL, serverhost = ServerHost}) -> case acl:match_rule(ServerHost, ACL, InitiatorJID) of allow -> - ActivateEl = xml:get_path_s(SubEl, + ActivateEl = fxml:get_path_s(SubEl, [{elem, <<"activate">>}]), - SID = xml:get_tag_attr_s(<<"sid">>, SubEl), + SID = fxml:get_tag_attr_s(<<"sid">>, SubEl), case catch - jid:from_string(xml:get_tag_cdata(ActivateEl)) + jid:from_string(fxml:get_tag_cdata(ActivateEl)) of TargetJID when is_record(TargetJID, jid), SID /= <<"">>, @@ -194,22 +195,27 @@ process_iq(InitiatorJID, of ok -> IQ#iq{type = result, sub_el = []}; false -> + Txt = <<"Failed to activate bytestream">>, IQ#iq{type = error, - sub_el = [SubEl, ?ERR_ITEM_NOT_FOUND]}; + sub_el = [SubEl, ?ERRT_ITEM_NOT_FOUND(Lang, Txt)]}; limit -> + Txt = <<"Too many active bytestreams">>, IQ#iq{type = error, - sub_el = [SubEl, ?ERR_RESOURCE_CONSTRAINT]}; + sub_el = [SubEl, ?ERRT_RESOURCE_CONSTRAINT(Lang, Txt)]}; conflict -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_CONFLICT]}; + Txt = <<"Bytestream already activated">>, + IQ#iq{type = error, sub_el = [SubEl, ?ERRT_CONFLICT(Lang, Txt)]}; _ -> IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]} end; _ -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_BAD_REQUEST]} + Txt = <<"Malformed JID">>, + IQ#iq{type = error, sub_el = [SubEl, ?ERRT_BAD_REQUEST(Lang, Txt)]} end; deny -> - IQ#iq{type = error, sub_el = [SubEl, ?ERR_FORBIDDEN]} + Txt = <<"Denied by ACL">>, + IQ#iq{type = error, sub_el = [SubEl, ?ERRT_FORBIDDEN(Lang, Txt)]} end; %% Unknown "set" or "get" request process_iq(_, #iq{type = Type, sub_el = SubEl} = IQ, _) |