Add configurable plugin messaging limits (#702)
This commit is contained in:
parent
3ce6f14465
commit
e35e947aa2
|
@ -0,0 +1,105 @@
|
|||
From cffebb622018407da2281f266d82acce6b752cac 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 527f310e..e31fb00a 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 = false;
|
||||
|
||||
+ /*
|
||||
+ * 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 c3e60fa5..4afab05d 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
|
||||
@@ -682,9 +682,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.33.1
|
||||
|
Loading…
Reference in New Issue