mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Fix issues with the ConnectionTestCommand (#4333)
- Port out of bounds checking - Proper encoding of ip's to check - Don't assume "cache" response is nonnull; it is null when there's an error - Send users the error message that we get when server is unreachable
This commit is contained in:
parent
1499def4a3
commit
f1e7ef92f4
1 changed files with 23 additions and 10 deletions
|
@ -36,6 +36,8 @@ import org.geysermc.geyser.text.GeyserLocale;
|
||||||
import org.geysermc.geyser.util.LoopbackUtil;
|
import org.geysermc.geyser.util.LoopbackUtil;
|
||||||
import org.geysermc.geyser.util.WebUtils;
|
import org.geysermc.geyser.util.WebUtils;
|
||||||
|
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
|
@ -104,6 +106,12 @@ public class ConnectionTestCommand extends GeyserCommand {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Issue: port out of bounds
|
||||||
|
if (port <= 0 || port >= 65535) {
|
||||||
|
sender.sendMessage("The port you specified is invalid! Please specify a valid port.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Issue: do the ports not line up?
|
// Issue: do the ports not line up?
|
||||||
if (port != geyser.getConfig().getBedrock().port()) {
|
if (port != geyser.getConfig().getBedrock().port()) {
|
||||||
if (fullAddress.length == 2) {
|
if (fullAddress.length == 2) {
|
||||||
|
@ -161,11 +169,13 @@ public class ConnectionTestCommand extends GeyserCommand {
|
||||||
sender.sendMessage("Testing server connection now. Please wait...");
|
sender.sendMessage("Testing server connection now. Please wait...");
|
||||||
JsonNode output;
|
JsonNode output;
|
||||||
try {
|
try {
|
||||||
output = WebUtils.getJson("https://checker.geysermc.org/ping?hostname=" + ip + "&port=" + port);
|
String hostname = URLEncoder.encode(ip, StandardCharsets.UTF_8);
|
||||||
|
output = WebUtils.getJson("https://checker.geysermc.org/ping?hostname=" + hostname + "&port=" + port);
|
||||||
} finally {
|
} finally {
|
||||||
CONNECTION_TEST_MOTD = null;
|
CONNECTION_TEST_MOTD = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (output.get("success").asBoolean()) {
|
||||||
JsonNode cache = output.get("cache");
|
JsonNode cache = output.get("cache");
|
||||||
String when;
|
String when;
|
||||||
if (cache.get("fromCache").asBoolean()) {
|
if (cache.get("fromCache").asBoolean()) {
|
||||||
|
@ -174,7 +184,6 @@ public class ConnectionTestCommand extends GeyserCommand {
|
||||||
when = "now";
|
when = "now";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (output.get("success").asBoolean()) {
|
|
||||||
JsonNode ping = output.get("ping");
|
JsonNode ping = output.get("ping");
|
||||||
JsonNode pong = ping.get("pong");
|
JsonNode pong = ping.get("pong");
|
||||||
String remoteMotd = pong.get("motd").asText();
|
String remoteMotd = pong.get("motd").asText();
|
||||||
|
@ -196,7 +205,11 @@ public class ConnectionTestCommand extends GeyserCommand {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage("Your server is likely unreachable from outside the network as of " + when + ".");
|
sender.sendMessage("Your server is likely unreachable from outside the network!");
|
||||||
|
JsonNode message = output.get("message");
|
||||||
|
if (message != null && !message.asText().isEmpty()) {
|
||||||
|
sender.sendMessage("Got the error message: " + message.asText());
|
||||||
|
}
|
||||||
sendLinks(sender);
|
sendLinks(sender);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
sender.sendMessage("An error occurred while trying to check your connection! Check the console for more information.");
|
sender.sendMessage("An error occurred while trying to check your connection! Check the console for more information.");
|
||||||
|
|
Loading…
Reference in a new issue