Перевод конфигов на Json часть 2

Не комплируется
This commit is contained in:
Gravit 2018-12-23 22:57:40 +07:00
parent 49b085278c
commit 7c35cb0a34
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
4 changed files with 23 additions and 31 deletions

View file

@ -5,10 +5,6 @@
import ru.gravit.launcher.hasher.HashedDir; import ru.gravit.launcher.hasher.HashedDir;
import ru.gravit.launcher.managers.GarbageManager; import ru.gravit.launcher.managers.GarbageManager;
import ru.gravit.launcher.profiles.ClientProfile; import ru.gravit.launcher.profiles.ClientProfile;
import ru.gravit.launcher.serialize.config.ConfigObject;
import ru.gravit.launcher.serialize.config.TextConfigReader;
import ru.gravit.launcher.serialize.config.TextConfigWriter;
import ru.gravit.launcher.serialize.config.entry.*;
import ru.gravit.launcher.serialize.signed.SignedObjectHolder; import ru.gravit.launcher.serialize.signed.SignedObjectHolder;
import ru.gravit.launchserver.auth.AuthLimiter; import ru.gravit.launchserver.auth.AuthLimiter;
import ru.gravit.launchserver.auth.handler.AuthHandler; import ru.gravit.launchserver.auth.handler.AuthHandler;
@ -138,9 +134,9 @@ public static class ExeConf {
} }
private final class ProfilesFileVisitor extends SimpleFileVisitor<Path> { private final class ProfilesFileVisitor extends SimpleFileVisitor<Path> {
private final Collection<SignedObjectHolder<ClientProfile>> result; private final Collection<ClientProfile> result;
private ProfilesFileVisitor(Collection<SignedObjectHolder<ClientProfile>> result) { private ProfilesFileVisitor(Collection<ClientProfile> result) {
this.result = result; this.result = result;
} }
@ -151,12 +147,12 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO
// Read profile // Read profile
ClientProfile profile; ClientProfile profile;
try (BufferedReader reader = IOHelper.newReader(file)) { try (BufferedReader reader = IOHelper.newReader(file)) {
profile = new ClientProfile(TextConfigReader.read(reader, true)); profile = Launcher.gson.fromJson(reader,ClientProfile.class);
} }
profile.verify(); profile.verify();
// Add SIGNED profile to result list // Add SIGNED profile to result list
result.add(new SignedObjectHolder<>(profile, privateKey)); result.add(profile);
return super.visitFile(file, attrs); return super.visitFile(file, attrs);
} }
} }
@ -240,7 +236,7 @@ public static void main(String... args) throws Throwable {
private final AtomicBoolean started = new AtomicBoolean(false); private final AtomicBoolean started = new AtomicBoolean(false);
// Updates and profiles // Updates and profiles
private volatile List<SignedObjectHolder<ClientProfile>> profilesList; private volatile List<ClientProfile> profilesList;
public volatile Map<String, SignedObjectHolder<HashedDir>> updatesDirMap; public volatile Map<String, SignedObjectHolder<HashedDir>> updatesDirMap;
@ -308,7 +304,7 @@ public LaunchServer(Path dir) throws IOException, InvalidKeySpecException {
generateConfigIfNotExists(); generateConfigIfNotExists();
LogHelper.info("Reading LaunchServer config file"); LogHelper.info("Reading LaunchServer config file");
try (BufferedReader reader = IOHelper.newReader(configFile)) { try (BufferedReader reader = IOHelper.newReader(configFile)) {
config = new Config(TextConfigReader.read(reader, true), dir, this); config = Launcher.gson.fromJson(reader,Config.class);
} }
config.verify(); config.verify();
@ -399,7 +395,7 @@ private void generateConfigIfNotExists() throws IOException {
LogHelper.info("Creating LaunchServer config"); LogHelper.info("Creating LaunchServer config");
Config newConfig; Config newConfig;
try (BufferedReader reader = IOHelper.newReader(IOHelper.getResourceURL("ru/gravit/launchserver/defaults/config.cfg"))) { try (BufferedReader reader = IOHelper.newReader(IOHelper.getResourceURL("ru/gravit/launchserver/defaults/config.cfg"))) {
newConfig = new Config(TextConfigReader.read(reader, false), dir, this); newConfig = Launcher.gson.fromJson(reader,Config.class);
} }
// Set server address // Set server address
@ -409,13 +405,13 @@ private void generateConfigIfNotExists() throws IOException {
// Write LaunchServer config // Write LaunchServer config
LogHelper.info("Writing LaunchServer config file"); LogHelper.info("Writing LaunchServer config file");
try (BufferedWriter writer = IOHelper.newWriter(configFile)) { try (BufferedWriter writer = IOHelper.newWriter(configFile)) {
TextConfigWriter.write(newConfig.block, writer, true); Launcher.gson.toJson(newConfig,writer);
} }
} }
@SuppressWarnings("ReturnOfCollectionOrArrayField") @SuppressWarnings("ReturnOfCollectionOrArrayField")
public Collection<SignedObjectHolder<ClientProfile>> getProfiles() { public Collection<ClientProfile> getProfiles() {
return profilesList; return profilesList;
} }
@ -464,11 +460,11 @@ public void syncLauncherBinaries() throws IOException {
public void syncProfilesDir() throws IOException { public void syncProfilesDir() throws IOException {
LogHelper.info("Syncing profiles dir"); LogHelper.info("Syncing profiles dir");
List<SignedObjectHolder<ClientProfile>> newProfies = new LinkedList<>(); List<ClientProfile> newProfies = new LinkedList<>();
IOHelper.walk(profilesDir, new ProfilesFileVisitor(newProfies), false); IOHelper.walk(profilesDir, new ProfilesFileVisitor(newProfies), false);
// Sort and set new profiles // Sort and set new profiles
newProfies.sort(Comparator.comparing(a -> a.object)); newProfies.sort(Comparator.comparing(a -> a));
profilesList = Collections.unmodifiableList(newProfies); profilesList = Collections.unmodifiableList(newProfies);
} }

View file

@ -17,9 +17,9 @@ public final class ProfilesRequest extends Request<ProfilesRequest.Result> {
public static final class Result { public static final class Result {
@LauncherAPI @LauncherAPI
public final List<SignedObjectHolder<ClientProfile>> profiles; public final List<ClientProfile> profiles;
private Result(List<SignedObjectHolder<ClientProfile>> profiles) { private Result(List<ClientProfile> profiles) {
this.profiles = Collections.unmodifiableList(profiles); this.profiles = Collections.unmodifiableList(profiles);
} }
} }
@ -46,7 +46,7 @@ protected Result requestDo(HInput input, HOutput output) throws Exception {
readError(input); readError(input);
int count = input.readLength(0); int count = input.readLength(0);
List<SignedObjectHolder<ClientProfile>> profiles = new ArrayList<>(count); List<ClientProfile> profiles = new ArrayList<>(count);
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
profiles.add(new SignedObjectHolder<>(input, config.publicKey, ClientProfile.RO_ADAPTER)); profiles.add(new SignedObjectHolder<>(input, config.publicKey, ClientProfile.RO_ADAPTER));

View file

@ -8,14 +8,6 @@
import ru.gravit.launcher.profiles.ClientProfile; import ru.gravit.launcher.profiles.ClientProfile;
import ru.gravit.launcher.request.auth.AuthServerRequest; import ru.gravit.launcher.request.auth.AuthServerRequest;
import ru.gravit.launcher.request.update.ProfilesRequest; import ru.gravit.launcher.request.update.ProfilesRequest;
import ru.gravit.launcher.serialize.config.ConfigObject;
import ru.gravit.launcher.serialize.config.TextConfigReader;
import ru.gravit.launcher.serialize.config.TextConfigWriter;
import ru.gravit.launcher.serialize.config.entry.BlockConfigEntry;
import ru.gravit.launcher.serialize.config.entry.BooleanConfigEntry;
import ru.gravit.launcher.serialize.config.entry.IntegerConfigEntry;
import ru.gravit.launcher.serialize.config.entry.StringConfigEntry;
import ru.gravit.launcher.serialize.signed.SignedObjectHolder;
import ru.gravit.utils.PublicURLClassLoader; import ru.gravit.utils.PublicURLClassLoader;
import ru.gravit.utils.helper.CommonHelper; import ru.gravit.utils.helper.CommonHelper;
import ru.gravit.utils.helper.IOHelper; import ru.gravit.utils.helper.IOHelper;
@ -50,11 +42,11 @@ public static boolean auth(ServerWrapper wrapper) {
Boolean auth = new AuthServerRequest(cfg, config.login, SecurityHelper.newRSAEncryptCipher(cfg.publicKey).doFinal(IOHelper.encode(config.password)), 0, config.title).request(); Boolean auth = new AuthServerRequest(cfg, config.login, SecurityHelper.newRSAEncryptCipher(cfg.publicKey).doFinal(IOHelper.encode(config.password)), 0, config.title).request();
if (auth == null) throw new Exception("Non auth!"); // security check if (auth == null) throw new Exception("Non auth!"); // security check
ProfilesRequest.Result result = new ProfilesRequest(cfg).request(); ProfilesRequest.Result result = new ProfilesRequest(cfg).request();
for (SignedObjectHolder<ClientProfile> p : result.profiles) { for (ClientProfile p : result.profiles) {
LogHelper.debug("Get profile: %s", p.object.getTitle()); LogHelper.debug("Get profile: %s", p.getTitle());
if (p.object.getTitle().equals(config.title)) { if (p.getTitle().equals(config.title)) {
wrapper.profile = p.object; wrapper.profile = p;
Launcher.profile = p.object; Launcher.profile = p;
LogHelper.debug("Found profile: %s", Launcher.profile.getTitle()); LogHelper.debug("Found profile: %s", Launcher.profile.getTitle());
break; break;
} }

View file

@ -1,5 +1,7 @@
package ru.gravit.launcher; package ru.gravit.launcher;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import ru.gravit.launcher.modules.ModulesManagerInterface; import ru.gravit.launcher.modules.ModulesManagerInterface;
import ru.gravit.launcher.profiles.ClientProfile; import ru.gravit.launcher.profiles.ClientProfile;
import ru.gravit.launcher.serialize.HInput; import ru.gravit.launcher.serialize.HInput;
@ -61,6 +63,8 @@ public final class Launcher {
public static int PATCH = 0; public static int PATCH = 0;
public static int BUILD = 3; public static int BUILD = 3;
public static Version.Type RELEASE = Version.Type.DEV; public static Version.Type RELEASE = Version.Type.DEV;
public static GsonBuilder gsonBuilder;
public static Gson gson;
@LauncherAPI @LauncherAPI
public static LauncherConfig getConfig() { public static LauncherConfig getConfig() {