summaryrefslogtreecommitdiff
path: root/serverlist-server
diff options
context:
space:
mode:
authorMattie <pugmatt@gmail.com>2024-04-01 15:00:25 -0400
committerMattie <pugmatt@gmail.com>2024-04-01 15:00:25 -0400
commit5f38044761b1dcfe7f8f1ad099e0f4e0fff6e495 (patch)
tree5d258ca98d3f9a71bb5ba28fa8c7d87d77d93ff0 /serverlist-server
parentc419de8c61b7afb1f5aa88e808c161b9737d0f8b (diff)
downloadBedrockConnect-5f38044761b1dcfe7f8f1ad099e0f4e0fff6e495.tar.gz
BedrockConnect-5f38044761b1dcfe7f8f1ad099e0f4e0fff6e495.tar.bz2
BedrockConnect-5f38044761b1dcfe7f8f1ad099e0f4e0fff6e495.zip
Add configurable raknet rate limiting
Diffstat (limited to 'serverlist-server')
-rw-r--r--serverlist-server/pom.xml12
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java18
-rw-r--r--serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java5
3 files changed, 22 insertions, 13 deletions
diff --git a/serverlist-server/pom.xml b/serverlist-server/pom.xml
index 6d2ff21..b719194 100644
--- a/serverlist-server/pom.xml
+++ b/serverlist-server/pom.xml
@@ -88,12 +88,6 @@
<artifactId>bedrock-connection</artifactId>
<version>3.0.0.Beta1-SNAPSHOT</version>
<scope>compile</scope>
- <exclusions>
- <exclusion>
- <groupId>io.netty</groupId>
- <artifactId>netty-all</artifactId>
- </exclusion>
- </exclusions>
</dependency>
<dependency>
@@ -133,12 +127,6 @@
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-all</artifactId>
- <version>4.1.84.Final</version>
- <scope>compile</scope>
- </dependency>
- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
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 ab7c2e0..96eae68 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/BedrockConnect.java
@@ -4,6 +4,7 @@ import main.com.pyratron.pugmatt.bedrockconnect.config.Language;
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.cloudburstmc.netty.channel.raknet.RakConstants;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
@@ -38,7 +39,13 @@ public class BedrockConnect {
public static boolean storeDisplayNames = true;
public static File whitelistfile;
- public static String release = "1.42";
+ public static int packetLimit = 200;
+
+ public static int offlinePacketLimit = 35;
+
+ public static int globalPacketLimit = RakConstants.DEFAULT_GLOBAL_PACKET_LIMIT;
+
+ public static String release = "1.42.1";
public static HashMap<String, String> featuredServerIps;
@@ -156,6 +163,15 @@ public class BedrockConnect {
if (str.startsWith("store_display_names=")) {
storeDisplayNames = getArgValue(str, "store_display_names").toLowerCase().equals("true");
}
+ if (str.startsWith("packet_limit=")) {
+ packetLimit = Integer.parseInt(getArgValue(str, "packet_limit"));
+ }
+ if (str.startsWith("offline_packet_limit=")) {
+ offlinePacketLimit = Integer.parseInt(getArgValue(str, "offline_packet_limit"));
+ }
+ if (str.startsWith("global_packet_limit=")) {
+ globalPacketLimit = Integer.parseInt(getArgValue(str, "global_packet_limit"));
+ }
}
if(!noDB)
diff --git a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java
index 1937790..08e1877 100644
--- a/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java
+++ b/serverlist-server/src/main/com/pyratron/pugmatt/bedrockconnect/Server.java
@@ -10,7 +10,9 @@ import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioDatagramChannel;
import main.com.pyratron.pugmatt.bedrockconnect.listeners.PacketHandler;
import main.com.pyratron.pugmatt.bedrockconnect.utils.BedrockProtocol;
+import org.cloudburstmc.netty.channel.raknet.RakChannel;
import org.cloudburstmc.netty.channel.raknet.RakChannelFactory;
+import org.cloudburstmc.netty.channel.raknet.RakConstants;
import org.cloudburstmc.netty.channel.raknet.config.RakChannelOption;
import org.cloudburstmc.protocol.bedrock.BedrockPong;
import org.cloudburstmc.protocol.bedrock.BedrockServerSession;
@@ -77,6 +79,9 @@ public class Server {
.group(this.eventLoopGroup)
.channelFactory(RakChannelFactory.server(NioDatagramChannel.class))
.option(RakChannelOption.RAK_ADVERTISEMENT, pong.toByteBuf())
+ .option(RakChannelOption.RAK_OFFLINE_PACKET_LIMIT, BedrockConnect.offlinePacketLimit)
+ .option(RakChannelOption.RAK_PACKET_LIMIT, BedrockConnect.packetLimit)
+ .option(RakChannelOption.RAK_GLOBAL_PACKET_LIMIT, BedrockConnect.globalPacketLimit)
.childHandler(new BedrockServerInitializer() {
@Override
protected void initSession(BedrockServerSession session) {