From d4b69195b3fa846065b075662e464d734d54ebd5 Mon Sep 17 00:00:00 2001 From: Gravita <12893402+gravit0@users.noreply.github.com> Date: Mon, 24 Feb 2025 19:18:49 +0700 Subject: [PATCH] [FEATURE] Support env configuration in ServerWrapper --- .../gravit/launcher/server/ServerWrapper.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java index a1c7e6d5..7d67cdbd 100644 --- a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java +++ b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java @@ -32,6 +32,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; public class ServerWrapper extends JsonConfigurable { @@ -121,6 +122,7 @@ public void run(String... args) throws Throwable { } LogHelper.debug("Read ServerWrapperConfig.json"); loadConfig(); + config.applyEnv(); updateLauncherConfig(); Launcher.applyLauncherEnv(Objects.requireNonNullElse(config.env, LauncherConfig.LauncherEnvironment.STD)); StdWebSocketService service = StdWebSocketService.initWebSockets(config.address).get(); @@ -304,5 +306,37 @@ public void apply() { ConfigService.checkServerConfig.needProperties = checkServerNeedProperties; } } + + public void applyEnv() { + this.authId = applyEnvOrDefault("LAUNCHSERVER_AUTH_ID", this.authId); + this.address = applyEnvOrDefault("LAUNCHSERVER_ADDRESS", this.address); + this.encodedServerEcPublicKey = applyEnvOrDefault("LAUNCHSERVER_EC_PUBLIC_KEY", Base64.getUrlDecoder()::decode, null); + this.encodedServerRsaPublicKey = applyEnvOrDefault("LAUNCHSERVER_RSA_PUBLIC_KEY", Base64.getUrlDecoder()::decode, null); + { + String token = System.getenv("CHECK_SERVER_TOKEN"); + if(token != null) { + if(extendedTokens == null) { + extendedTokens = new HashMap<>(); + } + extendedTokens.put("checkServer", new Request.ExtendedToken(token, 0L)); + } + } + } + + private static String applyEnvOrDefault(String envName, String def) { + String value = System.getenv(envName); + if(value == null) { + return def; + } + return value; + } + + private static T applyEnvOrDefault(String envName, Function mappingFunction, T def) { + String value = System.getenv(envName); + if(value == null) { + return def; + } + return mappingFunction.apply(value); + } } }