summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java7
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/gui/UIComponents.java4
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java10
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) {