From fd6675a3a3c150553cb319b4b5d433c29f4b1a3a Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 30 Aug 2020 18:39:25 -0700 Subject: [PATCH] Populate the external IP address when a PC is added manually using an RFC 1918 IPv4 address --- .../computers/ComputerManagerService.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/src/main/java/com/limelight/computers/ComputerManagerService.java b/app/src/main/java/com/limelight/computers/ComputerManagerService.java index 829ca467..d23dbd05 100644 --- a/app/src/main/java/com/limelight/computers/ComputerManagerService.java +++ b/app/src/main/java/com/limelight/computers/ComputerManagerService.java @@ -4,8 +4,10 @@ import java.io.IOException; import java.io.OutputStream; import java.io.StringReader; import java.net.Inet4Address; +import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; +import java.net.UnknownHostException; import java.util.HashSet; import java.util.LinkedList; import java.util.List; @@ -134,6 +136,18 @@ public class ComputerManagerService extends Service { dbManager.updateComputer(existingComputer); } else { + try { + // If the active address is a site-local address (RFC 1918), + // then use STUN to populate the external address field if + // it's not set already. + if (details.remoteAddress == null) { + InetAddress addr = InetAddress.getByName(details.activeAddress); + if (addr.isSiteLocalAddress()) { + populateExternalAddress(details); + } + } + } catch (UnknownHostException ignored) {} + dbManager.updateComputer(details); } }