Mirror von
https://github.com/GeyserMC/Geyser.git
synchronisiert 2024-10-08 10:50:11 +02:00
Provide the Geyser file's MD5 and SHA-256 hash in Geyser dumps (#2026)
Dieser Commit ist enthalten in:
Ursprung
7d80dff028
Commit
abc3a187d4
@ -27,8 +27,12 @@ package org.geysermc.connector.dump;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.github.steveice10.mc.protocol.MinecraftConstants;
|
import com.github.steveice10.mc.protocol.MinecraftConstants;
|
||||||
|
import com.google.common.hash.Hashing;
|
||||||
|
import com.google.common.io.ByteSource;
|
||||||
|
import com.google.common.io.Files;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.geysermc.connector.GeyserConnector;
|
import org.geysermc.connector.GeyserConnector;
|
||||||
import org.geysermc.connector.common.serializer.AsteriskSerializer;
|
import org.geysermc.connector.common.serializer.AsteriskSerializer;
|
||||||
@ -39,6 +43,7 @@ import org.geysermc.connector.utils.DockerCheck;
|
|||||||
import org.geysermc.connector.utils.FileUtils;
|
import org.geysermc.connector.utils.FileUtils;
|
||||||
import org.geysermc.floodgate.util.DeviceOS;
|
import org.geysermc.floodgate.util.DeviceOS;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
@ -55,8 +60,9 @@ public class DumpInfo {
|
|||||||
private final DumpInfo.VersionInfo versionInfo;
|
private final DumpInfo.VersionInfo versionInfo;
|
||||||
private Properties gitInfo;
|
private Properties gitInfo;
|
||||||
private final GeyserConfiguration config;
|
private final GeyserConfiguration config;
|
||||||
private Object2IntMap<DeviceOS> userPlatforms;
|
private final HashInfo hashInfo;
|
||||||
private RamInfo ramInfo;
|
private final Object2IntMap<DeviceOS> userPlatforms;
|
||||||
|
private final RamInfo ramInfo;
|
||||||
private final BootstrapDumpInfo bootstrapInfo;
|
private final BootstrapDumpInfo bootstrapInfo;
|
||||||
|
|
||||||
public DumpInfo() {
|
public DumpInfo() {
|
||||||
@ -69,9 +75,29 @@ public class DumpInfo {
|
|||||||
|
|
||||||
this.config = GeyserConnector.getInstance().getConfig();
|
this.config = GeyserConnector.getInstance().getConfig();
|
||||||
|
|
||||||
|
String md5Hash = "unknown";
|
||||||
|
String sha256Hash = "unknown";
|
||||||
|
try {
|
||||||
|
// https://stackoverflow.com/questions/320542/how-to-get-the-path-of-a-running-jar-file
|
||||||
|
// https://stackoverflow.com/questions/304268/getting-a-files-md5-checksum-in-java
|
||||||
|
File file = new File(DumpInfo.class.getProtectionDomain().getCodeSource().getLocation().toURI());
|
||||||
|
ByteSource byteSource = Files.asByteSource(file);
|
||||||
|
// Jenkins uses MD5 for its hash
|
||||||
|
//noinspection UnstableApiUsage
|
||||||
|
md5Hash = byteSource.hash(Hashing.md5()).toString();
|
||||||
|
//noinspection UnstableApiUsage
|
||||||
|
sha256Hash = byteSource.hash(Hashing.sha256()).toString();
|
||||||
|
} catch (Exception e) {
|
||||||
|
if (GeyserConnector.getInstance().getConfig().isDebugMode()) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.hashInfo = new HashInfo(md5Hash, sha256Hash);
|
||||||
|
|
||||||
this.ramInfo = new DumpInfo.RamInfo();
|
this.ramInfo = new DumpInfo.RamInfo();
|
||||||
|
|
||||||
this.userPlatforms = new Object2IntOpenHashMap();
|
this.userPlatforms = new Object2IntOpenHashMap<>();
|
||||||
for (GeyserSession session : GeyserConnector.getInstance().getPlayers()) {
|
for (GeyserSession session : GeyserConnector.getInstance().getPlayers()) {
|
||||||
DeviceOS device = session.getClientData().getDeviceOS();
|
DeviceOS device = session.getClientData().getDeviceOS();
|
||||||
userPlatforms.put(device, userPlatforms.getOrDefault(device, 0) + 1);
|
userPlatforms.put(device, userPlatforms.getOrDefault(device, 0) + 1);
|
||||||
@ -106,6 +132,13 @@ public class DumpInfo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public static class HashInfo {
|
||||||
|
private final String md5Hash;
|
||||||
|
private final String sha256Hash;
|
||||||
|
}
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
public static class NetworkInfo {
|
public static class NetworkInfo {
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren