diff options
3 files changed, 17 insertions, 4 deletions
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java index 77c8671..5be3b34 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java @@ -32,9 +32,11 @@ public class BedrockConnect { public static boolean userServers = true; public static boolean featuredServers = true; public static boolean fetchFeaturedIps = true; + + public static boolean fetchIps = false; public static File whitelistfile; - public static String release = "1.32"; + public static String release = "1.33"; public static HashMap<String, String> featuredServerIps; @@ -132,6 +134,9 @@ public class BedrockConnect { if (str.startsWith("fetch_featured_ips=")) { fetchFeaturedIps = getArgValue(str, "fetch_featured_ips").toLowerCase().equals("true"); } + if (str.startsWith("fetch_ips=")) { + fetchIps = getArgValue(str, "fetch_ips").toLowerCase().equals("true"); + } if (str.startsWith("whitelist=")) { try { whitelistfile = new File(getArgValue(str, "whitelist")); diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIComponents.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIComponents.java index 531aef3..32f6c1f 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIComponents.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIComponents.java @@ -143,6 +143,10 @@ public class UIComponents { return false; } + public static boolean isDomain(String address) { + return address.matches("(?![\\d.]+)((?!-))(xn--)?[a-z0-9][a-z0-9-_]{0,61}[a-z0-9]{0,1}\\.(xn--)?([a-z0-9\\._-]{1,61}|[a-z0-9-]{1,30})"); + } + public static String[] validateAddress(String server, BCPlayer player) { if (server.split(":").length > 1) { return server.split(":"); diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java index f1444bb..2629d6e 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java @@ -55,7 +55,7 @@ public class PacketHandler implements BedrockPacketHandler { public String getIP(String hostname) { try { - if(BedrockConnect.fetchFeaturedIps) { + if(BedrockConnect.fetchFeaturedIps || BedrockConnect.fetchIps) { InetAddress host = InetAddress.getByName(hostname); return host.getHostAddress(); } else { @@ -64,7 +64,7 @@ public class PacketHandler implements BedrockPacketHandler { } catch (UnknownHostException ex) { ex.printStackTrace(); } - return "0.0.0.0"; + return hostname; } @Override @@ -396,7 +396,11 @@ public class PacketHandler implements BedrockPacketHandler { public void transfer(String ip, int port) { try { TransferPacket tp = new TransferPacket(); - tp.setAddress(ip); + if(BedrockConnect.fetchIps && UIComponents.isDomain(ip)) { + tp.setAddress(getIP(ip)); + } else { + tp.setAddress(ip); + } tp.setPort(port); session.sendPacketImmediately(tp); } catch (Exception e) { |
