Add warning and change messages

This commit is contained in:
Five (Xer) 2021-06-25 14:29:56 +02:00
parent d7310c91ed
commit 85762524fb

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> From: "Five (Xer)" <admin@fivepb.me>
Date: Wed, 23 Jun 2021 23:10:02 +0200 Date: Wed, 23 Jun 2021 23:10:02 +0200
Subject: [PATCH] Rework information forwarding Subject: [PATCH] Rework information forwarding
@ -83,8 +83,27 @@ index d69463f0..59f61e47 100644
+ */ + */
+ ForwardingMode getForwardingMode(); + 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 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 --- a/proxy/src/main/java/io/github/waterfallmc/waterfall/conf/WaterfallConfiguration.java
+++ b/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 @@ @@ -1,11 +1,16 @@
@ -92,67 +111,66 @@ index 527f310e..a15112af 100644
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
+import io.github.waterfallmc.waterfall.forwarding.ForwardingMode; +import io.github.waterfallmc.waterfall.forwarding.ForwardingMode;
+import net.md_5.bungee.BungeeCord;
+import net.md_5.bungee.Util; +import net.md_5.bungee.Util;
import net.md_5.bungee.conf.Configuration; import net.md_5.bungee.conf.Configuration;
import net.md_5.bungee.conf.YamlConfig; import net.md_5.bungee.conf.YamlConfig;
import net.md_5.bungee.protocol.ProtocolConstants; 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.io.File;
+import java.nio.charset.StandardCharsets; +import java.nio.charset.StandardCharsets;
+import java.util.logging.Logger;
public class WaterfallConfiguration extends Configuration { 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 disableEntityMetadataRewrite = false;
private boolean disableTabListRewrite = false; private boolean disableTabListRewrite = false;
+ private ForwardingMode forwardingMode = ForwardingMode.BUNGEECORD_LEGACY; + private ForwardingMode forwardingMode = ForwardingMode.BUNGEECORD_LEGACY;
+ private byte[] forwardingSecret = Util.randomAlphanumericSequence(12); + private byte[] forwardingSecret = Util.randomAlphanumericSequence(12);
+
+ private static final Logger logger = LogManager.getLogger(WaterfallConfiguration.class);
+ +
@Override @Override
public void load() { public void load() {
super.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); disableModernTabLimiter = config.getBoolean("disable_modern_tab_limiter", disableModernTabLimiter);
disableEntityMetadataRewrite = config.getBoolean("disable_entity_metadata_rewrite", disableEntityMetadataRewrite); disableEntityMetadataRewrite = config.getBoolean("disable_entity_metadata_rewrite", disableEntityMetadataRewrite);
disableTabListRewrite = config.getBoolean("disable_tab_list_rewrite", disableTabListRewrite); disableTabListRewrite = config.getBoolean("disable_tab_list_rewrite", disableTabListRewrite);
+ forwardingMode = ForwardingMode.valueOf(config.getString("forwarding_mode", ForwardingMode.BUNGEECORD_LEGACY.toString()).toUpperCase()); + forwardingMode = ForwardingMode.valueOf(config.getString("forwarding_mode", ForwardingMode.BUNGEECORD_LEGACY.toString()).toUpperCase());
+ + Logger logger = BungeeCord.getInstance().getLogger();
+ if(super.isIpForward()) { + if(super.isIpForward()) {
+ switch(forwardingMode) { + switch(forwardingMode) {
+ case BUNGEECORD_LEGACY: + case BUNGEECORD_LEGACY:
+ logger.info("Forwarding mode is set to Bungeecord/Legacy forwarding."); + 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."); + "It is recommended to use another forwarding method to mitigate information spoofing attacks.");
+ break; + break;
+ case BUNGEEGUARD: + case BUNGEEGUARD:
+ logger.info("Forwarding mode is set to BungeeGuard forwarding."); + logger.info("Forwarding mode is set to BungeeGuard forwarding. " +
+ logger.info("Please ensure all connected servers make use of BungeeGuard for optimal security."); + "Please ensure all connected servers make use of BungeeGuard for optimal security.");
+ break; + break;
+ case VELOCITY_MODERN: + case VELOCITY_MODERN:
+ logger.info("Forwarding mode is set to Modern/Velocity forwarding."); + 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."); + "If you need to use versions older than 1.13 please use another forwarding type.");
+ break; + break;
+ } + }
+ } else { + } else {
+ logger.warn("Information forwarding (ip-forwarding) is disabled. "); + logger.warning("Information forwarding (ip-forwarding) is disabled. " +
+ logger.warn("Player UUIDs may not be consistent across the servers."); + "Player UUIDs may not be consistent across the servers. " +
+ logger.warn("For the best experience enable ip_forward in the config.yml."); + "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()) { + if(config.getString("forwarding_secret", "").isEmpty()) {
+ config.regenerateForwardingSecret(); + config.regenerateForwardingSecret();
+ logger.info("A new forwarding secret has been generated. If this was the"); + logger.warning("A new forwarding secret has been generated. If this was the " +
+ logger.info("first start of the proxy please configure forwarding for your network."); + "first start of the proxy please configure forwarding for your network.");
+ } + }
+ forwardingSecret = config.getString("forwarding_secret", "").getBytes(StandardCharsets.UTF_8); + forwardingSecret = config.getString("forwarding_secret", "").getBytes(StandardCharsets.UTF_8);
} }
@Override @Override
@@ -94,4 +133,13 @@ public class WaterfallConfiguration extends Configuration { @@ -94,4 +132,13 @@ public class WaterfallConfiguration extends Configuration {
public boolean isDisableTabListRewrite() { public boolean isDisableTabListRewrite() {
return disableTabListRewrite; return disableTabListRewrite;
} }