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 URI PROXY_URL; // Example: type://address:port or type://username:password@address:port
public static boolean IGNORE_PACKET_TRANSLATION_ERRORS;
public static boolean ALLOW_BETA_PINGING;
// GUI only config options
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> 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> 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));
final OptionSet options;
@ -137,6 +139,7 @@ public class Options {
SERVER_HAPROXY_PROTOCOL = options.has(serverHaProxyProtocol);
LEGACY_CLIENT_PASSTHROUGH = options.has(legacyClientPassthrough);
IGNORE_PACKET_TRANSLATION_ERRORS = options.has(ignorePacketTranslationErrors);
ALLOW_BETA_PINGING = options.has(allowBetaPinging);
ViaProxy.EVENT_MANAGER.call(new PostOptionsParseEvent(options));
} catch (OptionException e) {
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.impl.handshake.C2SHandshakePacket;
import net.raphimc.viabedrock.api.BedrockProtocolVersion;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
import net.raphimc.viaproxy.ViaProxy;
import net.raphimc.viaproxy.cli.options.Options;
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())) {
serverAddress = TransferDataHolder.removeTempRedirect(this.proxyConnection.getC2P());
}

View File

@ -49,6 +49,7 @@ public class AdvancedTab extends AUITab {
JCheckBox legacySkinLoading;
JCheckBox chatSigning;
JCheckBox ignorePacketTranslationErrors;
JCheckBox allowBetaPinging;
JButton viaVersionDumpButton;
JButton uploadLogsButton;
@ -115,6 +116,13 @@ public class AdvancedTab extends AUITab {
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);
}
{
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);
}
@ -190,6 +198,7 @@ public class AdvancedTab extends AUITab {
save.put("legacy_skin_loading", String.valueOf(this.legacySkinLoading.isSelected()));
save.put("chat_signing", String.valueOf(this.chatSigning.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();
}

View File

@ -215,6 +215,7 @@ public class GeneralTab extends AUITab {
ViaProxy.getUI().advancedTab.legacySkinLoading.setEnabled(state);
ViaProxy.getUI().advancedTab.chatSigning.setEnabled(state);
ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.setEnabled(state);
ViaProxy.getUI().advancedTab.allowBetaPinging.setEnabled(state);
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 boolean chatSigning = ViaProxy.getUI().advancedTab.chatSigning.isSelected();
final boolean ignorePacketTranslationErrors = ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.isSelected();
final boolean allowBetaPinging = ViaProxy.getUI().advancedTab.allowBetaPinging.isSelected();
try {
try {
@ -295,6 +297,7 @@ public class GeneralTab extends AUITab {
Options.OPENAUTHMOD_AUTH = authMethod == 2;
Options.CHAT_SIGNING = chatSigning;
Options.IGNORE_PACKET_TRANSLATION_ERRORS = ignorePacketTranslationErrors;
Options.ALLOW_BETA_PINGING = allowBetaPinging;
if (!proxyUrl.isEmpty()) {
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.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.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.success=Der ViaVersion Dump Link wurde in die Zwischenablage kopiert.
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.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.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.success=Copied ViaVersion dump link to clipboard.
tab.advanced.upload_latest_log.label=Upload latest log file