From d65afc519a77f3247029d98d13f1ea6a5deae6a1 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 16 Aug 2021 12:00:42 +0100 Subject: [PATCH] Factor out shared code. --- .../plugin/tcp/AndroidLanTcpPlugin.java | 1 + .../bramble/util/NetworkUtils.java | 34 +++++++++++++++++++ .../bramble/plugin/tcp/TcpPlugin.java | 17 +--------- .../bramble/network/JavaNetworkManager.java | 24 +++++-------- .../android/hotspot/WebServerManager.java | 18 +--------- 5 files changed, 46 insertions(+), 48 deletions(-) create mode 100644 bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java index 91d367136..22dfbe8df 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tcp/AndroidLanTcpPlugin.java @@ -49,6 +49,7 @@ import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE; import static org.briarproject.bramble.util.IoUtils.tryToClose; import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces; @NotNullByDefault class AndroidLanTcpPlugin extends LanTcpPlugin { diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java new file mode 100644 index 000000000..d2ad5ef88 --- /dev/null +++ b/bramble-api/src/main/java/org/briarproject/bramble/util/NetworkUtils.java @@ -0,0 +1,34 @@ +package org.briarproject.bramble.util; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; +import java.util.List; +import java.util.logging.Logger; + +import static java.util.Collections.emptyList; +import static java.util.Collections.list; +import static java.util.logging.Level.WARNING; +import static java.util.logging.Logger.getLogger; +import static org.briarproject.bramble.util.LogUtils.logException; + +@NotNullByDefault +public class NetworkUtils { + + private static final Logger LOG = getLogger(NetworkUtils.class.getName()); + + public static List getNetworkInterfaces() { + try { + Enumeration ifaces = + NetworkInterface.getNetworkInterfaces(); + // Despite what the docs say, the return value can be null + //noinspection ConstantConditions + return ifaces == null ? emptyList() : list(ifaces); + } catch (SocketException e) { + logException(LOG, WARNING, e); + return emptyList(); + } + } +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java index d411ee66e..baa050255 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java @@ -28,11 +28,9 @@ import java.net.InterfaceAddress; import java.net.NetworkInterface; import java.net.ServerSocket; import java.net.Socket; -import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; -import java.util.Enumeration; import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; @@ -53,7 +51,7 @@ import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED; import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING; import static org.briarproject.bramble.util.IoUtils.tryToClose; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces; import static org.briarproject.bramble.util.PrivacyUtils.scrubSocketAddress; import static org.briarproject.bramble.util.StringUtils.isNullOrEmpty; @@ -397,19 +395,6 @@ abstract class TcpPlugin implements DuplexPlugin, EventListener { return addrs; } - List getNetworkInterfaces() { - try { - Enumeration ifaces = - NetworkInterface.getNetworkInterfaces(); - // Despite what the docs say, the return value can be null - //noinspection ConstantConditions - return ifaces == null ? emptyList() : list(ifaces); - } catch (SocketException e) { - logException(LOG, WARNING, e); - return emptyList(); - } - } - @Override public void eventOccurred(Event e) { if (e instanceof SettingsUpdatedEvent) { diff --git a/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java b/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java index ee46bd11b..72ccbab2f 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/network/JavaNetworkManager.java @@ -9,16 +9,15 @@ import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; -import java.util.Enumeration; import java.util.logging.Logger; import javax.inject.Inject; -import static java.net.NetworkInterface.getNetworkInterfaces; import static java.util.Collections.list; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces; @MethodsNotNullByDefault @ParametersNotNullByDefault @@ -35,19 +34,14 @@ class JavaNetworkManager implements NetworkManager { public NetworkStatus getNetworkStatus() { boolean connected = false, hasIpv4 = false, hasIpv6Unicast = false; try { - Enumeration interfaces = getNetworkInterfaces(); - if (interfaces == null) { - LOG.info("No network interfaces"); - } else { - for (NetworkInterface i : list(interfaces)) { - if (i.isLoopback() || !i.isUp()) continue; - for (InetAddress addr : list(i.getInetAddresses())) { - connected = true; - if (addr instanceof Inet4Address) { - hasIpv4 = true; - } else if (!addr.isMulticastAddress()) { - hasIpv6Unicast = true; - } + for (NetworkInterface i : getNetworkInterfaces()) { + if (i.isLoopback() || !i.isUp()) continue; + for (InetAddress addr : list(i.getInetAddresses())) { + connected = true; + if (addr instanceof Inet4Address) { + hasIpv4 = true; + } else if (!addr.isMulticastAddress()) { + hasIpv6Unicast = true; } } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java index c5a720b37..60240a996 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServerManager.java @@ -14,9 +14,6 @@ import java.io.IOException; import java.net.InetAddress; import java.net.InterfaceAddress; import java.net.NetworkInterface; -import java.net.SocketException; -import java.util.Enumeration; -import java.util.List; import java.util.logging.Logger; import javax.inject.Inject; @@ -24,12 +21,11 @@ import javax.inject.Inject; import androidx.annotation.Nullable; import androidx.annotation.UiThread; -import static java.util.Collections.emptyList; -import static java.util.Collections.list; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.NetworkUtils.getNetworkInterfaces; import static org.briarproject.briar.android.hotspot.WebServer.PORT; @MethodsNotNullByDefault @@ -112,16 +108,4 @@ class WebServerManager { } return null; } - - private static List getNetworkInterfaces() { - try { - Enumeration ifaces = - NetworkInterface.getNetworkInterfaces(); - return ifaces == null ? emptyList() : list(ifaces); - } catch (SocketException e) { - logException(LOG, WARNING, e); - return emptyList(); - } - } - }