diff options
3 files changed, 70 insertions, 3 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 1bf34e7..8cea6ca 100644 --- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java @@ -6,6 +6,7 @@ import main.com.pyratron.pugmatt.bedrockconnect.utils.PaletteManager; import java.io.*; import java.net.*; +import java.nio.file.Path; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -23,10 +24,12 @@ public class BedrockConnect { public static Server server; public static boolean noDB = false; + public static boolean whitelist = false; public static String customServers = null; public static boolean kickInactive = true; public static boolean userServers = true; public static boolean featuredServers = true; + public static File whitelistfile; public static void main(String[] args) { System.out.println("-= BedrockConnect =-"); @@ -114,6 +117,16 @@ public class BedrockConnect { if (str.startsWith("featured_servers=")) { featuredServers = getArgValue(str, "featured_servers").toLowerCase().equals("true"); } + if (str.startsWith("whitelist=")) { + try { + whitelistfile = new File(getArgValue(str, "whitelist")); + Whitelist.loadWhitelist(whitelistfile); + } + catch(Exception e) { + System.out.println("Unable to load whitelist file: " + whitelistfile.getName()); + e.printStackTrace(); + } + } } if(!noDB) @@ -125,7 +138,11 @@ public class BedrockConnect { CustomServerHandler.initialize(); System.out.printf("Loaded %d custom servers\n", CustomServerHandler.getServers().length); - + + if (Whitelist.hasWhitelist()) { + System.out.printf("There are %d whitelisted players\n", Whitelist.getWhitelist().size()); + } + if(!noDB) { MySQL = new MySQL(hostname, database, username, password); diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Whitelist.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Whitelist.java new file mode 100644 index 0000000..a3d6367 --- /dev/null +++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Whitelist.java @@ -0,0 +1,42 @@ +package main.com.pyratron.pugmatt.bedrockconnect; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.util.List; + + +public class Whitelist { + + private static boolean is_whitelist = false; + private static List<String> whitelist; + static String whitelist_message = "You are not whitelisted on this server"; + + public static void loadWhitelist(File whitelistfile) { + is_whitelist = true; + try { + whitelist = Files.readAllLines(whitelistfile.toPath()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + //returns whether there is a whitelist. + public static boolean hasWhitelist() { + return is_whitelist; + } + + //returns whitelist list + public static List<String> getWhitelist() { + return whitelist; + } + + //returns true if player name is whitelisted, otherwise returns false. + public static boolean isPlayerWhitelisted(String name) { + return whitelist.contains(name); + } + + public static String getWhitelistMessage() { + return whitelist_message; + } +}
\ No newline at end of file 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 79c38dc..1f07c7f 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 @@ -28,6 +28,7 @@ import main.com.pyratron.pugmatt.bedrockconnect.BedrockConnect; import main.com.pyratron.pugmatt.bedrockconnect.CustomServer; import main.com.pyratron.pugmatt.bedrockconnect.CustomServerHandler; import main.com.pyratron.pugmatt.bedrockconnect.Server; +import main.com.pyratron.pugmatt.bedrockconnect.Whitelist; import main.com.pyratron.pugmatt.bedrockconnect.gui.MainFormButton; import main.com.pyratron.pugmatt.bedrockconnect.gui.UIComponents; import main.com.pyratron.pugmatt.bedrockconnect.gui.UIForms; @@ -377,8 +378,15 @@ public class PacketHandler implements BedrockPacketHandler { name = extraData.getAsString("displayName"); uuid = extraData.getAsString("identity"); - - + + + //whitelist check + if (!Whitelist.isPlayerWhitelisted(name)) { + session.disconnect(Whitelist.getWhitelistMessage()); + System.out.println("Kicked " + name + ": \"" + Whitelist.getWhitelistMessage() + "\""); + } + + PlayStatusPacket status = new PlayStatusPacket(); status.setStatus(PlayStatusPacket.Status.LOGIN_SUCCESS); session.sendPacket(status); |
