summaryrefslogtreecommitdiff
path: root/serverlist-server/src
diff options
context:
space:
mode:
authorPugmatt <pugmatt@gmail.com>2020-03-25 19:53:30 -0400
committerPugmatt <pugmatt@gmail.com>2020-03-25 19:53:30 -0400
commit7785d6744dca6ea4009e5bf796c383828db024da (patch)
tree5a2f8cf5a8cbd3dc2c6b91aa2355e97ed8346ec5 /serverlist-server/src
parent826b7f11debd7949cef9ef7c292a071b7b474df0 (diff)
downloadBedrockConnect-7785d6744dca6ea4009e5bf796c383828db024da.tar.gz
BedrockConnect-7785d6744dca6ea4009e5bf796c383828db024da.tar.bz2
BedrockConnect-7785d6744dca6ea4009e5bf796c383828db024da.zip
Fix for domain regex
Diffstat (limited to 'serverlist-server/src')
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java50
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/listeners/PacketHandler.java4
2 files changed, 50 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 2c00ac4..b58f1d9 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
@@ -3,15 +3,17 @@ 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 java.io.*;
+import java.net.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.Timer;
-import java.util.TimerTask;
+import java.util.*;
public class BedrockConnect {
@@ -54,6 +56,50 @@ public class BedrockConnect {
port = getArgValue(str, "port");
if(str.startsWith("nodb="))
noDB = true;
+ if(str.startsWith("generatedns=")) {
+ String ip;
+ try {
+ Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+
+ System.out.println("Local IPv4 IPs:");
+ while (interfaces.hasMoreElements()) {
+ NetworkInterface iface = interfaces.nextElement();
+
+ if (iface.isLoopback() || !iface.isUp() || iface.isVirtual() || iface.isPointToPoint())
+ continue;
+
+ Enumeration<InetAddress> addresses = iface.getInetAddresses();
+ while(addresses.hasMoreElements()) {
+ InetAddress addr = addresses.nextElement();
+
+ if(!(addr instanceof Inet4Address)) continue;
+
+ ip = addr.getHostAddress();
+ System.out.println(iface.getDisplayName() + ": " + ip);
+ }
+ }
+
+ Scanner reader = new Scanner(System.in); // Reading from System.in
+ System.out.print("\nWhich IP should be used for the DNS records: ");
+ String selectedIP = reader.next().replaceAll("\\s+","");
+ reader.close();
+
+ BufferedWriter br = new BufferedWriter(new FileWriter(new File("bc_dns.conf")));
+ br.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
+ "<DNSMasqConfig xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n" +
+ " <DNSMasqEntries>\n" +
+ " <DNSMasqHost name=\"hivebedrock.network\" a=\"" + selectedIP + "\" />\n" +
+ " <DNSMasqHost name=\"mco.mineplex.com\" a=\"" + selectedIP + "\" />\n" +
+ " <DNSMasqHost name=\"play.inpvp.net\" a=\"" + selectedIP + "\" />\n" +
+ " <DNSMasqHost name=\"mco.lbsg.net\" a=\"" + selectedIP + "\" />\n" +
+ " <DNSMasqHost name=\"mco.cubecraft.net\" a=\"" + selectedIP + "\" />\n" +
+ " </DNSMasqEntries>\n" +
+ "</DNSMasqConfig>");
+ br.close();
+ } catch (SocketException e) {
+ throw new RuntimeException(e);
+ }
+ }
}
if(!noDB)
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 f7362ef..536e802 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
@@ -1000,11 +1000,11 @@ public class PacketHandler implements BedrockPacketHandler {
data.set(0, data.get(0).replaceAll("\\s",""));
data.set(1, data.get(1).replaceAll("\\s",""));
- if(data.get(0).length() >= 45)
+ if(data.get(0).length() >= 253)
session.sendPacketImmediately(UIForms.createError("Address is too large. (Must be less than 45)"));
else if(data.get(1).length() >= 10)
session.sendPacketImmediately(UIForms.createError("Port is too large. (Must be less than 10)"));
- else if (!data.get(0).matches("[a-zA-Z.0-9]+"))
+ else if (!data.get(0).matches("^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$"))
session.sendPacketImmediately(UIForms.createError("Enter a valid address. (E.g. play.example.net, 172.16.254.1)"));
else if (!data.get(1).matches("[0-9]+"))
session.sendPacketImmediately(UIForms.createError("Enter a valid port that contains only numbers"));