From 29fcce7ec842ea92bd306e1a6d6603c7f8dfe748 Mon Sep 17 00:00:00 2001 From: Camotoy <20743703+Camotoy@users.noreply.github.com> Date: Thu, 25 Aug 2022 16:10:43 -0400 Subject: [PATCH] Add option to not log player IP addresses Resolves #3246 --- .../geysermc/geyser/configuration/GeyserConfiguration.java | 2 ++ .../geyser/configuration/GeyserJacksonConfiguration.java | 3 +++ .../geyser/network/ConnectorServerEventHandler.java | 6 ++++-- .../java/org/geysermc/geyser/session/GeyserSession.java | 3 +-- core/src/main/resources/config.yml | 3 +++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/geysermc/geyser/configuration/GeyserConfiguration.java b/core/src/main/java/org/geysermc/geyser/configuration/GeyserConfiguration.java index f605ad103..4d9b3f2a4 100644 --- a/core/src/main/java/org/geysermc/geyser/configuration/GeyserConfiguration.java +++ b/core/src/main/java/org/geysermc/geyser/configuration/GeyserConfiguration.java @@ -105,6 +105,8 @@ public interface GeyserConfiguration { int getCustomSkullRenderDistance(); + boolean isLogPlayerIpAddresses(); + boolean isNotifyOnNewBedrockUpdate(); IMetricsInfo getMetrics(); diff --git a/core/src/main/java/org/geysermc/geyser/configuration/GeyserJacksonConfiguration.java b/core/src/main/java/org/geysermc/geyser/configuration/GeyserJacksonConfiguration.java index 80fa22ede..b93b9a6a0 100644 --- a/core/src/main/java/org/geysermc/geyser/configuration/GeyserJacksonConfiguration.java +++ b/core/src/main/java/org/geysermc/geyser/configuration/GeyserJacksonConfiguration.java @@ -148,6 +148,9 @@ public abstract class GeyserJacksonConfiguration implements GeyserConfiguration @JsonProperty("xbox-achievements-enabled") private boolean xboxAchievementsEnabled = false; + @JsonProperty("log-player-ip-addresses") + private boolean logPlayerIpAddresses = true; + @JsonProperty("notify-on-new-bedrock-update") private boolean notifyOnNewBedrockUpdate = true; diff --git a/core/src/main/java/org/geysermc/geyser/network/ConnectorServerEventHandler.java b/core/src/main/java/org/geysermc/geyser/network/ConnectorServerEventHandler.java index d41871cdb..1c6f9db88 100644 --- a/core/src/main/java/org/geysermc/geyser/network/ConnectorServerEventHandler.java +++ b/core/src/main/java/org/geysermc/geyser/network/ConnectorServerEventHandler.java @@ -84,14 +84,16 @@ public class ConnectorServerEventHandler implements BedrockServerEventHandler { } } - geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.attempt_connect", inetSocketAddress)); + String ip = geyser.getConfig().isLogPlayerIpAddresses() ? inetSocketAddress.toString() : ""; + geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.attempt_connect", ip)); return true; } @Override public BedrockPong onQuery(InetSocketAddress inetSocketAddress) { if (geyser.getConfig().isDebugMode() && PRINT_DEBUG_PINGS) { - geyser.getLogger().debug(GeyserLocale.getLocaleStringLog("geyser.network.pinged", inetSocketAddress)); + String ip = geyser.getConfig().isLogPlayerIpAddresses() ? inetSocketAddress.toString() : ""; + geyser.getLogger().debug(GeyserLocale.getLocaleStringLog("geyser.network.pinged", ip)); } GeyserConfiguration config = geyser.getConfig(); diff --git a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java index f7c990ac3..4e00294a8 100644 --- a/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java +++ b/core/src/main/java/org/geysermc/geyser/session/GeyserSession.java @@ -135,7 +135,6 @@ import org.geysermc.geyser.util.MathUtils; import javax.annotation.Nonnull; import java.net.ConnectException; -import java.net.InetAddress; import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.time.Instant; @@ -1045,7 +1044,7 @@ public class GeyserSession implements GeyserConnection, CommandSender { } else { // Downstream's disconnect will fire an event that prints a log message // Otherwise, we print a message here - InetAddress address = upstream.getAddress().getAddress(); + String address = geyser.getConfig().isLogPlayerIpAddresses() ? upstream.getAddress().getAddress().toString() : ""; geyser.getLogger().info(GeyserLocale.getLocaleStringLog("geyser.network.disconnect", address, reason)); } if (!upstream.isClosed()) { diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index 5a32a6599..d5b9c755f 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -175,6 +175,9 @@ force-resource-packs: true # THIS DISABLES ALL COMMANDS FROM SUCCESSFULLY RUNNING FOR BEDROCK IN-GAME, as otherwise Bedrock thinks you are cheating. xbox-achievements-enabled: false +# Whether player IP addresses will be logged by the server. +log-player-ip-addresses: true + # Whether to alert the console and operators that a new Geyser version is available that supports a Bedrock version # that this Geyser version does not support. It's recommended to keep this option enabled, as many Bedrock platforms # auto-update.