]> granicus.if.org Git - ejabberd/commitdiff
Introduce --enable-stun and --enable-sip configure options
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 23 May 2017 10:12:48 +0000 (13:12 +0300)
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>
Tue, 23 May 2017 10:12:48 +0000 (13:12 +0300)
STUN/TURN and SIP is not compiled by default anymore.
Use --enable-stun, --enable-sip or --enable-all to enable them.

configure.ac
rebar.config
src/ejabberd_sip.erl
src/ejabberd_stun.erl
src/mod_sip.erl
src/mod_sip_proxy.erl
src/mod_sip_registrar.erl
vars.config.in

index f5eee8cbfe63f07091b0500a5cc271e580093fc8..aa92cf38e3e315fc45349120b94b5f6be2f04e3f 100644 (file)
@@ -101,10 +101,10 @@ AC_ARG_ENABLE(mssql,
 esac],[db_type=generic])
 
 AC_ARG_ENABLE(all,
-[AC_HELP_STRING([--enable-all], [same as --enable-odbc --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-riak --enable-redis --enable-elixir --enable-iconv --enable-debug --enable-tools (useful for Dialyzer checks, default: no)])],
+[AC_HELP_STRING([--enable-all], [same as --enable-odbc --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-riak --enable-redis --enable-elixir --enable-iconv --enable-stun --enable-sip --enable-debug --enable-tools (useful for Dialyzer checks, default: no)])],
 [case "${enableval}" in
-  yes) odbc=true mysql=true pgsql=true sqlite=true pam=true zlib=true riak=true redis=true elixir=true iconv=true debug=true tools=true ;;
-  no) odbc=false mysql=false pgsql=false sqlite=false pam=false zlib=false riak=false redis=false elixir=false iconv=false debug=false tools=false ;;
+  yes) odbc=true mysql=true pgsql=true sqlite=true pam=true zlib=true riak=true redis=true elixir=true iconv=true stun=true sip=true debug=true tools=true ;;
+  no) odbc=false mysql=false pgsql=false sqlite=false pam=false zlib=false riak=false redis=false elixir=false iconv=false stun=false sip=false debug=false tools=false ;;
   *) AC_MSG_ERROR(bad value ${enableval} for --enable-all) ;;
 esac],[])
 
@@ -212,6 +212,22 @@ AC_ARG_ENABLE(latest_deps,
   *) AC_MSG_ERROR(bad value ${enableval} for --enable-latest-deps) ;;
 esac],[if test "x$latest_deps" = "x"; then latest_deps=false; fi])
 
+AC_ARG_ENABLE(stun,
+[AC_HELP_STRING([--enable-stun], [enable STUN/TURN support (default: no)])],
+[case "${enableval}" in
+  yes) stun=true ;;
+  no)  stun=false ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-stun) ;;
+esac],[if test "x$stun" = "x"; then stun=false; fi])
+
+AC_ARG_ENABLE(sip,
+[AC_HELP_STRING([--enable-sip], [enable SIP support (default: no)])],
+[case "${enableval}" in
+  yes) sip=true ;;
+  no)  sip=false ;;
+  *) AC_MSG_ERROR(bad value ${enableval} for --enable-sip) ;;
+esac],[if test "x$sip" = "x"; then sip=false; fi])
+
 AC_CONFIG_FILES([Makefile
                 vars.config
                 src/ejabberd.app.src])
@@ -253,6 +269,8 @@ AC_SUBST(riak)
 AC_SUBST(redis)
 AC_SUBST(elixir)
 AC_SUBST(iconv)
+AC_SUBST(stun)
+AC_SUBST(sip)
 AC_SUBST(debug)
 AC_SUBST(tools)
 AC_SUBST(latest_deps)
index acd737681d2f9dee6e1b2d6951b9fa24a9c123e9..c67a86f6717e6a5cb07380afa27b494f95f2a1c7 100644 (file)
         {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.8"}}},
         {fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.21"}}},
         {xmpp, ".*", {git, "https://github.com/processone/xmpp", "e8dbfec277e7eb27b8130b13873b969cc346fafc"}},
-        {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.10"}}},
-        {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.11"}}},
         {fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.9"}}},
         {jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "0.14.8"}}},
         {p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.1"}}},
         {luerl, ".*", {git, "https://github.com/rvirding/luerl", {tag, "v0.2"}}},
+       {if_var_true, stun, {stun, ".*", {git, "https://github.com/processone/stun", {tag, "1.0.10"}}}},
+       {if_var_true, sip, {esip, ".*", {git, "https://github.com/processone/esip", {tag, "1.0.11"}}}},
         {if_var_true, mysql, {p1_mysql, ".*", {git, "https://github.com/processone/p1_mysql",
                                                "31e035b"}}},
         {if_var_true, pgsql, {p1_pgsql, ".*", {git, "https://github.com/processone/p1_pgsql",
@@ -84,6 +84,8 @@
            {i, "deps/p1_utils/include"},
             {if_var_false, debug, no_debug_info},
             {if_var_true, debug, debug_info},
+           {if_var_true, sip, {d, 'SIP'}},
+           {if_var_true, stun, {d, 'STUN'}},
             {if_var_true, roster_gateway_workaround, {d, 'ROSTER_GATWAY_WORKAROUND'}},
             {if_var_match, db_type, mssql, {d, 'mssql'}},
             {if_var_true, elixir, {d, 'ELIXIR_ENABLED'}},
 {post_hook_configure, [{"fast_tls", []},
                        {"stringprep", []},
                        {"fast_yaml", []},
-                       {"esip", []},
+                       {if_var_true, sip, {"esip", []}},
                        {"fast_xml", [{if_var_true, full_xml, "--enable-full-xml"}]},
                        {if_var_true, pam, {"epam", []}},
                        {if_var_true, zlib, {"ezlib", []}},
index d7404a30edc75f4cfd5197deec3696cb21b61fc1..2c98aec16b60e310689d0549187ac9a563562f9e 100644 (file)
 %%%-------------------------------------------------------------------
 -module(ejabberd_sip).
 
+-ifndef(SIP).
+-include("logger.hrl").
+-export([socket_type/0, start/2, listen_opt_type/1]).
+log_error() ->
+    ?CRITICAL_MSG("ejabberd is not compiled with SIP support", []).
+socket_type() ->
+    log_error(),
+    raw.
+listen_opt_type(_) ->
+    log_error(),
+    [].
+start(_, _) ->
+    log_error(),
+    {error, sip_not_compiled}.
+-else.
 %% API
 -export([tcp_init/2, udp_init/2, udp_recv/5, start/2,
         socket_type/0, listen_opt_type/1]).
@@ -59,3 +74,4 @@ listen_opt_type(_) ->
 %%%===================================================================
 %%% Internal functions
 %%%===================================================================
+-endif.
index 3611edba745f3cae35b192034a87579038afe5ac..35a04ce45f9ee5d50900a1d25cad930c1a3b33d1 100644 (file)
 -protocol({rfc, 5766}).
 -protocol({xep, 176, '1.0'}).
 
+-ifndef(STUN).
+-include("logger.hrl").
+-export([socket_type/0, start/2, listen_opt_type/1]).
+log_error() ->
+    ?CRITICAL_MSG("ejabberd is not compiled with STUN/TURN support", []).
+socket_type() ->
+    log_error(),
+    raw.
+listen_opt_type(_) ->
+    log_error(),
+    [].
+start(_, _) ->
+    log_error(),
+    {error, sip_not_compiled}.
+-else.
 -export([tcp_init/2, udp_init/2, udp_recv/5, start/2,
         socket_type/0, listen_opt_type/1]).
 
@@ -138,3 +153,4 @@ listen_opt_type(_) ->
     [shaper, auth_type, auth_realm, tls, certfile, turn_min_port,
      turn_max_port, turn_max_allocations, turn_max_permissions,
      server_name].
+-endif.
index eb5cbe5453af5993239cba2849b5708a280ad918..7c3e60917cff2e6eecd3c57af46183cf61eb9517 100644 (file)
 -module(mod_sip).
 -protocol({rfc, 3261}).
 
+-include("logger.hrl").
+
+-ifndef(SIP).
+-export([start/2, stop/1, depends/2, mod_opt_type/1]).
+start(_, _) ->
+    ?CRITICAL_MSG("ejabberd is not compiled with SIP support", []),
+    {error, sip_not_compiled}.
+stop(_) ->
+    ok.
+depends(_, _) ->
+    [].
+mod_opt_type(_) ->
+    [].
+-else.
 -behaviour(gen_mod).
 -behaviour(esip).
 
@@ -37,7 +51,6 @@
         locate/1, mod_opt_type/1, depends/2]).
 
 -include("ejabberd.hrl").
--include("logger.hrl").
 -include_lib("esip/include/esip.hrl").
 
 %%%===================================================================
@@ -350,3 +363,5 @@ mod_opt_type(via) ->
 mod_opt_type(_) ->
     [always_record_route, flow_timeout_tcp,
      flow_timeout_udp, record_route, routes, via].
+
+-endif.
index 5e0cfa25e52abcdea379fd08f8e9704308d44f64..19a02e8e47e9f4091aa96c4975e78dc7e8be8122 100644 (file)
@@ -24,6 +24,9 @@
 %%%-------------------------------------------------------------------
 -module(mod_sip_proxy).
 
+-ifndef(SIP).
+-export([]).
+-else.
 -define(GEN_FSM, p1_fsm).
 -behaviour(?GEN_FSM).
 
@@ -424,3 +427,5 @@ safe_nameprep(S) ->
        error -> S;
        S1 -> S1
     end.
+
+-endif.
index 1bc819c08dc403a15ce6de6b0511ebb0e37fa28e..0e131eee699450741ace7606c72863784e10bff8 100644 (file)
@@ -24,6 +24,9 @@
 %%%-------------------------------------------------------------------
 -module(mod_sip_registrar).
 
+-ifndef(SIP).
+-export([]).
+-else.
 -ifndef(GEN_SERVER).
 -define(GEN_SERVER, gen_server).
 -endif.
@@ -580,3 +583,5 @@ process_ping(SIPSocket) ->
         (_, Acc) ->
              Acc
       end, ErrResponse, Sessions).
+
+-endif.
index 5eca4889a8bea3fca7baff32050fe9563f4b6467..94584dad4448f308e699d9839fde184238553df6 100644 (file)
@@ -40,6 +40,8 @@
 {redis, @redis@}.
 {elixir, @elixir@}.
 {iconv, @iconv@}.
+{stun, @stun@}.
+{sip, @sip@}.
 
 %% Version
 {vsn, "@PACKAGE_VERSION@"}.