diff options
author | Mickaël Rémond <mickael.remond@process-one.net> | 2007-07-19 21:17:13 +0000 |
---|---|---|
committer | Mickaël Rémond <mickael.remond@process-one.net> | 2007-07-19 21:17:13 +0000 |
commit | 799ff1d883bbdcf4376af65834acc5569806da17 (patch) | |
tree | 99c8cccedb70c4cd8634ef2aab1564a53af161a3 | |
parent | * src/ejabberd_s2s.erl: Fixed typo. (diff) |
* src/ejabberd_s2s_in.erl: Add s2s whitelist / blacklist support on incoming s2s connections (EJAB-283)
* src/ejabberd_s2s.erl: Likewise
SVN Revision: 820
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | src/ejabberd_s2s.erl | 1 | ||||
-rw-r--r-- | src/ejabberd_s2s_in.erl | 17 |
3 files changed, 20 insertions, 4 deletions
@@ -1,3 +1,9 @@ +2007-07-19 Mickael Remond <mickael.remond@process-one.net> + + * src/ejabberd_s2s_in.erl: Add s2s whitelist / blacklist support + on incoming s2s connections (EJAB-283) + * src/ejabberd_s2s.erl: Likewise + 2007-07-18 Mickael Remond <mickael.remond@process-one.net> * src/ejabberd_s2s.erl: Fixed typos. diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl index 7c1747338..c9e40efbc 100644 --- a/src/ejabberd_s2s.erl +++ b/src/ejabberd_s2s.erl @@ -21,6 +21,7 @@ remove_connection/1, remove_connection/3, dirty_get_connections/0, + allow_host/2, ctl_process/2 ]). diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl index b5f89c95b..969be69d9 100644 --- a/src/ejabberd_s2s_in.erl +++ b/src/ejabberd_s2s_in.erl @@ -74,6 +74,9 @@ -define(HOST_UNKNOWN_ERR, xml:element_to_string(?SERR_HOST_UNKNOWN)). +-define(INVALID_FROM_ERR, + xml:element_to_string(?SERR_INVALID_FROM)). + -define(INVALID_XML_ERR, xml:element_to_string(?SERR_XML_NOT_WELL_FORMED)). @@ -309,8 +312,11 @@ stream_established({xmlstreamelement, El}, StateData) -> ?INFO_MSG("GET KEY: ~p", [{To, From, Id, Key}]), LTo = jlib:nameprep(To), LFrom = jlib:nameprep(From), - case lists:member(LTo, ejabberd_router:dirty_get_all_domains()) of - true -> + %% Checks if the from domain is allowed and if the to + %% domain is handled by this server: + case {ejabberd_s2s:allow_host(To, From), + lists:member(LTo, ejabberd_router:dirty_get_all_domains())} of + {true, true} -> ejabberd_s2s_out:start(To, From, {verify, self(), Key, StateData#state.streamid}), @@ -321,9 +327,12 @@ stream_established({xmlstreamelement, El}, StateData) -> stream_established, StateData#state{connections = Conns, timer = Timer}}; - _ -> + {_, false} -> send_text(StateData, ?HOST_UNKNOWN_ERR), - {stop, normal, StateData} + {stop, normal, StateData}; + {false, _} -> + send_text(StateData, ?INVALID_FROM_ERR), + {stop, normal, StateData} end; {verify, To, From, Id, Key} -> ?INFO_MSG("VERIFY KEY: ~p", [{To, From, Id, Key}]), |