From ff79372ead2eab8f411e13e77e5cee1409f7a119 Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 22 Apr 2024 22:06:11 +0100 Subject: [PATCH] don't throw an error on geo lookup error --- .../backend/model/server/BedrockMinecraftServer.java | 2 +- .../backend/model/server/JavaMinecraftServer.java | 2 +- .../backend/model/server/MinecraftServer.java | 12 ++++++++++-- .../xyz/mcutils/backend/service/MaxMindService.java | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/xyz/mcutils/backend/model/server/BedrockMinecraftServer.java b/src/main/java/xyz/mcutils/backend/model/server/BedrockMinecraftServer.java index d6e39a3..a7e063b 100644 --- a/src/main/java/xyz/mcutils/backend/model/server/BedrockMinecraftServer.java +++ b/src/main/java/xyz/mcutils/backend/model/server/BedrockMinecraftServer.java @@ -58,7 +58,7 @@ public final class BedrockMinecraftServer extends MinecraftServer { Edition edition = Edition.valueOf(split[0]); Version version = new Version(Integer.parseInt(split[2]), split[3]); Players players = new Players(Integer.parseInt(split[4]), Integer.parseInt(split[5]), null); - MOTD motd = MOTD.create(split[1] + "\n" + split[7]); + MOTD motd = MOTD.create(hostname, Platform.BEDROCK, split[1] + "\n" + split[7]); GameMode gameMode = new GameMode(split[8], split.length > 9 ? Integer.parseInt(split[9]) : -1); return new BedrockMinecraftServer( split[6], diff --git a/src/main/java/xyz/mcutils/backend/model/server/JavaMinecraftServer.java b/src/main/java/xyz/mcutils/backend/model/server/JavaMinecraftServer.java index b657981..c4739a3 100644 --- a/src/main/java/xyz/mcutils/backend/model/server/JavaMinecraftServer.java +++ b/src/main/java/xyz/mcutils/backend/model/server/JavaMinecraftServer.java @@ -97,7 +97,7 @@ public final class JavaMinecraftServer extends MinecraftServer { hostname, ip, port, - MinecraftServer.MOTD.create(motdString), + MinecraftServer.MOTD.create(hostname, Platform.JAVA, motdString), token.getPlayers(), location, records, diff --git a/src/main/java/xyz/mcutils/backend/model/server/MinecraftServer.java b/src/main/java/xyz/mcutils/backend/model/server/MinecraftServer.java index 763d5ad..9e8234f 100644 --- a/src/main/java/xyz/mcutils/backend/model/server/MinecraftServer.java +++ b/src/main/java/xyz/mcutils/backend/model/server/MinecraftServer.java @@ -4,6 +4,7 @@ import com.maxmind.geoip2.model.CityResponse; import io.micrometer.common.lang.NonNull; import lombok.*; import xyz.mcutils.backend.common.ColorUtils; +import xyz.mcutils.backend.config.Config; import xyz.mcutils.backend.model.dns.DNSRecord; import xyz.mcutils.backend.service.pinger.MinecraftServerPinger; import xyz.mcutils.backend.service.pinger.impl.BedrockMinecraftServerPinger; @@ -100,6 +101,11 @@ public class MinecraftServer { */ private final String[] html; + /** + * The URL to the server preview image. + */ + private final String preview; + /** * Create a new MOTD from a raw string. * @@ -107,12 +113,14 @@ public class MinecraftServer { * @return the new motd */ @NonNull - public static MOTD create(@NonNull String raw) { + public static MOTD create(@NonNull String hostname, @NonNull Platform platform, @NonNull String raw) { String[] rawLines = raw.split("\n"); // The raw lines return new MOTD( rawLines, Arrays.stream(rawLines).map(ColorUtils::stripColor).toArray(String[]::new), - Arrays.stream(rawLines).map(ColorUtils::toHTML).toArray(String[]::new) + Arrays.stream(rawLines).map(ColorUtils::toHTML).toArray(String[]::new), + Config.INSTANCE.getWebPublicUrl() + "/server/%s/preview/%s".formatted( + platform.name().toLowerCase(),hostname) ); } } diff --git a/src/main/java/xyz/mcutils/backend/service/MaxMindService.java b/src/main/java/xyz/mcutils/backend/service/MaxMindService.java index 7d6554e..1f20c35 100644 --- a/src/main/java/xyz/mcutils/backend/service/MaxMindService.java +++ b/src/main/java/xyz/mcutils/backend/service/MaxMindService.java @@ -68,7 +68,7 @@ public class MaxMindService { return database.city(InetAddress.getByName(ip)); } catch (IOException | GeoIp2Exception e) { log.error("Failed to lookup the GeoIP information for '{}'", ip, e); - throw new RuntimeException("Failed to lookup the IP for '%s'".formatted(ip)); + return null; } }