[FEATURE] ServerWrapperSetup Agent

This commit is contained in:
Gravita 2021-03-20 00:57:24 +07:00
parent 25d88ba30d
commit 6da27bdf99
3 changed files with 15 additions and 7 deletions

View file

@ -17,7 +17,6 @@
public class ServerAgent {
public static final Boolean isAutoloadLibraries = Boolean.getBoolean(System.getProperty("serverwrapper,agentlibrariesload", "false"));
public static final Boolean isAgentProxy = Boolean.getBoolean(System.getProperty("serverwrapper,agentproxy", "false"));
public static Instrumentation inst = null;
private static boolean isAgentStarted = false;
@ -47,8 +46,8 @@ public static void premain(String agentArgument, Instrumentation instrumentation
Path libraries = Paths.get("libraries");
if (IOHelper.exists(libraries)) loadLibraries(libraries);
}
if (isAgentProxy) {
String proxyClassName = System.getProperty("serverwrapper.agentproxyclass");
String proxyClassName = System.getProperty("serverwrapper.agentproxy", null);
if (proxyClassName != null) {
Class<?> proxyClass;
try {
proxyClass = Class.forName(proxyClassName);

View file

@ -249,7 +249,6 @@ public Config getDefaultConfig() {
newConfig.stopOnError = true;
newConfig.reconnectCount = 10;
newConfig.reconnectSleep = 1000;
newConfig.websocket = new WebSocketConf();
newConfig.address = "ws://localhost:9274/api";
newConfig.env = LauncherConfig.LauncherEnvironment.STD;
return newConfig;
@ -261,7 +260,6 @@ public static final class Config {
public String projectname;
public String address;
public String serverName;
public WebSocketConf websocket;
public int reconnectCount;
public int reconnectSleep;
public boolean customClassPath;

View file

@ -29,11 +29,13 @@ public void run() throws IOException {
String jarName = commands.commandHandler.readLine();
Path jarPath = Paths.get(jarName);
String mainClassName;
String agentClassName;
try (JarFile file = new JarFile(jarPath.toFile())) {
URL jarURL = jarPath.toUri().toURL();
urlClassLoader = new PublicURLClassLoader(new URL[]{jarURL});
LogHelper.info("Check server jar MainClass");
mainClassName = file.getManifest().getMainAttributes().getValue("Main-Class");
agentClassName = file.getManifest().getMainAttributes().getValue("Premain-Class");
if (mainClassName == null) {
LogHelper.error("Main-Class not found in MANIFEST");
return;
@ -46,6 +48,9 @@ public void run() throws IOException {
}
}
LogHelper.info("Found MainClass %s", mainClassName);
if(agentClassName != null) {
LogHelper.info("Found PremainClass %s", agentClassName);
}
System.out.println("Print your server name:");
wrapper.config.serverName = commands.commandHandler.readLine();
System.out.println("Print launchserver websocket host( ws://host:port/api ):");
@ -82,14 +87,20 @@ public void run() throws IOException {
ServerWrapper.modulesManager.invokeEvent(new ServerWrapperSetupEvent(this));
try (Writer writer = IOHelper.newWriter(startScript)) {
if (JVMHelper.OS_TYPE == JVMHelper.OS.LINUX) {
writer.append("#!/bin/sh\n\n");
writer.append("#!/bin/bash\n\n");
}
writer.append("java ");
writer.append(IOHelper.resolveJavaBin(Paths.get(System.getProperty("java.home"))).toAbsolutePath().toString());
writer.append(" ");
if (mainClassName.contains("bungee")) {
LogHelper.info("Found BungeeCord mainclass. Modules dir change to modules_srv");
writer.append(JVMHelper.jvmProperty("serverwrapper.modulesDir", "modules_srv"));
writer.append(" ");
}
if(agentClassName != null) {
writer.append("-javaagent:ServerWrapper.jar ");
writer.append("-Dserverwrapper.agentproxy=".concat(agentClassName));
writer.append(" ");
}
//More args
writer.append("-cp ");
String pathServerWrapper = IOHelper.getCodeSource(ServerWrapper.class).getFileName().toString();