From 3b2cb6546b973c776ed4d8608b6b3adcaff66e12 Mon Sep 17 00:00:00 2001 From: Benoit Lavenier <benoit.lavenier@e-is.pro> Date: Fri, 4 Aug 2023 15:09:48 +0200 Subject: [PATCH] fix: Do not exclude hostname when scanning network peers --- .../service/local/NetworkServiceImpl.java | 3 ++- .../core/util/http/InetAddressUtilsTest.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java index dee88a0a..403b3498 100644 --- a/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java +++ b/duniter4j-core-client/src/main/java/org/duniter/core/client/service/local/NetworkServiceImpl.java @@ -42,6 +42,7 @@ import org.duniter.core.service.CryptoService; import org.duniter.core.util.*; import org.duniter.core.util.CollectionUtils; import org.duniter.core.util.concurrent.CompletableFutures; +import org.duniter.core.util.http.DnsUtils; import org.duniter.core.util.http.InetAddressUtils; import org.duniter.core.util.websocket.WebsocketClientEndpoint; import org.slf4j.Logger; @@ -180,7 +181,7 @@ public class NetworkServiceImpl extends BaseRemoteServiceImpl implements Network return peer; }) // Exclude peer on intranet (not routable) addresses - .filter(peer -> InetAddressUtils.isInternetAddress(peer.getHost())) + .filter(peer -> DnsUtils.isInternetHostName(peer.getHost()) || InetAddressUtils.isInternetAddress(peer.getHost())) .collect(Collectors.toList()) ) .thenCompose(peers -> this.refreshPeersAsync(mainPeer, peers, pool)); diff --git a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java index 62d8a43f..6685b628 100644 --- a/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java +++ b/duniter4j-core-shared/src/test/java/org/duniter/core/util/http/InetAddressUtilsTest.java @@ -130,4 +130,24 @@ public class InetAddressUtilsTest { checkFalse = InetAddressUtils.isInternetAddress("g1.duniter.org"); Assert.assertFalse(checkFalse); } + + @Test + public void isNotLocalAddress() { + + boolean checkTrue = InetAddressUtils.isNotLocalAddress("10.0.0.1"); + Assert.assertTrue(checkTrue); + + checkTrue = InetAddressUtils.isNotLocalAddress("192.168.0.254"); + Assert.assertTrue(checkTrue); + + boolean checkFalse = InetAddressUtils.isNotLocalAddress("127.0.0.1"); + Assert.assertFalse(checkFalse); + + checkFalse = InetAddressUtils.isNotLocalAddress("localhost"); + Assert.assertFalse(checkFalse); + + // Try a host name + checkFalse = InetAddressUtils.isNotLocalAddress("g1.duniter.org"); + Assert.assertFalse(checkFalse); + } } -- GitLab