HardwareUtil class
Пакет: com.hypixel.hytale.common.util
Файл: com/hypixel/hytale/common/util/HardwareUtil.java
Поля (20)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
HytaleLogger |
LOGGER |
|
String |
var0 |
|
|
var0 |
|
|
var0 |
|
String |
var0 |
|
|
var0 |
|
UUID |
var0 |
|
|
var0 |
|
Path |
var1 |
|
Process |
var1 |
|
Matcher |
var1 |
|
String |
var1 |
|
Matcher |
var11 |
|
String |
var2 |
|
Matcher |
var5 |
|
Matcher |
var5 |
|
String |
var5 |
|
UUID |
var6 |
|
UUID |
var8 |
|
UUID |
var9 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
RuntimeExceptionthrow new RuntimeException("Failed to get hardware UUID for Windows - registry, PowerShell, and wmic all failed") |
abstract |
throw new |
RuntimeExceptionthrow new RuntimeException("Failed to get hardware UUID for macOS - ioreg and system_profiler both failed") |
abstract |
throw new |
RuntimeExceptionthrow new RuntimeException("Failed to get hardware UUID for Linux - all methods failed") |
|
|
if if(var0 != null) |
|
|
if if(var0 != null) |
|
|
if if(var8 != null) |
|
|
if if(var0 != null) |
|
|
if if(var9 != null) |
|
|
if if(var0 != null) |
|
|
if if(var0 != null) |
|
|
if if(var0 != null) |
|
|
if if(var0 != null) |
|
|
if if(var5 != null) |
|
|
if if(var6 != null) |
|
return |
switchreturn switch(SystemUtil.TYPE) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.common.util;
class="kw">import com.hypixel.hytale.function.supplier.SupplierUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import java.nio.charset.StandardCharsets;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.time.Duration;
class="kw">import java.util.UUID;
class="kw">import java.util.function.Supplier;
class="kw">import java.util.logging.Level;
class="kw">import java.util.regex.Matcher;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nullable;
class="kw">public class HardwareUtil {
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
class="kw">private class="kw">static class="kw">final Duration PROCESS_TIMEOUT = Duration.ofSeconds(2L);
class="kw">private class="kw">static class="kw">final Pattern UUID_PATTERN = Pattern.compile("([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})");
class="kw">private class="kw">static class="kw">final Supplier<UUID> WINDOWS = SupplierUtil.cache(() -> {
String var0 = runCommand("reg", "query", "HKLM\\SOFTWARE\\Microsoft\\Cryptography", "/v", "MachineGuid");
if (var0 != null) {
for (String var4 : var0.split("\r?\n", 0)) {
if (var4.contains("MachineGuid")) {
Matcher var5 = UUID_PATTERN.matcher(var4);
if (var5.find()) {
class="kw">return UUID.fromString(var5.group(1));
}
}
}
}
var0 = runCommand("powershell", "-NoProfile", "-Command", "(Get-CimInstance -Class Win32_ComputerSystemProduct).UUID");
if (var0 != null) {
UUID var8 = parseUuidFromOutput(var0);
if (var8 != null) {
class="kw">return var8;
}
}
var0 = runCommand("wmic", "csproduct", "get", "UUID");
if (var0 != null) {
UUID var9 = parseUuidFromOutput(var0);
if (var9 != null) {
class="kw">return var9;
}
}
throw new RuntimeException("Failed to get hardware UUID for Windows - registry, PowerShell, and wmic all failed");
});
class="kw">private class="kw">static class="kw">final Supplier<UUID> MAC = SupplierUtil.cache(() -> {
String var0 = runCommand("/usr/sbin/ioreg", "-rd1", "-c", "IOPlatformExpertDevice");
if (var0 != null) {
for (String var4 : var0.split("\r?\n", 0)) {
if (var4.contains("IOPlatformUUID")) {
Matcher var5 = UUID_PATTERN.matcher(var4);
if (var5.find()) {
class="kw">return UUID.fromString(var5.group(1));
}
}
}
}
var0 = runCommand("/usr/sbin/system_profiler", "SPHardwareDataType");
if (var0 != null) {
for (String var10 : var0.split("\r?\n", 0)) {
if (var10.contains("Hardware UUID")) {
Matcher var11 = UUID_PATTERN.matcher(var10);
if (var11.find()) {
class="kw">return UUID.fromString(var11.group(1));
}
}
}
}
throw new RuntimeException("Failed to get hardware UUID for macOS - ioreg and system_profiler both failed");
});
class="kw">private class="kw">static class="kw">final Supplier<UUID> LINUX = SupplierUtil.cache(() -> {
UUID var0 = readMachineIdFile(Path.of("/etc/machine-id"));
if (var0 != null) {
class="kw">return var0;
}
var0 = readMachineIdFile(Path.of("/var/lib/dbus/machine-id"));
if (var0 != null) {
class="kw">return var0;
}
try {
Path var1 = Path.of("/sys/class/dmi/id/product_uuid");
if (Files.isReadable(var1)) {
String var2 = Files.readString(var1, StandardCharsets.UTF_8).trim();
if (!var2.isEmpty()) {
class="kw">return UUID.fromString(var2);
}
}
} catch (Exception var3) {
}
String var5 = runCommand("dmidecode", "-s", "system-uuid");
if (var5 != null) {
UUID var6 = parseUuidFromOutput(var5);
if (var6 != null) {
class="kw">return var6;
}
}
throw new RuntimeException("Failed to get hardware UUID for Linux - all methods failed");
});
class="kw">public HardwareUtil() {
}
@Nullable
class="kw">private class="kw">static String runCommand(String... var0) {
try {
Process var1 = new ProcessBuilder(var0).start();
if (var1.waitFor(PROCESS_TIMEOUT)) {
class="kw">return new String(var1.getInputStream().readAllBytes(), StandardCharsets.UTF_8).trim();
}
var1.destroyForcibly();
} catch (InterruptedException var2) {
Thread.currentThread().interrupt();
} catch (Exception var3) {
}
class="kw">return null;
}
@Nullable
class="kw">private class="kw">static UUID parseUuidFromOutput(String var0) {
Matcher var1 = UUID_PATTERN.matcher(var0);
class="kw">return var1.find() ? UUID.fromString(var1.group(1)) : null;
}
@Nullable
class="kw">private class="kw">static UUID readMachineIdFile(Path var0) {
try {
if (!Files.isReadable(var0)) {
class="kw">return null;
}
String var1 = Files.readString(var0, StandardCharsets.UTF_8).trim();
class="kw">return !var1.isEmpty() && var1.length() == 32
? UUID.fromString(
var1.substring(0, 8) + "-" + var1.substring(8, 12) + "-" + var1.substring(12, 16) + "-" + var1.substring(16, 20) + "-" + var1.substring(20, 32)
)
: null;
} catch (Exception var2) {
class="kw">return null;
}
}
@Nullable
class="kw">public class="kw">static UUID getUUID() {
try {
class="kw">return class="kw">switch (SystemUtil.TYPE) {
case WINDOWS -> (UUID)WINDOWS.get();
case LINUX -> (UUID)LINUX.get();
case MACOS -> (UUID)MAC.get();
case OTHER -> throw new RuntimeException("Unknown OS!");
};
} catch (Exception var1) {
((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(var1)).log("Failed to get Hardware UUID");
class="kw">return null;
}
}
}