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 d6fb2002..24389d21 100644 --- a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java +++ b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapper.java @@ -103,31 +103,20 @@ public void getProfiles() throws Exception { } } - public void run(String... args) throws Throwable { + + public void initialize() throws Exception { initGson(); AuthRequest.registerProviders(); GetAvailabilityAuthRequest.registerProviders(); OptionalAction.registerProviders(); OptionalTrigger.registerProviders(); - if (args.length > 0 && args[0].equalsIgnoreCase("setup") && !disableSetup) { - LogHelper.debug("Read ServerWrapperConfig.json"); - loadConfig(); - ServerWrapperSetup setup = new ServerWrapperSetup(); - setup.run(); - System.exit(0); - } - if (args.length > 1 && args[0].equalsIgnoreCase("installAuthlib") && !disableSetup) { - LogHelper.debug("Read ServerWrapperConfig.json"); - loadConfig(); - InstallAuthlib command = new InstallAuthlib(); - command. run(args[1]); - System.exit(0); - } LogHelper.debug("Read ServerWrapperConfig.json"); loadConfig(); + } + + public void connect() throws Exception { config.applyEnv(); updateLauncherConfig(); - Launcher.applyLauncherEnv(Objects.requireNonNullElse(config.env, LauncherConfig.LauncherEnvironment.STD)); StdWebSocketService service = StdWebSocketService.initWebSockets(config.address).get(); service.reconnectCallback = () -> { @@ -139,11 +128,6 @@ public void run(String... args) throws Throwable { LogHelper.error(e); } }; - if(config.properties != null) { - for(Map.Entry e : config.properties.entrySet()) { - System.setProperty(e.getKey(), e.getValue()); - } - } Request.setRequestService(service); if (config.logFile != null) LogHelper.addOutput(IOHelper.newWriter(Paths.get(config.logFile), true)); { @@ -156,6 +140,34 @@ public void run(String... args) throws Throwable { if(config.encodedServerEcPublicKey != null) { KeyService.serverEcPublicKey = SecurityHelper.toPublicECDSAKey(config.encodedServerEcPublicKey); } + ClientService.nativePath = config.nativesDir; + ConfigService.serverName = config.serverName; + } + + public void run(String... args) throws Throwable { + initialize(); + if (args.length > 0 && args[0].equalsIgnoreCase("setup") && !disableSetup) { + ServerWrapperSetup setup = new ServerWrapperSetup(); + setup.run(); + System.exit(0); + } + if (args.length > 1 && args[0].equalsIgnoreCase("installAuthlib") && !disableSetup) { + InstallAuthlib command = new InstallAuthlib(); + command. run(args[1]); + System.exit(0); + } + connect(); + if(config.properties != null) { + for(Map.Entry e : config.properties.entrySet()) { + System.setProperty(e.getKey(), e.getValue()); + } + } + if(config.encodedServerRsaPublicKey != null) { + KeyService.serverRsaPublicKey = SecurityHelper.toPublicRSAKey(config.encodedServerRsaPublicKey); + } + if(config.encodedServerEcPublicKey != null) { + KeyService.serverEcPublicKey = SecurityHelper.toPublicECDSAKey(config.encodedServerEcPublicKey); + } String classname = (config.mainclass == null || config.mainclass.isEmpty()) ? args[0] : config.mainclass; if (classname.isEmpty()) { LogHelper.error("MainClass not found. Please set MainClass for ServerWrapper.json or first commandline argument"); @@ -185,8 +197,6 @@ public void run(String... args) throws Throwable { System.arraycopy(args, 1, real_args, 0, args.length - 1); } else real_args = args; Launch launch; - ClientService.nativePath = config.nativesDir; - ConfigService.serverName = config.serverName; if(config.loadNatives != null) { for(String e : config.loadNatives) { System.load(Paths.get(config.nativesDir).resolve(ClientService.findLibrary(e)).toAbsolutePath().toString()); diff --git a/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java new file mode 100644 index 00000000..178797cb --- /dev/null +++ b/ServerWrapper/src/main/java/pro/gravit/launcher/server/ServerWrapperInlineInitializer.java @@ -0,0 +1,9 @@ +package pro.gravit.launcher.server; + +public class ServerWrapperInlineInitializer { + public static void initialize() throws Exception { + ServerWrapper.wrapper = new ServerWrapper(ServerWrapper.Config.class, ServerWrapper.configFile); + ServerWrapper.wrapper.initialize(); + ServerWrapper.wrapper.connect(); + } +}