Add warning and change messages

This commit is contained in:
Five (Xer) 2021-06-25 14:29:56 +02:00
parent d7310c91ed
commit 85762524fb
1 changed files with 39 additions and 21 deletions

View File

@ -1,4 +1,4 @@
From ba6e0e6d2baea3310434b8d2915b0d4a0f823ee0 Mon Sep 17 00:00:00 2001
From 08f6ce558f755e916b7a1eebff380a6f010acdcb Mon Sep 17 00:00:00 2001
From: "Five (Xer)" <admin@fivepb.me>
Date: Wed, 23 Jun 2021 23:10:02 +0200
Subject: [PATCH] Rework information forwarding
@ -83,8 +83,27 @@ index d69463f0..59f61e47 100644
+ */
+ ForwardingMode getForwardingMode();
}
diff --git a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java
index 90031156..f1aad373 100644
--- a/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java
+++ b/api/src/main/java/net/md_5/bungee/api/plugin/PluginManager.java
@@ -439,6 +439,14 @@ public final class PluginManager
Preconditions.checkNotNull( desc.getName(), "Plugin from %s has no name", file );
Preconditions.checkNotNull( desc.getMain(), "Plugin from %s has no main", file );
+ // Waterfall start: Forwarding rework
+ if(desc.getName().equals("BungeeGuard")) {
+ proxy.getLogger().warning("Detected the plugin BungeeGuard. " +
+ "Waterfall now supports the functionality this plugin provides natively. " +
+ "Please refer to the Waterfall documentation for more information.");
+ }
+ // Waterfall end: Forwarding rework
+
desc.setFile( file );
toLoad.put( desc.getName(), desc );
}
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..a15112af 100644
index 527f310e..1b805015 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
@@ -1,11 +1,16 @@
@ -92,67 +111,66 @@ index 527f310e..a15112af 100644
import com.google.common.base.Joiner;
+import io.github.waterfallmc.waterfall.forwarding.ForwardingMode;
+import net.md_5.bungee.BungeeCord;
+import net.md_5.bungee.Util;
import net.md_5.bungee.conf.Configuration;
import net.md_5.bungee.conf.YamlConfig;
import net.md_5.bungee.protocol.ProtocolConstants;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.logging.Logger;
public class WaterfallConfiguration extends Configuration {
@@ -45,6 +50,11 @@ public class WaterfallConfiguration extends Configuration {
@@ -45,6 +50,9 @@ public class WaterfallConfiguration extends Configuration {
private boolean disableEntityMetadataRewrite = false;
private boolean disableTabListRewrite = false;
+ private ForwardingMode forwardingMode = ForwardingMode.BUNGEECORD_LEGACY;
+ private byte[] forwardingSecret = Util.randomAlphanumericSequence(12);
+
+ private static final Logger logger = LogManager.getLogger(WaterfallConfiguration.class);
+
@Override
public void load() {
super.load();
@@ -58,6 +68,35 @@ public class WaterfallConfiguration extends Configuration {
@@ -58,6 +66,36 @@ 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);
+ forwardingMode = ForwardingMode.valueOf(config.getString("forwarding_mode", ForwardingMode.BUNGEECORD_LEGACY.toString()).toUpperCase());
+
+ Logger logger = BungeeCord.getInstance().getLogger();
+ if(super.isIpForward()) {
+ switch(forwardingMode) {
+ case BUNGEECORD_LEGACY:
+ logger.info("Forwarding mode is set to Bungeecord/Legacy forwarding.");
+ logger.info("It is recommended to use another forwarding method to mitigate information spoofing attacks.");
+ logger.info("Forwarding mode is set to Bungeecord/Legacy forwarding. " +
+ "It is recommended to use another forwarding method to mitigate information spoofing attacks.");
+ break;
+ case BUNGEEGUARD:
+ logger.info("Forwarding mode is set to BungeeGuard forwarding.");
+ logger.info("Please ensure all connected servers make use of BungeeGuard for optimal security.");
+ logger.info("Forwarding mode is set to BungeeGuard forwarding. " +
+ "Please ensure all connected servers make use of BungeeGuard for optimal security.");
+ break;
+ case VELOCITY_MODERN:
+ logger.info("Forwarding mode is set to Modern/Velocity forwarding.");
+ logger.info("If you need to use servers on versions older than 1.13 please use another forwarding type.");
+ logger.info("Forwarding mode is set to modern/Velocity forwarding. " +
+ "If you need to use versions older than 1.13 please use another forwarding type.");
+ break;
+ }
+ } else {
+ logger.warn("Information forwarding (ip-forwarding) is disabled. ");
+ logger.warn("Player UUIDs may not be consistent across the servers.");
+ logger.warn("For the best experience enable ip_forward in the config.yml.");
+ logger.warning("Information forwarding (ip-forwarding) is disabled. " +
+ "Player UUIDs may not be consistent across the servers. " +
+ "For the optimal experience please enable ip_forward in the config.yml and " +
+ "configure forwarding and on your servers.");
+ }
+
+ if(config.getString("forwarding_secret", "").isEmpty()) {
+ config.regenerateForwardingSecret();
+ logger.info("A new forwarding secret has been generated. If this was the");
+ logger.info("first start of the proxy please configure forwarding for your network.");
+ logger.warning("A new forwarding secret has been generated. If this was the " +
+ "first start of the proxy please configure forwarding for your network.");
+ }
+ forwardingSecret = config.getString("forwarding_secret", "").getBytes(StandardCharsets.UTF_8);
}
@Override
@@ -94,4 +133,13 @@ public class WaterfallConfiguration extends Configuration {
@@ -94,4 +132,13 @@ public class WaterfallConfiguration extends Configuration {
public boolean isDisableTabListRewrite() {
return disableTabListRewrite;
}