aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_stun.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2020-07-01 21:53:22 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2020-07-01 21:53:22 +0200
commit3bf7fbc1174a58e02d1e31b250ebec04085936b1 (patch)
tree60c149f34d96cdaef7213e1ce574c1a118b3b1c1 /src/ejabberd_stun.erl
parentFix YAML syntax in example configuration (#3301) (diff)
ejabberd_stun: Filter info/debug messages
Update 'stun' dependency, and drop the info/debug messages now logged by the 'stun' application if OTP's new logging API is used.
Diffstat (limited to 'src/ejabberd_stun.erl')
-rw-r--r--src/ejabberd_stun.erl34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/ejabberd_stun.erl b/src/ejabberd_stun.erl
index a9250a4a1..bda3e581e 100644
--- a/src/ejabberd_stun.erl
+++ b/src/ejabberd_stun.erl
@@ -50,16 +50,22 @@ start_link(_, _, _) ->
get_password/2]).
-include("logger.hrl").
+-ifndef(LAGER).
+-export([stun_filter/2]).
+-define(STUN_MAX_LOG_LEVEL, notice). % Drop STUN/TURN info/debug messages.
+-endif.
%%%===================================================================
%%% API
%%%===================================================================
tcp_init(Socket, Opts) ->
+ init_logger(),
ejabberd:start_app(stun),
stun:tcp_init(Socket, prepare_turn_opts(Opts)).
-dialyzer({nowarn_function, udp_init/2}).
udp_init(Socket, Opts) ->
+ init_logger(),
ejabberd:start_app(stun),
stun:udp_init(Socket, prepare_turn_opts(Opts)).
@@ -199,4 +205,32 @@ listen_options() ->
{turn_max_permissions, 10},
{turn_blacklist, [<<"2001::/32">>, <<"2002::/16">>]}, % Teredo, 6to4.
{server_name, <<"ejabberd">>}].
+
+-spec init_logger() -> ok.
+-ifdef(LAGER).
+init_logger() ->
+ ok.
+-else.
+init_logger() ->
+ case logger:add_primary_filter(stun, {fun ?MODULE:stun_filter/2,
+ ?STUN_MAX_LOG_LEVEL}) of
+ ok ->
+ ok;
+ {error, {already_exist, _}} ->
+ ok
+ end.
+
+-spec stun_filter(logger:log_event(), logger:level() | term())
+ -> logger:filter_return().
+stun_filter(#{meta := #{domain := [stun | _]}, level := Level}, MaxLevel) ->
+ case logger:compare_levels(Level, MaxLevel) of
+ lt ->
+ stop;
+ _ ->
+ ignore
+ end;
+stun_filter(Event, _Extra) ->
+ Event.
+-endif.
+
-endif.