From f9f990c9156a3f2ad7fd81bdb85aa2509cc3cae4 Mon Sep 17 00:00:00 2001 From: kyngs Date: Mon, 21 Aug 2023 15:53:07 +0200 Subject: [PATCH 1/3] Expose player info forwarding in the API ( Fix #1063 ) --- .../api}/proxy/config/PlayerInfoForwarding.java | 2 +- .../api/proxy/config/ProxyConfig.java | 14 ++++++++++++++ .../proxy/config/VelocityConfiguration.java | 3 +++ .../proxy/connection/ConnectionType.java | 2 +- .../connection/backend/LoginSessionHandler.java | 2 +- .../backend/VelocityServerConnection.java | 2 +- .../connection/client/AuthSessionHandler.java | 2 +- .../connection/client/HandshakeSessionHandler.java | 2 +- .../forge/legacy/LegacyForgeConnectionType.java | 2 +- .../proxy/connection/util/ConnectionTypeImpl.java | 2 +- 10 files changed, 25 insertions(+), 8 deletions(-) rename {proxy/src/main/java/com/velocitypowered => api/src/main/java/com/velocitypowered/api}/proxy/config/PlayerInfoForwarding.java (94%) diff --git a/proxy/src/main/java/com/velocitypowered/proxy/config/PlayerInfoForwarding.java b/api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java similarity index 94% rename from proxy/src/main/java/com/velocitypowered/proxy/config/PlayerInfoForwarding.java rename to api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java index 58ee44a78b..060bd0e5f2 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/config/PlayerInfoForwarding.java +++ b/api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java @@ -15,7 +15,7 @@ * along with this program. If not, see . */ -package com.velocitypowered.proxy.config; +package com.velocitypowered.api.proxy.config; /** * Supported player info forwarding methods. diff --git a/api/src/main/java/com/velocitypowered/api/proxy/config/ProxyConfig.java b/api/src/main/java/com/velocitypowered/api/proxy/config/ProxyConfig.java index 831e55af20..7496774140 100644 --- a/api/src/main/java/com/velocitypowered/api/proxy/config/ProxyConfig.java +++ b/api/src/main/java/com/velocitypowered/api/proxy/config/ProxyConfig.java @@ -77,6 +77,20 @@ public interface ProxyConfig { */ boolean shouldPreventClientProxyConnections(); + /** + * Retrieves the current player information forwarding mode. + * + * @return the player information forwarding mode + */ + PlayerInfoForwarding getPlayerInfoForwardingMode(); + + /** + * Retrieves the forwarding secret used for player information forwarding. + * + * @return the forwarding secret as a byte array + */ + byte[] getForwardingSecret(); + /** * Get a Map of all servers registered in velocity.toml. This method does * not return all the servers currently in memory, although in most cases it diff --git a/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java b/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java index 3afd9fc107..272d855339 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/config/VelocityConfiguration.java @@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.gson.annotations.Expose; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.api.proxy.config.ProxyConfig; import com.velocitypowered.api.util.Favicon; import com.velocitypowered.proxy.util.AddressUtil; @@ -290,10 +291,12 @@ public boolean shouldPreventClientProxyConnections() { return preventClientProxyConnections; } + @Override public PlayerInfoForwarding getPlayerInfoForwardingMode() { return playerInfoForwardingMode; } + @Override public byte[] getForwardingSecret() { return forwardingSecret.clone(); } diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java index 5675d1f579..16ff79f966 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java @@ -18,7 +18,7 @@ package com.velocitypowered.proxy.connection; import com.velocitypowered.api.util.GameProfile; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.connection.backend.BackendConnectionPhase; import com.velocitypowered.proxy.connection.client.ClientConnectionPhase; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java index 90a9a1300b..567bfe0a46 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java @@ -22,7 +22,7 @@ import com.velocitypowered.api.proxy.crypto.IdentifiedKey; import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.config.VelocityConfiguration; import com.velocitypowered.proxy.connection.MinecraftConnection; import com.velocitypowered.proxy.connection.MinecraftSessionHandler; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java index a2300b9780..ddab3a2b58 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java @@ -30,7 +30,7 @@ import com.velocitypowered.api.proxy.server.ServerInfo; import com.velocitypowered.api.util.GameProfile.Property; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.connection.ConnectionTypes; import com.velocitypowered.proxy.connection.MinecraftConnection; import com.velocitypowered.proxy.connection.MinecraftConnectionAssociation; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java index f68d3bb595..f4d03a7b7a 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java @@ -32,7 +32,7 @@ import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.api.util.UuidUtils; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.config.VelocityConfiguration; import com.velocitypowered.proxy.connection.MinecraftConnection; import com.velocitypowered.proxy.connection.MinecraftSessionHandler; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java index e814efaa35..a32a0efa3b 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java @@ -22,7 +22,7 @@ import com.velocitypowered.api.event.connection.ConnectionHandshakeEvent; import com.velocitypowered.api.network.ProtocolVersion; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.connection.ConnectionType; import com.velocitypowered.proxy.connection.ConnectionTypes; import com.velocitypowered.proxy.connection.MinecraftConnection; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java index 45d19844e5..fd18a18863 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java @@ -18,7 +18,7 @@ package com.velocitypowered.proxy.connection.forge.legacy; import com.velocitypowered.api.util.GameProfile; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.connection.ConnectionTypes; import com.velocitypowered.proxy.connection.util.ConnectionTypeImpl; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java index 9e421c5371..654295794a 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java @@ -18,7 +18,7 @@ package com.velocitypowered.proxy.connection.util; import com.velocitypowered.api.util.GameProfile; -import com.velocitypowered.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.connection.ConnectionType; import com.velocitypowered.proxy.connection.backend.BackendConnectionPhase; import com.velocitypowered.proxy.connection.client.ClientConnectionPhase; From edf34fc9d8e2d1c276952732a25352aa05bd4394 Mon Sep 17 00:00:00 2001 From: kyngs Date: Mon, 21 Aug 2023 16:00:16 +0200 Subject: [PATCH 2/3] Fix license header --- .../api/proxy/config/PlayerInfoForwarding.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java b/api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java index 060bd0e5f2..86b6a8c073 100644 --- a/api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java +++ b/api/src/main/java/com/velocitypowered/api/proxy/config/PlayerInfoForwarding.java @@ -1,18 +1,8 @@ /* * Copyright (C) 2018-2023 Velocity Contributors * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * The Velocity API is licensed under the terms of the MIT License. For more details, + * reference the LICENSE file in the api top-level directory. */ package com.velocitypowered.api.proxy.config; From 6bb8fa85e20d0d7eae7e6e49c9f85f20b53632c2 Mon Sep 17 00:00:00 2001 From: kyngs Date: Mon, 21 Aug 2023 16:16:10 +0200 Subject: [PATCH 3/3] Make checkstyle happy about imports --- .../com/velocitypowered/proxy/connection/ConnectionType.java | 2 +- .../proxy/connection/backend/LoginSessionHandler.java | 2 +- .../proxy/connection/backend/VelocityServerConnection.java | 2 +- .../proxy/connection/client/AuthSessionHandler.java | 2 +- .../proxy/connection/client/HandshakeSessionHandler.java | 2 +- .../connection/forge/legacy/LegacyForgeConnectionType.java | 2 +- .../proxy/connection/util/ConnectionTypeImpl.java | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java index 16ff79f966..11cd5f4ce0 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/ConnectionType.java @@ -17,8 +17,8 @@ package com.velocitypowered.proxy.connection; -import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.proxy.connection.backend.BackendConnectionPhase; import com.velocitypowered.proxy.connection.client.ClientConnectionPhase; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java index 567bfe0a46..f77ad75311 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/LoginSessionHandler.java @@ -19,10 +19,10 @@ import com.velocitypowered.api.event.player.ServerLoginPluginMessageEvent; import com.velocitypowered.api.network.ProtocolVersion; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.api.proxy.crypto.IdentifiedKey; import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.config.VelocityConfiguration; import com.velocitypowered.proxy.connection.MinecraftConnection; import com.velocitypowered.proxy.connection.MinecraftSessionHandler; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java index ddab3a2b58..d7ea10d669 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/backend/VelocityServerConnection.java @@ -25,12 +25,12 @@ import com.google.common.collect.ImmutableList; import com.velocitypowered.api.network.ProtocolVersion; import com.velocitypowered.api.proxy.ServerConnection; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.api.proxy.messages.ChannelIdentifier; import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.ServerInfo; import com.velocitypowered.api.util.GameProfile.Property; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.connection.ConnectionTypes; import com.velocitypowered.proxy.connection.MinecraftConnection; import com.velocitypowered.proxy.connection.MinecraftConnectionAssociation; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java index f4d03a7b7a..534df50794 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/AuthSessionHandler.java @@ -27,12 +27,12 @@ import com.velocitypowered.api.event.player.GameProfileRequestEvent; import com.velocitypowered.api.event.player.PlayerChooseInitialServerEvent; import com.velocitypowered.api.permission.PermissionFunction; +import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.api.proxy.crypto.IdentifiedKey; import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.api.util.UuidUtils; import com.velocitypowered.proxy.VelocityServer; -import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; import com.velocitypowered.proxy.config.VelocityConfiguration; import com.velocitypowered.proxy.connection.MinecraftConnection; import com.velocitypowered.proxy.connection.MinecraftSessionHandler; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java index a32a0efa3b..810be5076f 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/HandshakeSessionHandler.java @@ -21,8 +21,8 @@ import com.google.common.base.Preconditions; import com.velocitypowered.api.event.connection.ConnectionHandshakeEvent; import com.velocitypowered.api.network.ProtocolVersion; -import com.velocitypowered.proxy.VelocityServer; import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.proxy.VelocityServer; import com.velocitypowered.proxy.connection.ConnectionType; import com.velocitypowered.proxy.connection.ConnectionTypes; import com.velocitypowered.proxy.connection.MinecraftConnection; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java index fd18a18863..4c89966b23 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/forge/legacy/LegacyForgeConnectionType.java @@ -17,8 +17,8 @@ package com.velocitypowered.proxy.connection.forge.legacy; -import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.proxy.connection.ConnectionTypes; import com.velocitypowered.proxy.connection.util.ConnectionTypeImpl; diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java index 654295794a..31ffd51f37 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/util/ConnectionTypeImpl.java @@ -17,8 +17,8 @@ package com.velocitypowered.proxy.connection.util; -import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.api.proxy.config.PlayerInfoForwarding; +import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.proxy.connection.ConnectionType; import com.velocitypowered.proxy.connection.backend.BackendConnectionPhase; import com.velocitypowered.proxy.connection.client.ClientConnectionPhase;