diff options
| -rw-r--r-- | serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java | 47 | ||||
| -rw-r--r-- | serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java | 14 |
2 files changed, 55 insertions, 6 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 8cea6ca..86ac199 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java @@ -3,6 +3,9 @@ package main.com.pyratron.pugmatt.bedrockconnect; import main.com.pyratron.pugmatt.bedrockconnect.sql.Data; import main.com.pyratron.pugmatt.bedrockconnect.sql.MySQL; import main.com.pyratron.pugmatt.bedrockconnect.utils.PaletteManager; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; import java.io.*; import java.net.*; @@ -29,8 +32,11 @@ public class BedrockConnect { public static boolean kickInactive = true; public static boolean userServers = true; public static boolean featuredServers = true; + public static boolean fetchFeaturedIps = true; public static File whitelistfile; + public static HashMap<String, String> featuredServerIps; + public static void main(String[] args) { System.out.println("-= BedrockConnect =-"); paletteManager = new PaletteManager(); @@ -117,6 +123,9 @@ public class BedrockConnect { if (str.startsWith("featured_servers=")) { featuredServers = getArgValue(str, "featured_servers").toLowerCase().equals("true"); } + if (str.startsWith("fetch_featured_ips=")) { + fetchFeaturedIps = getArgValue(str, "fetch_featured_ips").toLowerCase().equals("true"); + } if (str.startsWith("whitelist=")) { try { whitelistfile = new File(getArgValue(str, "whitelist")); @@ -142,6 +151,44 @@ public class BedrockConnect { if (Whitelist.hasWhitelist()) { System.out.printf("There are %d whitelisted players\n", Whitelist.getWhitelist().size()); } + + if(!fetchFeaturedIps) { + try { + featuredServerIps = new HashMap<>(); + + // If the file doesn't already exist, create a configuration file containing the hard-coded IPs + // for the featured servers if fetching the featured ips is set to disabled + File ipFile = new File("featured_server_ips.json"); + if (ipFile.createNewFile()) { + featuredServerIps.put("hivebedrock.network", "167.114.81.89"); + featuredServerIps.put("mco.mineplex.com", "108.178.12.125"); + featuredServerIps.put("mco.lbsg.net", "142.44.240.96"); + featuredServerIps.put("play.inpvp.net", "52.234.130.241"); + featuredServerIps.put("play.galaxite.net", "51.222.8.223"); + featuredServerIps.put("play.pixelparadise.gg", "40.87.84.106"); + + JSONObject jo = new JSONObject(); + for (Map.Entry server : featuredServerIps.entrySet()) { + jo.put(server.getKey(), server.getValue()); + } + + PrintWriter pw = new PrintWriter("featured_server_ips.json"); + pw.write(jo.toJSONString()); + pw.flush(); + pw.close(); + } else { + Object obj = new JSONParser().parse(new FileReader("featured_server_ips.json")); + + JSONObject jo = (JSONObject) obj; + for (Object server : jo.keySet()) { + featuredServerIps.put((String) server, (String) jo.get(server)); + } + } + } catch (Exception e) { + System.out.println("An error occurred."); + e.printStackTrace(); + } + } if(!noDB) { MySQL = new MySQL(hostname, database, username, password); 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 ef28bda..56c4d81 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 @@ -8,6 +8,7 @@ import com.nimbusds.jwt.SignedJWT; import com.nukkitx.math.vector.Vector3f; import com.nukkitx.nbt.NbtUtils; import com.nukkitx.network.util.Preconditions; +import com.nukkitx.protocol.bedrock.Bedrock; import com.nukkitx.protocol.bedrock.BedrockClient; import com.nukkitx.protocol.bedrock.BedrockPacketCodec; import com.nukkitx.protocol.bedrock.data.AttributeData; @@ -66,15 +67,16 @@ public class PacketHandler implements BedrockPacketHandler { public static String getIP(String hostname) { try { - InetAddress host = InetAddress.getByName(hostname); - String IP = host.getHostAddress().toString(); - //System.out.println(IP); - return IP; + if(BedrockConnect.fetchFeaturedIps) { + InetAddress host = InetAddress.getByName(hostname); + return host.getHostAddress(); + } else { + return BedrockConnect.featuredServerIps.get(hostname); + } } catch (UnknownHostException ex) { ex.printStackTrace(); - String IP = "0.0.0.0"; - return IP; } + return "0.0.0.0"; } @Override |
