mirror of
https://github.com/PaperMC/Waterfall.git
synced 2025-02-15 03:11:45 +01:00
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing BungeeCord Changes: d0fa62d4 Minecraft 24w06a support 464ed018 Improve cookie support during login eda268b4 Fix 24w05b spectate packet ID 3e100752 #3612: Error when disconnecting player on PostLoginEvent b52b1469 Add PendingConnection#isTransferred API method 94d5b0d0 Minecraft 24w05b support c3f228f6 #3610, 3611: inverted isEmpty method on ComponentStyle 02c5c1ee #3602: Minecraft 24w04a support c69acf72 Add JetBrains java-annotations a1cd6943 Bump version to 1.20-R0.3-SNAPSHOT 3e2bc8e2 Release 1.20-R0.2 ad7163d2 #3600: Bump io.netty:netty-bom from 4.1.104.Final to 4.1.106.Final
106 lines
4.7 KiB
Diff
106 lines
4.7 KiB
Diff
From 32dab04e234232ee5f41fbb099314ded4db6f253 Mon Sep 17 00:00:00 2001
|
|
From: FivePB <admin@fivepb.me>
|
|
Date: Tue, 16 Nov 2021 21:15:32 +0100
|
|
Subject: [PATCH] Configurable plugin messaging limits
|
|
|
|
This patch makes the maximum number of registered plugin channels as well
|
|
as their name length limit configurable. This is required for some modded
|
|
servers and clients to work
|
|
|
|
diff --git a/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java b/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
|
|
index d69463f0..469fe0e1 100644
|
|
--- a/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
|
|
+++ b/api/src/main/java/net/md_5/bungee/api/ProxyConfig.java
|
|
@@ -261,4 +261,18 @@ public interface ProxyConfig
|
|
* @return {@code true} if tablist rewriting is disabled, {@code false} otherwise
|
|
*/
|
|
boolean isDisableTabListRewrite();
|
|
+
|
|
+ /**
|
|
+ * Gets the maximum number of registered plugin channels for any connection.
|
|
+ *
|
|
+ * @return the configured limit
|
|
+ */
|
|
+ int getPluginChannelLimit();
|
|
+
|
|
+ /**
|
|
+ * Gets the maximum length for any plugin message channel identifier.
|
|
+ *
|
|
+ * @return the configured limit
|
|
+ */
|
|
+ int getPluginChannelNameLimit();
|
|
}
|
|
diff --git a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
|
|
index b88e3c8a..da0efa36 100644
|
|
--- a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
|
|
+++ b/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
|
|
@@ -45,6 +45,23 @@ public class WaterfallConfiguration extends Configuration {
|
|
private boolean disableEntityMetadataRewrite = false;
|
|
private boolean disableTabListRewrite = true;
|
|
|
|
+ /*
|
|
+ * Plugin Message limiting options
|
|
+ * Allows for more control over server-client communication
|
|
+ */
|
|
+
|
|
+ /**
|
|
+ * How many channels there can be between server and player,
|
|
+ * typically used by mods or some plugins.
|
|
+ */
|
|
+ private int pluginChannelLimit = 128;
|
|
+
|
|
+ /**
|
|
+ * How long the maximum channel name can be,
|
|
+ * only reason to change it would be broken mods.
|
|
+ */
|
|
+ private int pluginChannelNameLimit = 128;
|
|
+
|
|
@Override
|
|
public void load() {
|
|
super.load();
|
|
@@ -58,6 +75,8 @@ public class WaterfallConfiguration extends Configuration {
|
|
disableModernTabLimiter = config.getBoolean("disable_modern_tab_limiter", disableModernTabLimiter);
|
|
disableEntityMetadataRewrite = config.getBoolean("disable_entity_metadata_rewrite", disableEntityMetadataRewrite);
|
|
disableTabListRewrite = config.getBoolean("disable_tab_list_rewrite", disableTabListRewrite);
|
|
+ pluginChannelLimit = config.getInt("registered_plugin_channels_limit", pluginChannelLimit);
|
|
+ pluginChannelNameLimit = config.getInt("plugin_channel_name_limit", pluginChannelNameLimit);
|
|
}
|
|
|
|
@Override
|
|
@@ -94,4 +113,14 @@ public class WaterfallConfiguration extends Configuration {
|
|
public boolean isDisableTabListRewrite() {
|
|
return disableTabListRewrite;
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public int getPluginChannelLimit() {
|
|
+ return pluginChannelLimit;
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public int getPluginChannelNameLimit() {
|
|
+ return pluginChannelNameLimit;
|
|
+ }
|
|
}
|
|
diff --git a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
|
|
index ffb078d6..bb9063f6 100644
|
|
--- a/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
|
|
+++ b/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java
|
|
@@ -830,9 +830,10 @@ public class InitialHandler extends PacketHandler implements PendingConnection
|
|
|
|
for ( String id : content.split( "\0" ) )
|
|
{
|
|
- Preconditions.checkState( registeredChannels.size() < 128, "Too many registered channels" );
|
|
- Preconditions.checkArgument( id.length() < 128, "Channel name too long" );
|
|
-
|
|
+ // Waterfall start: Add configurable limits for plugin messaging
|
|
+ Preconditions.checkState( !(registeredChannels.size() > bungee.getConfig().getPluginChannelLimit()), "Too many registered channels. This limit can be configured in the waterfall.yml" );
|
|
+ Preconditions.checkArgument( !(id.length() > bungee.getConfig().getPluginChannelNameLimit()), "Channel name too long. This limit can be configured in the waterfall.yml" );
|
|
+ // Waterfall end
|
|
registeredChannels.add( id );
|
|
}
|
|
} else if ( input.getTag().equals( "UNREGISTER" ) || input.getTag().equals( "minecraft:unregister" ) )
|
|
--
|
|
2.43.0.windows.1
|
|
|