From b7f0780a561be1c152d41c88ba8fbd6685081187 Mon Sep 17 00:00:00 2001 From: rtm516 Date: Thu, 30 Jul 2020 16:59:42 +0100 Subject: [PATCH] Fix duplicate info and add more info to dumps (#1058) * Fix duplicate info and add more info to dumps * Add gui to standalone dump info --- .../bungeecord/GeyserBungeeConfiguration.java | 2 + .../spigot/GeyserSpigotConfiguration.java | 2 + .../standalone/GeyserStandaloneBootstrap.java | 2 +- .../standalone/GeyserStandaloneDumpInfo.java | 40 +++++++++++++++++++ .../standalone/gui/GeyserStandaloneGUI.java | 2 +- .../velocity/GeyserVelocityConfiguration.java | 2 + .../configuration/GeyserConfiguration.java | 4 ++ .../org/geysermc/connector/dump/DumpInfo.java | 35 +++++++++++++++- 8 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneDumpInfo.java diff --git a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeConfiguration.java b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeConfiguration.java index 839fc185..d9b86a2e 100644 --- a/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeConfiguration.java +++ b/bootstrap/bungeecord/src/main/java/org/geysermc/platform/bungeecord/GeyserBungeeConfiguration.java @@ -25,6 +25,7 @@ package org.geysermc.platform.bungeecord; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.Getter; import net.md_5.bungee.api.plugin.Plugin; @@ -39,6 +40,7 @@ import java.nio.file.Paths; @JsonIgnoreProperties(ignoreUnknown = true) public class GeyserBungeeConfiguration extends GeyserJacksonConfiguration { + @JsonIgnore private Path floodgateKey; public void loadFloodgate(GeyserBungeePlugin plugin, Configuration configuration) { diff --git a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotConfiguration.java b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotConfiguration.java index 9a681156..380f7037 100644 --- a/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotConfiguration.java +++ b/bootstrap/spigot/src/main/java/org/geysermc/platform/spigot/GeyserSpigotConfiguration.java @@ -25,6 +25,7 @@ package org.geysermc.platform.spigot; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Getter; @@ -43,6 +44,7 @@ public class GeyserSpigotConfiguration extends GeyserJacksonConfiguration { @JsonProperty("floodgate-key-file") private String floodgateKeyFile; + @JsonIgnore private Path floodgateKey; public void loadFloodgate(GeyserSpigotPlugin plugin) { diff --git a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java index cf02d35f..e9576b19 100644 --- a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java +++ b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneBootstrap.java @@ -177,6 +177,6 @@ public class GeyserStandaloneBootstrap implements GeyserBootstrap { @Override public BootstrapDumpInfo getDumpInfo() { - return new BootstrapDumpInfo(); + return new GeyserStandaloneDumpInfo(this); } } diff --git a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneDumpInfo.java b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneDumpInfo.java new file mode 100644 index 00000000..5210c519 --- /dev/null +++ b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/GeyserStandaloneDumpInfo.java @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2019-2020 GeyserMC. http://geysermc.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * @author GeyserMC + * @link https://github.com/GeyserMC/Geyser + */ + +package org.geysermc.platform.standalone; + +import lombok.Getter; +import org.geysermc.connector.dump.BootstrapDumpInfo; + +@Getter +public class GeyserStandaloneDumpInfo extends BootstrapDumpInfo { + + private boolean isGui; + + GeyserStandaloneDumpInfo(GeyserStandaloneBootstrap bootstrap) { + super(); + this.isGui = bootstrap.isUseGui(); + } +} diff --git a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GeyserStandaloneGUI.java b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GeyserStandaloneGUI.java index 0c0ec112..3fd3de98 100644 --- a/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GeyserStandaloneGUI.java +++ b/bootstrap/standalone/src/main/java/org/geysermc/platform/standalone/gui/GeyserStandaloneGUI.java @@ -61,7 +61,7 @@ public class GeyserStandaloneGUI { private static final JTable playerTable = new JTable(playerTableModel); private static final int originalFontSize = consolePane.getFont().getSize(); - private static final long MEGABYTE = 1024L * 1024L; + private static final long MEGABYTE = 1024L * 1024L; private final JMenu commandsMenu; private final JMenu optionsMenu; diff --git a/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityConfiguration.java b/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityConfiguration.java index 574941c4..07580443 100644 --- a/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityConfiguration.java +++ b/bootstrap/velocity/src/main/java/org/geysermc/platform/velocity/GeyserVelocityConfiguration.java @@ -25,6 +25,7 @@ package org.geysermc.platform.velocity; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.velocitypowered.api.plugin.PluginContainer; @@ -45,6 +46,7 @@ public class GeyserVelocityConfiguration extends GeyserJacksonConfiguration { @JsonProperty("floodgate-key-file") private String floodgateKeyFile; + @JsonIgnore private Path floodgateKey; @Override diff --git a/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java b/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java index a8bc0a9d..fd6916dc 100644 --- a/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java +++ b/connector/src/main/java/org/geysermc/connector/configuration/GeyserConfiguration.java @@ -26,6 +26,7 @@ package org.geysermc.connector.configuration; +import com.fasterxml.jackson.annotation.JsonIgnore; import org.geysermc.connector.GeyserLogger; import org.geysermc.connector.utils.LanguageUtils; @@ -46,10 +47,13 @@ public interface GeyserConfiguration { boolean isCommandSuggestions(); + @JsonIgnore boolean isPassthroughMotd(); + @JsonIgnore boolean isPassthroughPlayerCounts(); + @JsonIgnore boolean isLegacyPingPassthrough(); int getPingPassthroughInterval(); diff --git a/connector/src/main/java/org/geysermc/connector/dump/DumpInfo.java b/connector/src/main/java/org/geysermc/connector/dump/DumpInfo.java index 6d4b83db..ab7224fd 100644 --- a/connector/src/main/java/org/geysermc/connector/dump/DumpInfo.java +++ b/connector/src/main/java/org/geysermc/connector/dump/DumpInfo.java @@ -27,11 +27,15 @@ package org.geysermc.connector.dump; import com.github.steveice10.mc.protocol.MinecraftConstants; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; import lombok.Getter; import org.geysermc.connector.GeyserConnector; import org.geysermc.connector.configuration.GeyserConfiguration; +import org.geysermc.connector.network.session.GeyserSession; import org.geysermc.connector.utils.DockerCheck; import org.geysermc.connector.utils.FileUtils; +import org.geysermc.floodgate.util.DeviceOS; import java.io.IOException; import java.net.InetAddress; @@ -46,9 +50,13 @@ public class DumpInfo { private final DumpInfo.VersionInfo versionInfo; private Properties gitInfo; private final GeyserConfiguration config; + private Object2IntMap userPlatforms; + private RamInfo ramInfo; private final BootstrapDumpInfo bootstrapInfo; public DumpInfo() { + this.versionInfo = new DumpInfo.VersionInfo(); + try { this.gitInfo = new Properties(); this.gitInfo.load(FileUtils.getResource("git.properties")); @@ -56,7 +64,14 @@ public class DumpInfo { this.config = GeyserConnector.getInstance().getConfig(); - this.versionInfo = new DumpInfo.VersionInfo(); + this.ramInfo = new DumpInfo.RamInfo(); + + this.userPlatforms = new Object2IntOpenHashMap(); + for (GeyserSession session : GeyserConnector.getInstance().getPlayers()) { + DeviceOS device = session.getClientData().getDeviceOS(); + userPlatforms.put(device, userPlatforms.getOrDefault(device, 0) + 1); + } + this.bootstrapInfo = GeyserConnector.getInstance().getBootstrap().getDumpInfo(); } @@ -68,6 +83,7 @@ public class DumpInfo { private final String javaVersion; private final String architecture; private final String operatingSystem; + private final String operatingSystemVersion; private final NetworkInfo network; private final MCInfo mcInfo; @@ -78,6 +94,7 @@ public class DumpInfo { this.javaVersion = System.getProperty("java.version"); this.architecture = System.getProperty("os.arch"); // Usually gives Java architecture but still may be helpful. this.operatingSystem = System.getProperty("os.name"); + this.operatingSystemVersion = System.getProperty("os.version"); this.network = new NetworkInfo(); this.mcInfo = new MCInfo(); @@ -122,4 +139,20 @@ public class DumpInfo { this.javaProtocol = MinecraftConstants.PROTOCOL_VERSION; } } + + @Getter + public static class RamInfo { + + private final long free; + private final long total; + private final long max; + + RamInfo() { + final long MEGABYTE = 1024L * 1024L; + + this.free = Runtime.getRuntime().freeMemory() / MEGABYTE; + this.total = Runtime.getRuntime().totalMemory() / MEGABYTE; + this.max = Runtime.getRuntime().maxMemory() / MEGABYTE; + } + } }