Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,4 @@ public interface BackendServerConfig {

ServerInfoForwardingMode getForwardingMode();

/**
* Set the address of the backend server.
*/
void setAddress(String address);

/**
* Set the forwarding mode of the backend server.
*/
void setForwardingMode(ServerInfoForwardingMode forwardingMode);

}
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,12 @@ public interface ProxyConfig {
/**
* Get a Map of all servers registered in <code>velocity.toml</code>. This method does
* <strong>not</strong> return all the servers currently in memory, although in most cases it
* does. For a view of all registered servers, see {@link ProxyServer#getAllServers()}.
* does. For a view of all registered servers, see {@link ProxyServer#getAllServers()}.<br><br>
* <b>DEPRECATED:</b> use getBackendServers() instead.
*
* @return registered servers map
*/
@Deprecated(forRemoval = true)
Map<String, String> getServers();

/**
Expand Down
26 changes: 16 additions & 10 deletions proxy/src/main/java/com/velocitypowered/proxy/ProxyOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,21 +106,27 @@ private static class ServerInfoConverter implements ValueConverter<ServerInfo> {

@Override
public ServerInfo convert(String s) {
String[] split = s.split(":", 3);
if (split.length < 3) {
throw new ValueConversionException("Invalid server format. Use <name>:<address>:<forwardingmode>");
String[] split = s.split(":", 4);
if (split.length < 2) {
throw new ValueConversionException("Invalid server format. Use <name>:<host>:[port]:[forwardingmode]");
}
InetSocketAddress address;
ServerInfoForwardingMode mode;
ServerInfoForwardingMode mode = ServerInfoForwardingMode.FOLLOWUP;
try {
address = AddressUtil.parseAddress(split[1]);
if (split.length >= 3) {
address = AddressUtil.parseAddress(split[1] + ":" + split[2]);
} else {
address = AddressUtil.parseAddress(split[1]);
}
} catch (IllegalStateException e) {
throw new ValueConversionException("Invalid hostname for server flag with name: " + split[0]);
}
try {
mode = ServerInfoForwardingMode.valueOf(split[2]);
} catch (IllegalStateException e) {
throw new ValueConversionException("Invalid forwarding mode for server flag with name: " + split[0]);
if (split.length == 4) {
try {
mode = ServerInfoForwardingMode.valueOf(split[3].toUpperCase());
} catch (IllegalStateException e) {
throw new ValueConversionException("Invalid forwarding mode for server flag with name: " + split[0]);
}
}
return new ServerInfo(split[0], address, mode);
}
Expand All @@ -132,7 +138,7 @@ public Class<? extends ServerInfo> valueType() {

@Override
public String valuePattern() {
return "name>:<address";
return "name>:<host>:[port]:[forwardingmode]";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ public class BackendServerConfigImpl implements BackendServerConfig {
/**
* The address of the backend server.
*/
private String address;
private final String address;

/**
* The forwarding mode of the backend server.
*/
private ServerInfoForwardingMode forwardingMode;
private final ServerInfoForwardingMode forwardingMode;

/**
* Creates a new backend server configuration instance representing
Expand Down Expand Up @@ -73,16 +73,6 @@ public ServerInfoForwardingMode getForwardingMode() {
return forwardingMode;
}

public void setAddress(String address) {
requireNonNull(address, "address");
this.address = address;
}

public void setForwardingMode(ServerInfoForwardingMode forwardingMode) {
requireNonNull(forwardingMode, "forwardingMode");
this.forwardingMode = forwardingMode;
}

@Override
public boolean equals(Object o) {
if (!(o instanceof BackendServerConfigImpl that)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import com.velocitypowered.proxy.protocol.packet.LoginPluginResponsePacket;
import com.velocitypowered.proxy.protocol.packet.ServerLoginSuccessPacket;
import com.velocitypowered.proxy.protocol.packet.SetCompressionPacket;
import com.velocitypowered.proxy.util.ServerForwardingModeUtil;
import com.velocitypowered.proxy.util.except.QuietRuntimeException;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
Expand Down Expand Up @@ -86,10 +85,7 @@ public boolean handle(LoginPluginMessagePacket packet) {
VelocityConfiguration configuration = server.getConfiguration();

PlayerInfoForwarding forwardingMode =
ServerForwardingModeUtil.toPlayerInfoForwarding(
server.getConfiguration(),
serverConn.getServerInfo().getServerInfoForwardingMode()
);
serverConn.getServer().getConfiguredPlayerInfoForwarding();

if (forwardingMode == PlayerInfoForwarding.MODERN
&& packet.getChannel().equals(PlayerDataForwarding.CHANNEL)) {
Expand Down Expand Up @@ -151,11 +147,7 @@ public boolean handle(SetCompressionPacket packet) {

@Override
public boolean handle(ServerLoginSuccessPacket packet) {
PlayerInfoForwarding forwardingMode =
ServerForwardingModeUtil.toPlayerInfoForwarding(
server.getConfiguration(),
serverConn.getServerInfo().getServerInfoForwardingMode()
);
PlayerInfoForwarding forwardingMode = serverConn.getServer().getConfiguredPlayerInfoForwarding();

if (forwardingMode == PlayerInfoForwarding.MODERN && !informationForwarded) {
resultFuture.complete(ConnectionRequestResults.forDisconnect(MODERN_IP_FORWARDING_FAILURE, serverConn.getServer()));
Expand Down Expand Up @@ -216,11 +208,7 @@ public void exception(Throwable throwable) {

@Override
public void disconnected() {
PlayerInfoForwarding forwardingMode =
ServerForwardingModeUtil.toPlayerInfoForwarding(
server.getConfiguration(),
serverConn.getServerInfo().getServerInfoForwardingMode()
);
PlayerInfoForwarding forwardingMode = serverConn.getServer().getConfiguredPlayerInfoForwarding();

if (forwardingMode == PlayerInfoForwarding.LEGACY) {
resultFuture.completeExceptionally(new QuietRuntimeException(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@
import com.velocitypowered.proxy.protocol.packet.ServerLoginPacket;
import com.velocitypowered.proxy.protocol.util.ByteBufDataOutput;
import com.velocitypowered.proxy.server.VelocityRegisteredServer;
import com.velocitypowered.proxy.util.ServerForwardingModeUtil;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFutureListener;
Expand Down Expand Up @@ -162,11 +161,7 @@ private String createBungeeGuardForwardingAddress(byte[] forwardingSecret) {
private void startHandshake() {
final MinecraftConnection mc = ensureConnected();

PlayerInfoForwarding forwardingMode =
ServerForwardingModeUtil.toPlayerInfoForwarding(
server.getConfiguration(),
registeredServer.getServerInfo().getServerInfoForwardingMode()
);
PlayerInfoForwarding forwardingMode = registeredServer.getConfiguredPlayerInfoForwarding();

// Initiate the handshake.
ProtocolVersion protocolVersion = proxyPlayer.getConnection().getProtocolVersion();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import com.velocitypowered.api.proxy.server.ServerInfo;
import com.velocitypowered.api.proxy.server.ServerPing;
import com.velocitypowered.proxy.VelocityServer;
import com.velocitypowered.proxy.config.PlayerInfoForwarding;
import com.velocitypowered.proxy.connection.MinecraftConnection;
import com.velocitypowered.proxy.connection.backend.VelocityServerConnection;
import com.velocitypowered.proxy.connection.client.ConnectedPlayer;
Expand Down Expand Up @@ -90,6 +91,21 @@ public ServerInfo getServerInfo() {
return serverInfo;
}

/**
* Converts server info forward mode to Player info forwarding.
*
* @return player info forwarding
*/
public PlayerInfoForwarding getConfiguredPlayerInfoForwarding() {
return switch (serverInfo.getServerInfoForwardingMode()) {
case FOLLOWUP -> server.getConfiguration().getPlayerInfoForwardingMode();
case LEGACY -> PlayerInfoForwarding.LEGACY;
case MODERN -> PlayerInfoForwarding.MODERN;
case BUNGEEGUARD -> PlayerInfoForwarding.BUNGEEGUARD;
case NONE -> PlayerInfoForwarding.NONE;
};
}

@Override
public Collection<Player> getPlayersConnected() {
return ImmutableList.copyOf(players.values());
Expand Down

This file was deleted.