mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-24 01:19:25 +00:00
Set enforce secure chat to true in login packet to remove popup when disabled the chat signature.
182 lines
12 KiB
Diff
182 lines
12 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: etil2jz <81570777+etil2jz@users.noreply.github.com>
|
|
Date: Tue, 2 Aug 2022 14:48:12 +0200
|
|
Subject: [PATCH] Mirai: Configurable chat message signatures
|
|
|
|
Fixed & Updated by Dreeam-qwq
|
|
Original license: GPLv3
|
|
Original project: https://github.com/Dreeam-qwq/Mirai
|
|
|
|
Original license: GPLv3
|
|
Original project: https://github.com/etil2jz/Mirai
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
index f962e82e2c70f328a23dc99193d072f8dd7ad949..8ec7cb984ef4c45a14292388c0268bcc0bc74ddf 100644
|
|
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
@@ -319,7 +319,7 @@ public final class ChatProcessor {
|
|
|
|
private void sendToServer(final ChatType.Bound chatType, final @Nullable Function<Audience, net.minecraft.network.chat.Component> msgFunction) {
|
|
final PlayerChatMessage toConsoleMessage = msgFunction == null ? ChatProcessor.this.message : ChatProcessor.this.message.withUnsignedContent(msgFunction.apply(ChatProcessor.this.server.console));
|
|
- ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker || ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure"); // Gale - do not log Not Secure marker
|
|
+ ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled || !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker || ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure"); // Gale - do not log Not Secure marker // Leaf - Mirai - Configurable chat message signatures
|
|
}
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundLoginPacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundLoginPacket.java
|
|
index 667d1da3b6332737d7382d383bf15b53bd726442..f37ee137a40df4e9d7c0d8c76bb0ddc65f11a7fd 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundLoginPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundLoginPacket.java
|
|
@@ -55,7 +55,7 @@ public record ClientboundLoginPacket(
|
|
buf.writeBoolean(this.showDeathScreen);
|
|
buf.writeBoolean(this.doLimitedCrafting);
|
|
this.commonPlayerSpawnInfo.write(buf);
|
|
- buf.writeBoolean(this.enforcesSecureChat);
|
|
+ buf.writeBoolean(!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled || this.enforcesSecureChat); // Leaf - Mirai - Configurable chat message signatures
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
index 07df3299f1d1aa5506e1f6f146347d53e0278d9c..62d5fb8b89cbcd4e7c1d1d920e12ff36ee5435f3 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
@@ -23,7 +23,7 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
|
|
buf.writeUtf(this.message, 256);
|
|
buf.writeInstant(this.timeStamp);
|
|
buf.writeLong(this.salt);
|
|
- buf.writeNullable(this.signature, MessageSignature::write);
|
|
+ if (org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) buf.writeNullable(this.signature, MessageSignature::write); // Leaf - Mirai - Configurable chat message signatures
|
|
this.lastSeenMessages.write(buf);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
index 50dc68a005490415b88780397ef6c26859596dd5..162115048cffc824376e54b7f60ae071719afb57 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
@@ -22,8 +22,11 @@ public record ServerStatus(
|
|
Optional<ServerStatus.Favicon> favicon,
|
|
boolean enforcesSecureChat
|
|
) {
|
|
+ // Leaf start - Mirai - Configurable chat message signatures
|
|
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
|
|
- instance -> instance.group(
|
|
+ instance ->
|
|
+ org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled
|
|
+ ? instance.group(
|
|
ComponentSerialization.CODEC.lenientOptionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
|
ServerStatus.Players.CODEC.lenientOptionalFieldOf("players").forGetter(ServerStatus::players),
|
|
ServerStatus.Version.CODEC.lenientOptionalFieldOf("version").forGetter(ServerStatus::version),
|
|
@@ -31,7 +34,16 @@ public record ServerStatus(
|
|
Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat)
|
|
)
|
|
.apply(instance, ServerStatus::new)
|
|
+ : instance.group(
|
|
+ ComponentSerialization.CODEC.lenientOptionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
|
+ ServerStatus.Players.CODEC.lenientOptionalFieldOf("players").forGetter(ServerStatus::players),
|
|
+ ServerStatus.Version.CODEC.lenientOptionalFieldOf("version").forGetter(ServerStatus::version),
|
|
+ ServerStatus.Favicon.CODEC.lenientOptionalFieldOf("favicon").forGetter(ServerStatus::favicon),
|
|
+ Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(x -> true)
|
|
+ )
|
|
+ .apply(instance, ServerStatus::new)
|
|
);
|
|
+ // Leaf end- Mirai - Configurable chat message signatures
|
|
|
|
public static record Favicon(byte[] iconBytes) {
|
|
private static final String PREFIX = "data:image/png;base64,";
|
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
index 0e6d92f450613b1c617ecf723d44d17743f521e2..af820999e45aba5f62b9a89bf3753ea0556647f8 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -711,6 +711,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
|
|
@Override
|
|
public boolean enforceSecureProfile() {
|
|
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) return false; // Leaf - Mirai - Configurable chat message signatures
|
|
DedicatedServerProperties dedicatedserverproperties = this.getProperties();
|
|
|
|
// Paper start - Add setting for proxy online mode status
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
|
index 648a342c309c12dedf7d70b88163f80fb72150cf..b8b2914543f4bfe71a9734e3d848fba0acd707fc 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
|
@@ -342,10 +342,29 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
|
}
|
|
|
|
public void send(Packet<?> packet) {
|
|
+ // Leaf start - Mirai - Configurable chat message signatures
|
|
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) {
|
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) {
|
|
+ packet = new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(
|
|
+ chat.chatType().decorate(chat.unsignedContent() != null ? chat.unsignedContent() : Component.literal(chat.body().content())), false);
|
|
+
|
|
+ this.send(packet);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // Leaf end - Mirai - Configurable chat message signatures
|
|
this.send(packet, (PacketSendListener) null);
|
|
}
|
|
|
|
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
|
|
+ // Leaf start - Mirai - Configurable chat message signatures
|
|
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) {
|
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) {
|
|
+ this.send(chat);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // Leaf end - Mirai - Configurable chat message signatures
|
|
// CraftBukkit start
|
|
if (packet == null || this.processedDisconnect) { // Spigot
|
|
return;
|
|
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
index 5d81f06c981128e4199555c1378345dccf4682b2..4ec44f3b5f58f8e21fe5224167e1178fb55770f8 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -1641,7 +1641,7 @@ public abstract class PlayerList {
|
|
// Paper end
|
|
boolean flag = this.verifyChatTrusted(message);
|
|
|
|
- this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, flag || !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker ? null : "Not Secure"); // Paper // Gale - do not log Not Secure marker
|
|
+ this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled || flag || !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker ? null : "Not Secure"); // Paper // Gale - do not log Not Secure marker // Leaf - Mirai - Configurable chat message signatures
|
|
OutgoingChatMessage outgoingchatmessage = OutgoingChatMessage.create(message);
|
|
boolean flag1 = false;
|
|
|
|
@@ -1670,6 +1670,7 @@ public abstract class PlayerList {
|
|
}
|
|
|
|
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
|
|
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) return true; // Leaf - Mirai - Configurable chat message signatures
|
|
return message.hasSignature() && !message.hasExpiredServer(Instant.now());
|
|
}
|
|
|
|
diff --git a/src/main/java/org/dreeam/leaf/config/modules/network/ChatMessageSignature.java b/src/main/java/org/dreeam/leaf/config/modules/network/ChatMessageSignature.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..b3050d65ec5cc86e497e698e4a70f03ae27f175b
|
|
--- /dev/null
|
|
+++ b/src/main/java/org/dreeam/leaf/config/modules/network/ChatMessageSignature.java
|
|
@@ -0,0 +1,23 @@
|
|
+package org.dreeam.leaf.config.modules.network;
|
|
+
|
|
+import org.dreeam.leaf.config.ConfigModules;
|
|
+import org.dreeam.leaf.config.EnumConfigCategory;
|
|
+
|
|
+public class ChatMessageSignature extends ConfigModules {
|
|
+
|
|
+ public String getBasePath() {
|
|
+ return EnumConfigCategory.NETWORK.getBaseKeyName();
|
|
+ }
|
|
+
|
|
+ public static boolean enabled = true;
|
|
+
|
|
+ @Override
|
|
+ public void onLoaded() {
|
|
+ enabled = config.getBoolean(getBasePath() + ".chat-message-signature", enabled, """
|
|
+ Whether or not enable chat message signature,
|
|
+ disable will prevent players to report chat messages.
|
|
+ And also disables the popup when joining a server without
|
|
+ 'secure chat', such as offline-mode servers.
|
|
+ """);
|
|
+ }
|
|
+}
|