From 084bfeb92d94520e915455e3a17d691fec6ca40a Mon Sep 17 00:00:00 2001 From: apoorv-2204 Date: Thu, 5 Jan 2023 20:55:32 +0530 Subject: [PATCH 1/5] attempt to resolve forwarding random port with upnpc --- lib/archethic/networking/port_forwarding.ex | 30 +++++++++++++++++- .../networking/registry/iana_unassigned_ports | Bin 0 -> 213728 bytes 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 lib/archethic/networking/registry/iana_unassigned_ports diff --git a/lib/archethic/networking/port_forwarding.ex b/lib/archethic/networking/port_forwarding.ex index abf2fa563..dff25ed25 100644 --- a/lib/archethic/networking/port_forwarding.ex +++ b/lib/archethic/networking/port_forwarding.ex @@ -41,7 +41,12 @@ defmodule Archethic.Networking.PortForwarding do defp do_try_open_port(port), do: NATDiscovery.open_port(port) defp fallback(port, _force? = true) do - case do_try_open_port(0) do + # // If the port is not open, try to open a random port + Logger.info("Trying to open a random port") + + rand_port = get_random_port() + + case do_try_open_port(rand_port) do {:ok, port} -> Logger.info("Use the random port #{port} as fallback") {:ok, port} @@ -70,4 +75,27 @@ defmodule Archethic.Networking.PortForwarding do defp ip_lookup_provider do Application.get_env(:archethic, IPLookup) end + + @iana_registry_path Path.join([ + File.cwd() |> elem(1), + "lib", + "archethic", + "networking", + "registry", + "iana_unassigned_ports" + ]) + + # see https://github.com/apoorv-2204/iana_port_registry + defp list_iana_unassigned_ports() do + Logger.notice("IANA Registry Date #{inspect(DateTime.from_unix(1_672_826_429) |> elem(1))}") + + @iana_registry_path + |> File.read!() + |> :erlang.binary_to_term() + end + + defp get_random_port() do + list_iana_unassigned_ports() + |> Enum.random() + end end diff --git a/lib/archethic/networking/registry/iana_unassigned_ports b/lib/archethic/networking/registry/iana_unassigned_ports new file mode 100644 index 0000000000000000000000000000000000000000..2909522a48900d8490861bc8fcdd835325b7ba3f GIT binary patch literal 213728 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 z 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 X*9U#nCw Date: Fri, 6 Jan 2023 11:27:20 +0530 Subject: [PATCH 2/5] review changes --- lib/archethic/networking/port_forwarding.ex | 40 ++++++------------ .../networking/registry/iana_unassigned_ports | Bin 213728 -> 0 bytes 2 files changed, 14 insertions(+), 26 deletions(-) delete mode 100644 lib/archethic/networking/registry/iana_unassigned_ports diff --git a/lib/archethic/networking/port_forwarding.ex b/lib/archethic/networking/port_forwarding.ex index dff25ed25..30fab79b0 100644 --- a/lib/archethic/networking/port_forwarding.ex +++ b/lib/archethic/networking/port_forwarding.ex @@ -40,7 +40,17 @@ defmodule Archethic.Networking.PortForwarding do defp do_try_open_port(port), do: NATDiscovery.open_port(port) - defp fallback(port, _force? = true) do + defp fallback(port, force?, retries \\ 10) + + defp fallback(_, _force? = true, 0) do + Logger.error( + "Port from configuration is used but requires a manuel port forwarding setting on the router" + ) + + :error + end + + defp fallback(port, _force? = true, retries) do # // If the port is not open, try to open a random port Logger.info("Trying to open a random port") @@ -54,15 +64,11 @@ defmodule Archethic.Networking.PortForwarding do :error -> Logger.error("Cannot publish the a random port #{port}") - Logger.error( - "Port from configuration is used but requires a manuel port forwarding setting on the router" - ) - - :error + fallback(port, _force? = true, retries - 1) end end - defp fallback(port, _force? = false) do + defp fallback(port, _force? = false, _) do Logger.warning("No fallback provided for the port #{port}") Logger.warning( @@ -76,26 +82,8 @@ defmodule Archethic.Networking.PortForwarding do Application.get_env(:archethic, IPLookup) end - @iana_registry_path Path.join([ - File.cwd() |> elem(1), - "lib", - "archethic", - "networking", - "registry", - "iana_unassigned_ports" - ]) - - # see https://github.com/apoorv-2204/iana_port_registry - defp list_iana_unassigned_ports() do - Logger.notice("IANA Registry Date #{inspect(DateTime.from_unix(1_672_826_429) |> elem(1))}") - - @iana_registry_path - |> File.read!() - |> :erlang.binary_to_term() - end - defp get_random_port() do - list_iana_unassigned_ports() + 49_152..65_535 |> Enum.random() end end diff --git a/lib/archethic/networking/registry/iana_unassigned_ports b/lib/archethic/networking/registry/iana_unassigned_ports deleted file mode 100644 index 2909522a48900d8490861bc8fcdd835325b7ba3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213728 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 z 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 X*9U#nCw Date: Fri, 6 Jan 2023 23:31:35 +0530 Subject: [PATCH 3/5] review changes 2 --- config/config.exs | 1 + lib/archethic/networking/port_forwarding.ex | 10 ++-------- src/c/nat/miniupnp | 2 +- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/config/config.exs b/config/config.exs index d14e69a2d..f3d2436af 100644 --- a/config/config.exs +++ b/config/config.exs @@ -149,6 +149,7 @@ config :archethic, Archethic.Networking.IPLookup.NATDiscovery, config :archethic, Archethic.Networking.IPLookup.RemoteDiscovery, provider: Archethic.Networking.IPLookup.RemoteDiscovery.IPIFY +config :archethic, Archethic.Networking.PortForwarding, port_range: 49_152..65_535 # -----End-of-Networking-configs ------ config :esbuild, diff --git a/lib/archethic/networking/port_forwarding.ex b/lib/archethic/networking/port_forwarding.ex index 30fab79b0..3e25bf65e 100644 --- a/lib/archethic/networking/port_forwarding.ex +++ b/lib/archethic/networking/port_forwarding.ex @@ -50,13 +50,12 @@ defmodule Archethic.Networking.PortForwarding do :error end + @random_ports_range Application.compile_env!(:archethic, [__MODULE__, :port_range]) defp fallback(port, _force? = true, retries) do # // If the port is not open, try to open a random port Logger.info("Trying to open a random port") - rand_port = get_random_port() - - case do_try_open_port(rand_port) do + case do_try_open_port(Enum.random(@random_ports_range)) do {:ok, port} -> Logger.info("Use the random port #{port} as fallback") {:ok, port} @@ -81,9 +80,4 @@ defmodule Archethic.Networking.PortForwarding do defp ip_lookup_provider do Application.get_env(:archethic, IPLookup) end - - defp get_random_port() do - 49_152..65_535 - |> Enum.random() - end end diff --git a/src/c/nat/miniupnp b/src/c/nat/miniupnp index 207cf440a..014c9df8e 160000 --- a/src/c/nat/miniupnp +++ b/src/c/nat/miniupnp @@ -1 +1 @@ -Subproject commit 207cf440a22c075cb55fb067a850be4f9c204e6e +Subproject commit 014c9df8ee7a36e5bf85aa619062a2d4b95ec8f6 From a781c2e82fd0b47361bd3ceb3f61e51f0eefbc52 Mon Sep 17 00:00:00 2001 From: apoorv-2204 Date: Wed, 11 Jan 2023 18:21:05 +0530 Subject: [PATCH 4/5] fix --- config/test.exs | 1 - 1 file changed, 1 deletion(-) diff --git a/config/test.exs b/config/test.exs index 2795e6e07..b206751d1 100755 --- a/config/test.exs +++ b/config/test.exs @@ -103,7 +103,6 @@ config :archethic, Archethic.Networking.IPLookup.NATDiscovery, provider: MockNAT # Regardless of default IPIFY use MockRemoteDiscovery config :archethic, Archethic.Networking.IPLookup.RemoteDiscovery, provider: MockRemoteDiscovery -config :archethic, Archethic.Networking.PortForwarding, MockPortForwarding config :archethic, Archethic.Networking.Scheduler, enabled: false # -----End-of-Networking-tests-configs ------ From bf5181aca00eeeaa8f250ce63bf463619bfb2dd7 Mon Sep 17 00:00:00 2001 From: apoorv-2204 Date: Wed, 11 Jan 2023 22:57:09 +0530 Subject: [PATCH 5/5] fix --- lib/archethic/networking/port_forwarding.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/archethic/networking/port_forwarding.ex b/lib/archethic/networking/port_forwarding.ex index 3e25bf65e..2a8f6a0ac 100644 --- a/lib/archethic/networking/port_forwarding.ex +++ b/lib/archethic/networking/port_forwarding.ex @@ -17,8 +17,9 @@ defmodule Archethic.Networking.PortForwarding do Logger.info("Try to open port #{port}") with true <- required?(ip_lookup_provider()), - true <- conf_overrides?() do - do_try_open_port(port) + true <- conf_overrides?(), + {:ok, port} <- do_try_open_port(port) do + {:ok, port} else false -> Logger.info("Port forwarding is skipped")