Current section
Files
Jump to
Current section
Files
src/mdns_server_lib_app.erl
-module(mdns_server_lib_app).
-behaviour(application).
%% Application callbacks
-export([start/2, stop/1]).
%% ===================================================================
%% Application callbacks
%% ===================================================================
start(_StartType, _StartArgs) ->
{ok, Domain} = application:get_env(mdns_server_lib, domain),
{ok, Service} = application:get_env(mdns_server_lib, service),
{IP, Port} = case application:get_env(mdns_server_lib, listener) of
{ok, R} ->
R;
_ ->
{ok, IPx} = application:get_env(mdns_server_lib, ip),
{ok, Portx} = application:get_env(
mdns_server_lib, port),
{IPx, Portx}
end,
{ok, TTL} = application:get_env(mdns_server_lib, ttl),
MDNSConfig0 = [{port, 5353},
{address, {224, 0, 0, 251}},
{domain, Domain},
{type, "_" ++ Service ++ "._tcp"},
{ttl, TTL},
{options,
[{port, Port},
{ip, IP}]}],
MDNSConfig = case application:get_env(mdns_server_lib, interface) of
{ok, IFace} ->
[{interface, IFace} | MDNSConfig0];
_ ->
MDNSConfig0
end,
case application:get_env(mdns_server_lib, disabled) of
{ok, true} ->
ok;
_ ->
[A, B, C, D] = [list_to_integer(binary_to_list(P))
|| P <- re:split(IP, "[.]")],
{ok, _} = ranch:start_listener(
mdns_server, 1,
ranch_tcp,
[{port, Port}, {ip, {A, B, C, D}}],
mdns_server_protocol, []),
{ok, _} = mdns_server_supervisor:start_link([MDNSConfig])
end,
mdns_server_lib_sup:start_link().
stop(_State) ->
ok.