Allow any address we might be listening on

This commit is contained in:
José Valim 2021-10-27 17:27:52 +02:00
parent c751fabf80
commit 8fe8d27d3d

View file

@ -88,9 +88,7 @@ defmodule Livebook.Application do
invalid_hostname!("your hostname \"#{hostname}\" does not resolve to an IP address")
{:ok, hostent(h_addrtype: :inet, h_addr_list: addresses)} ->
any_loopback? = Enum.any?(addresses, &match?({127, _, _, _}, &1))
unless any_loopback? do
unless any_loopback?(addresses) or any_if?(addresses) do
invalid_hostname!(
"your hostname \"#{hostname}\" does not resolve to a loopback address (127.0.0.0/8)"
)
@ -102,6 +100,22 @@ defmodule Livebook.Application do
end
end
defp any_loopback?(addresses) do
Enum.any?(addresses, &match?({127, _, _, _}, &1))
end
defp any_if?(addresses) do
case :inet.getifaddrs() do
{:ok, addrs} ->
Enum.any?(addrs, fn {_name, flags} ->
Enum.any?(flags, fn {key, value} -> key == :addr and value in addresses end)
end)
_ ->
false
end
end
defp invalid_hostname!(prelude) do
Livebook.Config.abort!("""
#{prelude}, which indicates something wrong in your OS configuration.