From 3cd15a61685a6e7412fdc21a28b849bee60f7c83 Mon Sep 17 00:00:00 2001 From: Gravit Date: Tue, 27 Nov 2018 18:19:09 +0700 Subject: [PATCH 1/4] =?UTF-8?q?Avanguard=20=D0=B2=D1=8B=D0=B1=D1=80=D0=BE?= =?UTF-8?q?=D1=88=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binary/JARLauncherBinary.java | 2 +- .../ru/gravit/launcher/AvanguardStarter.java | 104 ------------------ .../ru/gravit/launcher/LauncherEngine.java | 5 - .../launcher/client/ClientLauncher.java | 9 +- .../launcher/request/auth/AuthRequest.java | 7 +- .../src/main/java/ru/zaxar163/GuardBind.java | 95 ---------------- .../java/ru/gravit/launcher/Launcher.java | 6 +- modules | 2 +- 8 files changed, 10 insertions(+), 220 deletions(-) delete mode 100644 Launcher/src/main/java/ru/gravit/launcher/AvanguardStarter.java delete mode 100644 LauncherAPI/src/main/java/ru/zaxar163/GuardBind.java diff --git a/LaunchServer/src/main/java/ru/gravit/launchserver/binary/JARLauncherBinary.java b/LaunchServer/src/main/java/ru/gravit/launchserver/binary/JARLauncherBinary.java index 91c52d59..b0f3a03a 100644 --- a/LaunchServer/src/main/java/ru/gravit/launchserver/binary/JARLauncherBinary.java +++ b/LaunchServer/src/main/java/ru/gravit/launchserver/binary/JARLauncherBinary.java @@ -254,7 +254,7 @@ private void stdBuild() throws IOException { throw new IOException(String.format("Missing init script file ('%s')", Launcher.INIT_SCRIPT_FILE)); // Write launcher guard dir IOHelper.walk(runtimeDir, new RuntimeDirVisitor(output, runtime), false); - IOHelper.walk(guardDir, new GuardDirVisitor(output, runtime), false); + //IOHelper.walk(guardDir, new GuardDirVisitor(output, runtime), false); } // Create launcher config file byte[] launcherConfigBytes; diff --git a/Launcher/src/main/java/ru/gravit/launcher/AvanguardStarter.java b/Launcher/src/main/java/ru/gravit/launcher/AvanguardStarter.java deleted file mode 100644 index 66545500..00000000 --- a/Launcher/src/main/java/ru/gravit/launcher/AvanguardStarter.java +++ /dev/null @@ -1,104 +0,0 @@ -package ru.gravit.launcher; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; - -import cpw.mods.fml.SafeExitJVMLegacy; -import net.minecraftforge.fml.SafeExitJVM; -import ru.gravit.launcher.hasher.DirWatcher; -import ru.gravit.launcher.hasher.HashedDir; -import ru.gravit.utils.NativeJVMHalt; -import ru.gravit.utils.helper.*; -import ru.zaxar163.GuardBind; - -public class AvanguardStarter { - static class SecurityThread implements Runnable { - static long macID = GuardBind.avnGetMacId(); - - @Override - public void run() { - while (!Thread.interrupted()) { - try { - if (macID != GuardBind.avnGetMacId()) { - LogHelper.error("MacID changed"); - safeHalt(8); - } - if (!GuardBind.avnIsStarted()) { - LogHelper.error("Avanguard stopped! Process stopped"); - safeHalt(5); - } - } catch (NullPointerException e) { - LogHelper.error("Avanguard unloaded! Process stopped"); - safeHalt(6); - } - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - GuardBind.avnGetMacId(); - if (!GuardBind.avnIsStarted()) { - LogHelper.error("Thread stopped! Process stopped"); - safeHalt(7); - } - } - } - } - } - - static void safeHalt(int exitcode) { - try { - SafeExitJVMLegacy.exit(exitcode); - } catch (Throwable ignored) { - - } - try { - SafeExitJVM.exit(exitcode); - } catch (Throwable ignored) { - - } - NativeJVMHalt halt = new NativeJVMHalt(exitcode); - halt.halt(); - } - - public static final String NAME = Launcher.getConfig().projectname; - public static Path wrapper = null, avanguard = null; - - public static void main(boolean init) { - if (init) - GuardBind.init(); - GuardBind.avnRegisterThreatNotifier((int threatType) -> { - System.err.println("Threat " + GuardBind.ThreatType.getThreat(threatType).name()); - LogHelper.error("Cheating == crash!"); - try { - SafeExitJVM.exit(threatType + 7000); - } catch (Throwable e) { - SafeExitJVMLegacy.exit(threatType + 7000); - } - return false; - }); - // нужно делать до пуска таймера! - GuardBind.avnStartDefence(); - CommonHelper.newThread("Security Thread", true, new SecurityThread()).start(); - } - - public static void load() { - GuardBind.startAbs(avanguard.toString()); - } - - public static void start(Path path1) throws IOException { - Path path = path1.resolve("guard"); - if (!IOHelper.exists(path)) - Files.createDirectories(path); - Path avanguard = path.resolve(JVMHelper.JVM_BITS == 64 ? "Avanguard64.dll" : "Avanguard32.dll"); - Path wrapper = path.resolve(JVMHelper.JVM_BITS == 64 ? NAME + "64.exe" : NAME + "32.exe"); - String avanguardResource = JVMHelper.JVM_BITS == 64 ? "Avanguard64.dll" : "Avanguard32.dll"; - String wrapperResource = JVMHelper.JVM_BITS == 64 ? "wrapper64.exe" : "wrapper32.exe"; - UnpackHelper.unpack(Launcher.getResourceURL(avanguardResource, "guard"), avanguard); - UnpackHelper.unpack(Launcher.getResourceURL(wrapperResource, "guard"), wrapper); - AvanguardStarter.wrapper = wrapper; - AvanguardStarter.avanguard = avanguard; - HashedDir guard = new HashedDir(path, null, true, false); - DirWatcher dirWatcher = new DirWatcher(path, guard, null, false); - CommonHelper.newThread("Guard Directory Watcher", true, dirWatcher).start(); - } -} diff --git a/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java b/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java index 883e7ad8..b79cea7e 100644 --- a/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java +++ b/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java @@ -217,11 +217,6 @@ public void start(String... args) throws Throwable { loadScript(Launcher.INIT_SCRIPT_FILE); LogHelper.info("Invoking start() function"); Invocable invoker = (Invocable) engine; - if (Launcher.isUsingAvanguard()) { - AvanguardStarter.start(DirBridge.dir); - AvanguardStarter.load(); - AvanguardStarter.main(false); - } Launcher.modulesManager.postInitModules(); invoker.invokeFunction("start", (Object) args); } diff --git a/Launcher/src/main/java/ru/gravit/launcher/client/ClientLauncher.java b/Launcher/src/main/java/ru/gravit/launcher/client/ClientLauncher.java index 2aeb3672..908c3677 100644 --- a/Launcher/src/main/java/ru/gravit/launcher/client/ClientLauncher.java +++ b/Launcher/src/main/java/ru/gravit/launcher/client/ClientLauncher.java @@ -334,8 +334,8 @@ public static Process launch( List args = new LinkedList<>(); boolean wrapper = isUsingWrapper(); Path javaBin; - if (wrapper) javaBin = AvanguardStarter.wrapper; - else if (isDownloadJava) { + /*if (wrapper) javaBin = AvanguardStarter.wrapper; + else*/ if (isDownloadJava) { //Linux и Mac не должны скачивать свою JVM if (JVMHelper.OS_TYPE == OS.MUSTDIE) javaBin = IOHelper.resolveJavaBin(JavaBinPath); @@ -405,11 +405,6 @@ public static void main(String... args) throws Throwable { engine.loadScript(Launcher.API_SCRIPT_FILE); engine.loadScript(Launcher.CONFIG_SCRIPT_FILE); Launcher.modulesManager.preInitModules(); - if (Launcher.isUsingAvanguard()) { - AvanguardStarter.start(DirBridge.dir); - AvanguardStarter.load(); - AvanguardStarter.main(false); - } checkJVMBitsAndVersion(); JVMHelper.verifySystemProperties(ClientLauncher.class, true); EnvHelper.checkDangerousParams(); diff --git a/LauncherAPI/src/main/java/ru/gravit/launcher/request/auth/AuthRequest.java b/LauncherAPI/src/main/java/ru/gravit/launcher/request/auth/AuthRequest.java index ae374851..4c58e31e 100644 --- a/LauncherAPI/src/main/java/ru/gravit/launcher/request/auth/AuthRequest.java +++ b/LauncherAPI/src/main/java/ru/gravit/launcher/request/auth/AuthRequest.java @@ -14,7 +14,6 @@ import ru.gravit.launcher.serialize.HInput; import ru.gravit.launcher.serialize.HOutput; import ru.gravit.launcher.serialize.SerializeLimits; -import ru.zaxar163.GuardBind; public final class AuthRequest extends Request { public static final class Result { @@ -72,9 +71,9 @@ protected Result requestDo(HInput input, HOutput output) throws IOException { if (Launcher.profile != null) output.writeString(Launcher.profile.getTitle(), SerializeLimits.MAX_CLIENT); output.writeInt(auth_id); - output.writeLong(Launcher.isUsingAvanguard() ? GuardBind.avnGetHddId() : 0); - output.writeLong(Launcher.isUsingAvanguard() ? GuardBind.avnGetCpuid() : 0); - output.writeLong(Launcher.isUsingAvanguard() ? GuardBind.avnGetSmbiosId() : 0); + output.writeLong(0); + output.writeLong(0); + output.writeLong(0); output.writeByteArray(encryptedPassword, SecurityHelper.CRYPTO_MAX_LENGTH); output.flush(); diff --git a/LauncherAPI/src/main/java/ru/zaxar163/GuardBind.java b/LauncherAPI/src/main/java/ru/zaxar163/GuardBind.java deleted file mode 100644 index a6d7b20b..00000000 --- a/LauncherAPI/src/main/java/ru/zaxar163/GuardBind.java +++ /dev/null @@ -1,95 +0,0 @@ -package ru.zaxar163; - -import java.nio.file.Path; - -import ru.gravit.launcher.LauncherAPI; -import ru.gravit.utils.helper.JVMHelper; -import ru.gravit.utils.helper.LogHelper; - -@LauncherAPI -public final class GuardBind { - public interface ThreatNotifier { - boolean call(int threatType); - } - - public enum ThreatType { - UNKNOWN_THREAT(0), - REMOTE_THREAD(1), - WINDOWS_HOOKS_INJECTION(2), - UNKNOWN_TRACE_LOAD_LIBRARY(3), - CONTEXT_MANIPULATION(4), - CRITICAL_MODULE_CHANGED(5), - UNKNOWN_INTERCEPTION(6), - UNKNOWN_MEMORY_REGION(7), - UNKNOWN_APC_DESTINATION(8); - - public static ThreatType getThreat(int threatType) { - return ThreatType.values()[threatType]; - } - - private final int id; - - ThreatType(int value) { - id = value; - } - - public int getValue() { - return id; - } - } - - @LauncherAPI - public static native void avnEliminateThreat(int threatType); - - @LauncherAPI - public static native long avnGetCpuid(); - - @LauncherAPI - public static native long avnGetHash(byte[] data); - - @LauncherAPI - public static native long avnGetHddId(); - - @LauncherAPI - public static native long avnGetMacId(); - - @LauncherAPI - public static native long avnGetSmbiosId(); - - @LauncherAPI - public static native boolean avnIsStarted(); - - @LauncherAPI - public static native boolean avnIsStaticLoaded(); - - @LauncherAPI - public static native void avnRegisterThreatNotifier(ThreatNotifier notifier); - - @LauncherAPI - public static native boolean avnStartDefence(); - - @LauncherAPI - public static native void avnStopDefence(); - - public static void init() { - LogHelper.debug("Anti-Cheat loading"); - if (JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE) - if (JVMHelper.JVM_BITS == 32) - System.loadLibrary("Avanguard32"); - else if (JVMHelper.JVM_BITS == 64) - System.loadLibrary("Avanguard64"); - LogHelper.debug("Anti-Cheat loaded"); - } - - public static void start(Path path) { - LogHelper.debug("Anti-Cheat loading"); - System.load(path.normalize().toAbsolutePath().toFile().getAbsolutePath()); - LogHelper.debug("Anti-Cheat loaded"); - } - - public static void startAbs(String path) { - LogHelper.debug("Anti-Cheat loading"); - System.load(path); - LogHelper.debug("Anti-Cheat loaded"); - } -} diff --git a/libLauncher/src/main/java/ru/gravit/launcher/Launcher.java b/libLauncher/src/main/java/ru/gravit/launcher/Launcher.java index ecee73f7..4754c3d3 100644 --- a/libLauncher/src/main/java/ru/gravit/launcher/Launcher.java +++ b/libLauncher/src/main/java/ru/gravit/launcher/Launcher.java @@ -57,10 +57,10 @@ public final class Launcher { private static final Pattern UUID_PATTERN = Pattern.compile("-", Pattern.LITERAL); public static int MAJOR = 4; - public static int MINOR = 0; - public static int PATCH = 8; + public static int MINOR = 1; + public static int PATCH = 0; public static int BUILD = 0; - public static Version.Type RELEASE = Version.Type.STABLE; + public static Version.Type RELEASE = Version.Type.DEV; @LauncherAPI public static LauncherConfig getConfig() { diff --git a/modules b/modules index f4ff154d..dd97153e 160000 --- a/modules +++ b/modules @@ -1 +1 @@ -Subproject commit f4ff154d105248c5bcb3a4cb217b38eed01b3a27 +Subproject commit dd97153ee53813078391aa07d1700f890e979e3f From 07eaa0c69163f8a05a0ecceebcbc268371c4f9ca Mon Sep 17 00:00:00 2001 From: Gravit Date: Tue, 27 Nov 2018 18:34:39 +0700 Subject: [PATCH 2/4] =?UTF-8?q?=D0=92=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B8?= =?UTF-8?q?=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D0=B8=20=D0=BE?= =?UTF-8?q?=20=D0=BB=D0=B8=D1=86=D0=B5=D0=BD=D0=B7=D0=B8=D0=B8=20=D0=B2=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=81=D0=BE=D0=BB=D1=8C=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/gravit/launchserver/LaunchServer.java | 1 + .../launcher/ClientLauncherWrapper.java | 9 +++++++- .../ru/gravit/launcher/LauncherEngine.java | 1 + .../gravit/launcher/server/ServerWrapper.java | 2 ++ .../ru/gravit/utils/helper/LogHelper.java | 21 +++++++++++++++++-- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/LaunchServer/src/main/java/ru/gravit/launchserver/LaunchServer.java b/LaunchServer/src/main/java/ru/gravit/launchserver/LaunchServer.java index a696c718..e348ac81 100644 --- a/LaunchServer/src/main/java/ru/gravit/launchserver/LaunchServer.java +++ b/LaunchServer/src/main/java/ru/gravit/launchserver/LaunchServer.java @@ -275,6 +275,7 @@ public static void main(String... args) throws Throwable { JVMHelper.verifySystemProperties(LaunchServer.class, true); LogHelper.addOutput(IOHelper.WORKING_DIR.resolve("LaunchServer.log")); LogHelper.printVersion("LaunchServer"); + LogHelper.printLicense("LauncherServer"); // Start LaunchServer Instant start = Instant.now(); diff --git a/Launcher/src/main/java/ru/gravit/launcher/ClientLauncherWrapper.java b/Launcher/src/main/java/ru/gravit/launcher/ClientLauncherWrapper.java index b0a7fc10..08114be7 100644 --- a/Launcher/src/main/java/ru/gravit/launcher/ClientLauncherWrapper.java +++ b/Launcher/src/main/java/ru/gravit/launcher/ClientLauncherWrapper.java @@ -17,6 +17,9 @@ public class ClientLauncherWrapper { @LauncherAPI public static void main(String[] arguments) throws IOException, InterruptedException { LogHelper.printVersion("Launcher"); + LogHelper.printLicense("Launcher"); + LogHelper.info("Restart Launcher witch JavaAgent..."); + LogHelper.info("If need debug output use -Dlauncher.debug=true"); JVMHelper.checkStackTrace(ClientLauncherWrapper.class); JVMHelper.verifySystemProperties(Launcher.class, true); EnvHelper.checkDangerousParams(); @@ -39,7 +42,11 @@ public static void main(String[] arguments) throws IOException, InterruptedExcep if (!LogHelper.isDebugEnabled()) { Thread.sleep(3000); if (!process.isAlive()) { - LogHelper.error("Process error code: %d", process.exitValue()); + int errorcode = process.exitValue(); + if(errorcode != 0) + LogHelper.error("Process exit witch error code: %d", errorcode); + else + LogHelper.info("Process exit witch code 0"); } else { LogHelper.debug("Process started success"); } diff --git a/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java b/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java index b79cea7e..85716e02 100644 --- a/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java +++ b/Launcher/src/main/java/ru/gravit/launcher/LauncherEngine.java @@ -163,6 +163,7 @@ public static void main(String... args) throws Throwable { EnvHelper.checkDangerousParams(); //if(!LauncherAgent.isStarted()) throw new SecurityException("JavaAgent not set"); LogHelper.printVersion("Launcher"); + LogHelper.printLicense("Launcher"); // Start Launcher Instant start = Instant.now(); try { diff --git a/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java b/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java index 9d13308c..681b25d8 100644 --- a/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java +++ b/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java @@ -76,6 +76,8 @@ public static boolean loopAuth(ServerWrapper wrapper, int count, int sleeptime) public static void main(String[] args) throws Throwable { ServerWrapper wrapper = new ServerWrapper(); + LogHelper.printVersion("ServerWrapper"); + LogHelper.printLicense("ServerWrapper"); modulesManager = new ModulesManager(wrapper); modulesManager.autoload(Paths.get("srv_modules")); //BungeeCord using modules dir Launcher.modulesManager = modulesManager; diff --git a/libLauncher/src/main/java/ru/gravit/utils/helper/LogHelper.java b/libLauncher/src/main/java/ru/gravit/utils/helper/LogHelper.java index 68bfd8fa..46cfa1a3 100644 --- a/libLauncher/src/main/java/ru/gravit/utils/helper/LogHelper.java +++ b/libLauncher/src/main/java/ru/gravit/utils/helper/LogHelper.java @@ -117,6 +117,10 @@ public static void log(Level level, String message, boolean sub) { public static void printVersion(String product) { println(JANSI ? ansiFormatVersion(product) : formatVersion(product)); } + @LauncherAPI + public static void printLicense(String product) { + println(JANSI ? ansiFormatLicense(product) : formatLicense(product)); + } @LauncherAPI public static synchronized void println(String message) { @@ -234,13 +238,23 @@ private static String ansiFormatLog(Level level, String dateTime, String message private static String ansiFormatVersion(String product) { return new Ansi().bold(). // Setup - fgBright(Color.MAGENTA).a("sashok724's "). // sashok724's + fgBright(Color.MAGENTA).a("GravitLauncher "). // sashok724's + fgBright(Color.BLUE).a("(fork sashok724's Launcher) "). fgBright(Color.CYAN).a(product). // Product fgBright(Color.WHITE).a(" v").fgBright(Color.BLUE).a(Launcher.getVersion().toString()). // Version fgBright(Color.WHITE).a(" (build #").fgBright(Color.RED).a(Launcher.getVersion().build).fgBright(Color.WHITE).a(')'). // Build# reset().toString(); // To string } + private static String ansiFormatLicense(String product) { + return new Ansi().bold(). // Setup + fgBright(Color.MAGENTA).a("License for "). // sashok724's + fgBright(Color.CYAN).a(product). // Product + fgBright(Color.WHITE).a(" GPLv3").fgBright(Color.WHITE).a(". SourceCode: "). // Version + fgBright(Color.YELLOW).a("https://github.com/GravitLauncher/Launcher"). + reset().toString(); // To string + } + private static String formatLog(Level level, String message, String dateTime, boolean sub) { if (sub) { message = ' ' + message; @@ -249,7 +263,10 @@ private static String formatLog(Level level, String message, String dateTime, bo } private static String formatVersion(String product) { - return String.format("sashok724's %s v%s", product, Launcher.getVersion().toString()); + return String.format("GravitLauncher (fork sashok724's Launcher) %s v%s", product, Launcher.getVersion().toString()); + } + private static String formatLicense(String product) { + return String.format("License for %s GPLv3. SourceCode: https://github.com/GravitLauncher/Launcher", product); } static { From e42a88ded904968a3540131cf0d0ab152a9aff03 Mon Sep 17 00:00:00 2001 From: Gravit Date: Tue, 27 Nov 2018 20:33:41 +0700 Subject: [PATCH 3/4] =?UTF-8?q?User-firendly=20=D1=81=D0=BE=D0=BE=D0=B1?= =?UTF-8?q?=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20ServerWrapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/ru/gravit/launcher/server/ServerWrapper.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java b/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java index 681b25d8..1b54ba2a 100644 --- a/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java +++ b/ServerWrapper/src/main/java/ru/gravit/launcher/server/ServerWrapper.java @@ -94,6 +94,10 @@ public static void main(String[] args) throws Throwable { CommonHelper.newThread("Server Auth Thread", true, () -> ServerWrapper.loopAuth(wrapper, config.reconnectCount, config.reconnectSleep)); modulesManager.initModules(); String classname = config.mainclass.isEmpty() ? args[0] : config.mainclass; + if(classname.length() == 0) + { + LogHelper.error("MainClass not found. Please set MainClass for ServerWrapper.cfg or first commandline argument"); + } Class mainClass; if (config.customClassLoader) { @SuppressWarnings("unchecked") @@ -106,7 +110,9 @@ public static void main(String[] args) throws Throwable { String[] real_args = new String[args.length - 1]; System.arraycopy(args, 1, real_args, 0, args.length - 1); modulesManager.postInitModules(); - LogHelper.debug("Invoke main method"); + LogHelper.info("ServerWrapper: Project %s, LaunchServer address: %s port %d. Title: %s",config.projectname,config.address,config.port,config.title); + LogHelper.info("Minecraft Version (for profile): %s",wrapper.profile.getVersion().name); + LogHelper.debug("Invoke main method %s", mainClass.getName()); mainMethod.invoke(real_args); } From a1d7fdb2d4b5efb6ad97565ab16192524edb1f84 Mon Sep 17 00:00:00 2001 From: Ghostlyr Date: Tue, 27 Nov 2018 22:03:19 +0600 Subject: [PATCH 4/4] =?UTF-8?q?=D0=A0=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=BD=D0=B5=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B1=D0=B5=D0=BB=D1=8B=D0=B9=20=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/ru/gravit/launcher/profiles/ClientProfile.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libLauncher/src/main/java/ru/gravit/launcher/profiles/ClientProfile.java b/libLauncher/src/main/java/ru/gravit/launcher/profiles/ClientProfile.java index 6c7d38f7..4342d62d 100644 --- a/libLauncher/src/main/java/ru/gravit/launcher/profiles/ClientProfile.java +++ b/libLauncher/src/main/java/ru/gravit/launcher/profiles/ClientProfile.java @@ -279,7 +279,7 @@ public boolean isUpdateFastCheck() { @LauncherAPI public boolean isWhitelistContains(String username) { if (!useWhitelist.getValue()) return true; - return whitelist.stream(StringConfigEntry.class).anyMatch(e -> e.equals(username)); + return whitelist.stream(StringConfigEntry.class).anyMatch(e -> e.equalsIgnoreCase(username)); } @LauncherAPI