mirror of
https://github.com/PaperMC/Waterfall.git
synced 2024-11-16 07:15:14 +01:00
106 lines
4.6 KiB
Diff
106 lines
4.6 KiB
Diff
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
|
|
|