Fixed connection issue when pinging beta servers too fast

This commit is contained in:
RaphiMC 2024-03-30 22:09:56 +01:00
parent 80816603ed
commit d35790e89c
No known key found for this signature in database
GPG Key ID: 0F6BB0657A03AC94
6 changed files with 24 additions and 0 deletions

View File

@ -48,6 +48,7 @@ public class Options {
public static Account MC_ACCOUNT; public static Account MC_ACCOUNT;
public static URI PROXY_URL; // Example: type://address:port or type://username:password@address:port public static URI PROXY_URL; // Example: type://address:port or type://username:password@address:port
public static boolean IGNORE_PACKET_TRANSLATION_ERRORS; public static boolean IGNORE_PACKET_TRANSLATION_ERRORS;
public static boolean ALLOW_BETA_PINGING;
// GUI only config options // GUI only config options
public static String CLASSIC_MP_PASS; public static String CLASSIC_MP_PASS;
@ -81,6 +82,7 @@ public class Options {
final OptionSpec<Void> serverHaProxyProtocol = parser.acceptsAll(asList("server-haproxy-protocol", "server-haproxy"), "Send HAProxy protocol messages to the backend server"); final OptionSpec<Void> serverHaProxyProtocol = parser.acceptsAll(asList("server-haproxy-protocol", "server-haproxy"), "Send HAProxy protocol messages to the backend server");
final OptionSpec<Void> legacyClientPassthrough = parser.acceptsAll(asList("legacy_client_passthrough", "legacy_passthrough"), "Allow <= 1.6.4 clients to connect to the backend server (No protocol translation)"); final OptionSpec<Void> legacyClientPassthrough = parser.acceptsAll(asList("legacy_client_passthrough", "legacy_passthrough"), "Allow <= 1.6.4 clients to connect to the backend server (No protocol translation)");
final OptionSpec<Void> ignorePacketTranslationErrors = parser.acceptsAll(List.of("ignore-packet-translation-errors"), "Enabling this will prevent getting disconnected from the server when a packet translation error occurs and instead only print the error in the console. This may cause issues depending on the type of packet which failed to translate"); final OptionSpec<Void> ignorePacketTranslationErrors = parser.acceptsAll(List.of("ignore-packet-translation-errors"), "Enabling this will prevent getting disconnected from the server when a packet translation error occurs and instead only print the error in the console. This may cause issues depending on the type of packet which failed to translate");
final OptionSpec<Void> allowBetaPinging = parser.acceptsAll(List.of("allow-beta-pinging"), "Enabling this will allow you to ping <= b1.7.3 servers. This may cause issues with servers that block too frequent connections");
ViaProxy.EVENT_MANAGER.call(new PreOptionsParseEvent(parser)); ViaProxy.EVENT_MANAGER.call(new PreOptionsParseEvent(parser));
final OptionSet options; final OptionSet options;
@ -137,6 +139,7 @@ public class Options {
SERVER_HAPROXY_PROTOCOL = options.has(serverHaProxyProtocol); SERVER_HAPROXY_PROTOCOL = options.has(serverHaProxyProtocol);
LEGACY_CLIENT_PASSTHROUGH = options.has(legacyClientPassthrough); LEGACY_CLIENT_PASSTHROUGH = options.has(legacyClientPassthrough);
IGNORE_PACKET_TRANSLATION_ERRORS = options.has(ignorePacketTranslationErrors); IGNORE_PACKET_TRANSLATION_ERRORS = options.has(ignorePacketTranslationErrors);
ALLOW_BETA_PINGING = options.has(allowBetaPinging);
ViaProxy.EVENT_MANAGER.call(new PostOptionsParseEvent(options)); ViaProxy.EVENT_MANAGER.call(new PostOptionsParseEvent(options));
} catch (OptionException e) { } catch (OptionException e) {
Logger.LOGGER.error("Error parsing options: " + e.getMessage()); Logger.LOGGER.error("Error parsing options: " + e.getMessage());

View File

@ -28,6 +28,7 @@ import net.raphimc.netminecraft.constants.IntendedState;
import net.raphimc.netminecraft.packet.IPacket; import net.raphimc.netminecraft.packet.IPacket;
import net.raphimc.netminecraft.packet.impl.handshake.C2SHandshakePacket; import net.raphimc.netminecraft.packet.impl.handshake.C2SHandshakePacket;
import net.raphimc.viabedrock.api.BedrockProtocolVersion; import net.raphimc.viabedrock.api.BedrockProtocolVersion;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import net.raphimc.viaproxy.ViaProxy; import net.raphimc.viaproxy.ViaProxy;
import net.raphimc.viaproxy.cli.options.Options; import net.raphimc.viaproxy.cli.options.Options;
import net.raphimc.viaproxy.plugins.events.ConnectEvent; import net.raphimc.viaproxy.plugins.events.ConnectEvent;
@ -158,6 +159,10 @@ public class Client2ProxyHandler extends SimpleChannelInboundHandler<IPacket> {
} }
} }
if (!Options.ALLOW_BETA_PINGING && serverVersion.olderThanOrEqualTo(LegacyProtocolVersion.b1_7tob1_7_3)) {
this.proxyConnection.kickClient("§7ViaProxy is working!\n§7Connect to join the configured server");
}
if (packet.intendedState.getConnectionState() == ConnectionState.LOGIN && TransferDataHolder.hasTempRedirect(this.proxyConnection.getC2P())) { if (packet.intendedState.getConnectionState() == ConnectionState.LOGIN && TransferDataHolder.hasTempRedirect(this.proxyConnection.getC2P())) {
serverAddress = TransferDataHolder.removeTempRedirect(this.proxyConnection.getC2P()); serverAddress = TransferDataHolder.removeTempRedirect(this.proxyConnection.getC2P());
} }

View File

@ -49,6 +49,7 @@ public class AdvancedTab extends AUITab {
JCheckBox legacySkinLoading; JCheckBox legacySkinLoading;
JCheckBox chatSigning; JCheckBox chatSigning;
JCheckBox ignorePacketTranslationErrors; JCheckBox ignorePacketTranslationErrors;
JCheckBox allowBetaPinging;
JButton viaVersionDumpButton; JButton viaVersionDumpButton;
JButton uploadLogsButton; JButton uploadLogsButton;
@ -115,6 +116,13 @@ public class AdvancedTab extends AUITab {
ViaProxy.getSaveManager().uiSave.loadCheckBox("ignore_packet_translation_errors", this.ignorePacketTranslationErrors); ViaProxy.getSaveManager().uiSave.loadCheckBox("ignore_packet_translation_errors", this.ignorePacketTranslationErrors);
GBC.create(body).grid(0, gridy++).insets(BODY_BLOCK_PADDING, BORDER_PADDING, 0, 0).anchor(GBC.NORTHWEST).add(this.ignorePacketTranslationErrors); GBC.create(body).grid(0, gridy++).insets(BODY_BLOCK_PADDING, BORDER_PADDING, 0, 0).anchor(GBC.NORTHWEST).add(this.ignorePacketTranslationErrors);
} }
{
this.allowBetaPinging = new JCheckBox(I18n.get("tab.advanced.allow_beta_pinging.label"));
this.allowBetaPinging.setToolTipText(I18n.get("tab.advanced.allow_beta_pinging.tooltip"));
this.allowBetaPinging.setSelected(false);
ViaProxy.getSaveManager().uiSave.loadCheckBox("allow_beta_pinging", this.allowBetaPinging);
GBC.create(body).grid(0, gridy++).insets(BODY_BLOCK_PADDING, BORDER_PADDING, 0, 0).anchor(GBC.NORTHWEST).add(this.allowBetaPinging);
}
parent.add(body, BorderLayout.NORTH); parent.add(body, BorderLayout.NORTH);
} }
@ -190,6 +198,7 @@ public class AdvancedTab extends AUITab {
save.put("legacy_skin_loading", String.valueOf(this.legacySkinLoading.isSelected())); save.put("legacy_skin_loading", String.valueOf(this.legacySkinLoading.isSelected()));
save.put("chat_signing", String.valueOf(this.chatSigning.isSelected())); save.put("chat_signing", String.valueOf(this.chatSigning.isSelected()));
save.put("ignore_packet_translation_errors", String.valueOf(this.ignorePacketTranslationErrors.isSelected())); save.put("ignore_packet_translation_errors", String.valueOf(this.ignorePacketTranslationErrors.isSelected()));
save.put("allow_beta_pinging", String.valueOf(this.allowBetaPinging.isSelected()));
ViaProxy.getSaveManager().save(); ViaProxy.getSaveManager().save();
} }

View File

@ -215,6 +215,7 @@ public class GeneralTab extends AUITab {
ViaProxy.getUI().advancedTab.legacySkinLoading.setEnabled(state); ViaProxy.getUI().advancedTab.legacySkinLoading.setEnabled(state);
ViaProxy.getUI().advancedTab.chatSigning.setEnabled(state); ViaProxy.getUI().advancedTab.chatSigning.setEnabled(state);
ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.setEnabled(state); ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.setEnabled(state);
ViaProxy.getUI().advancedTab.allowBetaPinging.setEnabled(state);
if (state) this.serverVersion.getActionListeners()[0].actionPerformed(null); if (state) this.serverVersion.getActionListeners()[0].actionPerformed(null);
} }
@ -258,6 +259,7 @@ public class GeneralTab extends AUITab {
final String proxyUrl = ViaProxy.getUI().advancedTab.proxy.getText().trim(); final String proxyUrl = ViaProxy.getUI().advancedTab.proxy.getText().trim();
final boolean chatSigning = ViaProxy.getUI().advancedTab.chatSigning.isSelected(); final boolean chatSigning = ViaProxy.getUI().advancedTab.chatSigning.isSelected();
final boolean ignorePacketTranslationErrors = ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.isSelected(); final boolean ignorePacketTranslationErrors = ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.isSelected();
final boolean allowBetaPinging = ViaProxy.getUI().advancedTab.allowBetaPinging.isSelected();
try { try {
try { try {
@ -295,6 +297,7 @@ public class GeneralTab extends AUITab {
Options.OPENAUTHMOD_AUTH = authMethod == 2; Options.OPENAUTHMOD_AUTH = authMethod == 2;
Options.CHAT_SIGNING = chatSigning; Options.CHAT_SIGNING = chatSigning;
Options.IGNORE_PACKET_TRANSLATION_ERRORS = ignorePacketTranslationErrors; Options.IGNORE_PACKET_TRANSLATION_ERRORS = ignorePacketTranslationErrors;
Options.ALLOW_BETA_PINGING = allowBetaPinging;
if (!proxyUrl.isEmpty()) { if (!proxyUrl.isEmpty()) {
try { try {

View File

@ -53,6 +53,8 @@ tab.advanced.chat_signing.label=Chat Signatur
tab.advanced.chat_signing.tooltip=Aktiviert das Senden von signierten Chat Nachrichten auf >= 1.19 Servern. tab.advanced.chat_signing.tooltip=Aktiviert das Senden von signierten Chat Nachrichten auf >= 1.19 Servern.
tab.advanced.ignore_packet_translation_errors.label=Datenpaket Übersetzungsfehler ignorieren tab.advanced.ignore_packet_translation_errors.label=Datenpaket Übersetzungsfehler ignorieren
tab.advanced.ignore_packet_translation_errors.tooltip=Wenn du diese Option aktivierst, wirst du nicht mehr vom Server gekickt, wenn es einen Datenpaket Übersetzungsfehler gibt, sondern der Fehler wird nur in der Konsole angezeigt.\nDiese Option könnte abhängig vom Datenpaket, welches nicht übersetzt werden konnte, Folgeprobleme verursachen. tab.advanced.ignore_packet_translation_errors.tooltip=Wenn du diese Option aktivierst, wirst du nicht mehr vom Server gekickt, wenn es einen Datenpaket Übersetzungsfehler gibt, sondern der Fehler wird nur in der Konsole angezeigt.\nDiese Option könnte abhängig vom Datenpaket, welches nicht übersetzt werden konnte, Folgeprobleme verursachen.
tab.advanced.allow_beta_pinging.label=Aktiviere Pings für <= b1.7.3
tab.advanced.allow_beta_pinging.tooltip=Aktiviert das Pingen für <= b1.7.3 Server. Das könnte zu Problemen bei Servern, welche zu schnelle Verbindungen blockieren führen.
tab.advanced.create_viaversion_dump.label=ViaVersion Dump erstellen tab.advanced.create_viaversion_dump.label=ViaVersion Dump erstellen
tab.advanced.create_viaversion_dump.success=Der ViaVersion Dump Link wurde in die Zwischenablage kopiert. tab.advanced.create_viaversion_dump.success=Der ViaVersion Dump Link wurde in die Zwischenablage kopiert.
tab.advanced.upload_latest_log.label=Neueste Log-Datei hochladen tab.advanced.upload_latest_log.label=Neueste Log-Datei hochladen

View File

@ -53,6 +53,8 @@ tab.advanced.chat_signing.label=Chat signing
tab.advanced.chat_signing.tooltip=Enables sending signed chat messages on >= 1.19 servers. tab.advanced.chat_signing.tooltip=Enables sending signed chat messages on >= 1.19 servers.
tab.advanced.ignore_packet_translation_errors.label=Ignore packet translation errors tab.advanced.ignore_packet_translation_errors.label=Ignore packet translation errors
tab.advanced.ignore_packet_translation_errors.tooltip=Enabling this will prevent getting disconnected from the server when a packet translation error occurs and instead only print the error in the console.\nThis may cause issues depending on the type of packet which failed to translate. tab.advanced.ignore_packet_translation_errors.tooltip=Enabling this will prevent getting disconnected from the server when a packet translation error occurs and instead only print the error in the console.\nThis may cause issues depending on the type of packet which failed to translate.
tab.advanced.allow_beta_pinging.label=Allow <= b1.7.3 pinging
tab.advanced.allow_beta_pinging.tooltip=Enabling this will allow you to ping <= b1.7.3 servers. This may cause issues with servers that block too frequent connections.
tab.advanced.create_viaversion_dump.label=Create ViaVersion dump tab.advanced.create_viaversion_dump.label=Create ViaVersion dump
tab.advanced.create_viaversion_dump.success=Copied ViaVersion dump link to clipboard. tab.advanced.create_viaversion_dump.success=Copied ViaVersion dump link to clipboard.
tab.advanced.upload_latest_log.label=Upload latest log file tab.advanced.upload_latest_log.label=Upload latest log file