LauncherAPI/ServerWrapper модуль

This commit is contained in:
Gravit 2018-09-25 20:21:08 +07:00
parent c856d351f1
commit f83afcd8e1
24 changed files with 57 additions and 22 deletions

View file

@ -21,7 +21,7 @@
} }
dependencies { dependencies {
compile project(':libLauncher') compile project(':LauncherAPI')
compile 'org.javassist:javassist:3.23.1-GA' compile 'org.javassist:javassist:3.23.1-GA'
compileOnly 'com.google.code.gson:gson:2.8.5' compileOnly 'com.google.code.gson:gson:2.8.5'
compileOnly 'com.google.guava:guava:26.0-jre' compileOnly 'com.google.guava:guava:26.0-jre'

View file

@ -42,7 +42,6 @@
import ru.gravit.launcher.request.update.LauncherRequest; import ru.gravit.launcher.request.update.LauncherRequest;
import ru.gravit.launcher.serialize.HInput; import ru.gravit.launcher.serialize.HInput;
import ru.gravit.launcher.serialize.HOutput; import ru.gravit.launcher.serialize.HOutput;
import ru.gravit.launcher.serialize.SerializeLimits;
import ru.gravit.launcher.serialize.signed.SignedObjectHolder; import ru.gravit.launcher.serialize.signed.SignedObjectHolder;
import ru.gravit.launcher.serialize.stream.StreamObject; import ru.gravit.launcher.serialize.stream.StreamObject;
@ -93,7 +92,7 @@ public Params(byte[] launcherSign, Path assetDir, Path clientDir, PlayerProfile
boolean autoEnter, boolean fullScreen, int ram, int width, int height) { boolean autoEnter, boolean fullScreen, int ram, int width, int height) {
this.launcherSign = launcherSign.clone(); this.launcherSign = launcherSign.clone();
this.updateOptional = new HashSet<>(); this.updateOptional = new HashSet<>();
for(ClientProfile.MarkedString s : ClientLauncher.profile.getOptional()) for(ClientProfile.MarkedString s : Launcher.profile.getOptional())
{ {
if(s.mark) updateOptional.add(s); if(s.mark) updateOptional.add(s);
} }
@ -173,8 +172,6 @@ public void write(HOutput output) throws IOException {
@LauncherAPI @LauncherAPI
public static final String SKIN_URL_PROPERTY = "skinURL"; public static final String SKIN_URL_PROPERTY = "skinURL";
@LauncherAPI @LauncherAPI
public static ClientProfile profile;
@LauncherAPI
public static final String SKIN_DIGEST_PROPERTY = "skinDigest"; public static final String SKIN_DIGEST_PROPERTY = "skinDigest";
@LauncherAPI @LauncherAPI
@ -443,7 +440,7 @@ public static void main(String... args) throws Throwable {
Files.delete(paramsFile); Files.delete(paramsFile);
} }
} }
ClientLauncher.profile = profile.object; Launcher.profile = profile.object;
Launcher.modulesManager.initModules(); Launcher.modulesManager.initModules();
// Verify ClientLauncher sign and classpath // Verify ClientLauncher sign and classpath
LogHelper.debug("Verifying ClientLauncher sign and classpath"); LogHelper.debug("Verifying ClientLauncher sign and classpath");
@ -466,7 +463,7 @@ public static void main(String... args) throws Throwable {
// Verify current state of all dirs // Verify current state of all dirs
//verifyHDir(IOHelper.JVM_DIR, jvmHDir.object, null, digest); //verifyHDir(IOHelper.JVM_DIR, jvmHDir.object, null, digest);
HashedDir hdir = clientHDir.object; HashedDir hdir = clientHDir.object;
for(ClientProfile.MarkedString s : ClientLauncher.profile.getOptional()) for(ClientProfile.MarkedString s : Launcher.profile.getOptional())
{ {
if(params.updateOptional.contains(s)) s.mark = true; if(params.updateOptional.contains(s)) s.mark = true;
else hdir.removeR(s.string); else hdir.removeR(s.string);
@ -509,7 +506,7 @@ private static LinkedList<Path> resolveClassPathList(Path clientDir, String... c
@LauncherAPI @LauncherAPI
public static void setProfile(ClientProfile profile) { public static void setProfile(ClientProfile profile) {
ClientLauncher.profile = profile; Launcher.profile = profile;
LogHelper.debug("New Profile name: %s", profile.getTitle()); LogHelper.debug("New Profile name: %s", profile.getTitle());
} }

6
LauncherAPI/build.gradle Normal file
View file

@ -0,0 +1,6 @@
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
dependencies {
compile project(':libLauncher')
}

View file

@ -2,9 +2,9 @@
import java.io.IOException; import java.io.IOException;
import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherAPI; import ru.gravit.launcher.LauncherAPI;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.utils.helper.JVMHelper; import ru.gravit.utils.helper.JVMHelper;
import ru.gravit.utils.helper.SecurityHelper; import ru.gravit.utils.helper.SecurityHelper;
import ru.gravit.utils.helper.VerifyHelper; import ru.gravit.utils.helper.VerifyHelper;
@ -67,7 +67,7 @@ public Integer getType() {
@Override @Override
protected Result requestDo(HInput input, HOutput output) throws IOException { protected Result requestDo(HInput input, HOutput output) throws IOException {
output.writeString(login, SerializeLimits.MAX_LOGIN); output.writeString(login, SerializeLimits.MAX_LOGIN);
output.writeString(ClientLauncher.profile.getTitle(), SerializeLimits.MAX_CLIENT); output.writeString(Launcher.profile.getTitle(), SerializeLimits.MAX_CLIENT);
output.writeInt(auth_id); output.writeInt(auth_id);
output.writeLong(JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE ? GuardBind.avnGetHddId() : 0); output.writeLong(JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE ? GuardBind.avnGetHddId() : 0);
output.writeLong(JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE ? GuardBind.avnGetCpuid() : 0); output.writeLong(JVMHelper.OS_TYPE == JVMHelper.OS.MUSTDIE ? GuardBind.avnGetCpuid() : 0);

View file

@ -2,9 +2,9 @@
import java.io.IOException; import java.io.IOException;
import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherAPI; import ru.gravit.launcher.LauncherAPI;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.utils.helper.LogHelper; import ru.gravit.utils.helper.LogHelper;
import ru.gravit.utils.helper.VerifyHelper; import ru.gravit.utils.helper.VerifyHelper;
import ru.gravit.launcher.profiles.PlayerProfile; import ru.gravit.launcher.profiles.PlayerProfile;
@ -39,12 +39,12 @@ public Integer getType() {
protected PlayerProfile requestDo(HInput input, HOutput output) throws IOException { protected PlayerProfile requestDo(HInput input, HOutput output) throws IOException {
output.writeString(username, SerializeLimits.MAX_LOGIN); output.writeString(username, SerializeLimits.MAX_LOGIN);
output.writeASCII(serverID, SerializeLimits.MAX_SERVERID); // 1 char for minus sign output.writeASCII(serverID, SerializeLimits.MAX_SERVERID); // 1 char for minus sign
if(ClientLauncher.profile == null) { if(Launcher.profile == null) {
LogHelper.error("Profile is null. Title is not net."); LogHelper.error("Profile is null. Title is not net.");
output.writeString("", SerializeLimits.MAX_CLIENT); output.writeString("", SerializeLimits.MAX_CLIENT);
} }
else else
output.writeString(ClientLauncher.profile.getTitle(), SerializeLimits.MAX_CLIENT); output.writeString(Launcher.profile.getTitle(), SerializeLimits.MAX_CLIENT);
output.flush(); output.flush();
// Read response // Read response

View file

@ -16,9 +16,9 @@
import java.util.Queue; import java.util.Queue;
import java.util.zip.InflaterInputStream; import java.util.zip.InflaterInputStream;
import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherAPI; import ru.gravit.launcher.LauncherAPI;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.launcher.hasher.FileNameMatcher; import ru.gravit.launcher.hasher.FileNameMatcher;
import ru.gravit.launcher.hasher.HashedDir; import ru.gravit.launcher.hasher.HashedDir;
import ru.gravit.launcher.hasher.HashedEntry; import ru.gravit.launcher.hasher.HashedEntry;
@ -307,7 +307,7 @@ protected SignedObjectHolder<HashedDir> requestDo(HInput input, HOutput output)
// Get diff between local and remote dir // Get diff between local and remote dir
SignedObjectHolder<HashedDir> remoteHDirHolder = new SignedObjectHolder<>(input, config.publicKey, HashedDir::new); SignedObjectHolder<HashedDir> remoteHDirHolder = new SignedObjectHolder<>(input, config.publicKey, HashedDir::new);
HashedDir hackHackedDir = remoteHDirHolder.object; HashedDir hackHackedDir = remoteHDirHolder.object;
ClientLauncher.profile.pushOptional(hackHackedDir,!ClientLauncher.profile.isUpdateFastCheck()); Launcher.profile.pushOptional(hackHackedDir,!Launcher.profile.isUpdateFastCheck());
HashedDir.Diff diff = hackHackedDir.diff(localDir, matcher); HashedDir.Diff diff = hackHackedDir.diff(localDir, matcher);
totalSize = diff.mismatch.size(); totalSize = diff.mismatch.size();
boolean compress = input.readBoolean(); boolean compress = input.readBoolean();

View file

@ -4,9 +4,9 @@
import java.util.Objects; import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherAPI; import ru.gravit.launcher.LauncherAPI;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.launcher.profiles.PlayerProfile; import ru.gravit.launcher.profiles.PlayerProfile;
import ru.gravit.launcher.request.Request; import ru.gravit.launcher.request.Request;
import ru.gravit.launcher.request.RequestType; import ru.gravit.launcher.request.RequestType;
@ -36,7 +36,7 @@ public Integer getType() {
@Override @Override
protected PlayerProfile requestDo(HInput input, HOutput output) throws IOException { protected PlayerProfile requestDo(HInput input, HOutput output) throws IOException {
output.writeUUID(uuid); output.writeUUID(uuid);
output.writeString(ClientLauncher.profile.getTitle(), SerializeLimits.MAX_CLIENT); output.writeString(Launcher.profile.getTitle(), SerializeLimits.MAX_CLIENT);
output.flush(); output.flush();
// Return profile // Return profile

View file

@ -2,9 +2,9 @@
import java.io.IOException; import java.io.IOException;
import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherAPI; import ru.gravit.launcher.LauncherAPI;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.utils.helper.VerifyHelper; import ru.gravit.utils.helper.VerifyHelper;
import ru.gravit.launcher.profiles.PlayerProfile; import ru.gravit.launcher.profiles.PlayerProfile;
import ru.gravit.launcher.request.Request; import ru.gravit.launcher.request.Request;
@ -35,7 +35,7 @@ public Integer getType() {
@Override @Override
protected PlayerProfile requestDo(HInput input, HOutput output) throws IOException { protected PlayerProfile requestDo(HInput input, HOutput output) throws IOException {
output.writeString(username, SerializeLimits.MAX_LOGIN); output.writeString(username, SerializeLimits.MAX_LOGIN);
output.writeString(ClientLauncher.profile.getTitle(), SerializeLimits.MAX_CLIENT); output.writeString(Launcher.profile.getTitle(), SerializeLimits.MAX_CLIENT);
output.flush(); output.flush();
// Return profile // Return profile
return input.readBoolean() ? new PlayerProfile(input) : null; return input.readBoolean() ? new PlayerProfile(input) : null;

View file

@ -0,0 +1,28 @@
String mainClassName = "ru.gravit.launcher.server.ServerWrapper"
String mainAgentName = "ru.gravit.launcher.server.ServerAgent"
repositories {
maven {
url "http://repo.spring.io/plugins-release/"
}
}
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
jar {
from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
manifest.attributes("Main-Class": mainClassName,
"Premain-Class": mainAgentName,
"Can-Redefine-Classes": "true",
"Can-Retransform-Classes": "true",
"Can-Set-Native-Method-Prefix": "true")
}
dependencies {
compile project(':LauncherAPI')
compile 'org.javassist:javassist:3.23.1-GA'
compileOnly 'com.google.code.gson:gson:2.8.5'
compileOnly 'com.google.guava:guava:26.0-jre'
}

View file

@ -12,7 +12,6 @@
import ru.gravit.launcher.Launcher; import ru.gravit.launcher.Launcher;
import ru.gravit.launcher.LauncherConfig; import ru.gravit.launcher.LauncherConfig;
import ru.gravit.launcher.client.ClientLauncher;
import ru.gravit.launcher.serialize.config.ConfigObject; import ru.gravit.launcher.serialize.config.ConfigObject;
import ru.gravit.launcher.serialize.config.TextConfigReader; import ru.gravit.launcher.serialize.config.TextConfigReader;
import ru.gravit.launcher.serialize.config.TextConfigWriter; import ru.gravit.launcher.serialize.config.TextConfigWriter;
@ -47,8 +46,8 @@ public static void main(String[] args) throws Throwable {
LogHelper.debug("Get profile: %s", p.object.getTitle()); LogHelper.debug("Get profile: %s", p.object.getTitle());
if (p.object.getTitle().equals(config.title)) { if (p.object.getTitle().equals(config.title)) {
wrapper.profile = p.object; wrapper.profile = p.object;
ClientLauncher.setProfile(p.object); Launcher.profile = p.object;
LogHelper.debug("Found profile: %s", ClientLauncher.profile.getTitle()); LogHelper.debug("Found profile: %s", Launcher.profile.getTitle());
break; break;
} }
} }

View file

@ -9,6 +9,7 @@
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import ru.gravit.launcher.profiles.ClientProfile;
import ru.gravit.utils.Version; import ru.gravit.utils.Version;
import ru.gravit.utils.helper.IOHelper; import ru.gravit.utils.helper.IOHelper;
import ru.gravit.utils.helper.SecurityHelper; import ru.gravit.utils.helper.SecurityHelper;
@ -39,6 +40,8 @@ static int readBuildNumber() {
@LauncherAPI @LauncherAPI
public static final String CONFIG_FILE = "config.bin"; public static final String CONFIG_FILE = "config.bin";
@LauncherAPI @LauncherAPI
public static ClientProfile profile;
@LauncherAPI
public static final String INIT_SCRIPT_FILE = "init.js"; public static final String INIT_SCRIPT_FILE = "init.js";
@LauncherAPI @LauncherAPI
public static final String API_SCRIPT_FILE = "engine/api.js"; public static final String API_SCRIPT_FILE = "engine/api.js";

View file

@ -2,6 +2,8 @@
include 'Launcher' include 'Launcher'
include 'libLauncher' include 'libLauncher'
include 'LauncherAPI'
include 'ServerWrapper'
include 'LaunchServer' include 'LaunchServer'
include 'modules' include 'modules'
file('modules').eachDir { sub -> file('modules').eachDir { sub ->