[ANY] Чистка кода

This commit is contained in:
xDark 2019-08-13 21:02:33 +03:00
parent 6a590eb922
commit 7d279da5af
27 changed files with 162 additions and 94 deletions

View file

@ -33,6 +33,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.zip.CRC32;
import io.netty.channel.epoll.Epoll;
import org.bouncycastle.crypto.util.PrivateKeyFactory;
import org.bouncycastle.operator.OperatorCreationException;
@ -359,7 +360,7 @@ public static void main(String... args) throws Throwable {
LogHelper.printLicense("LaunchServer");
if (!StarterAgent.isAgentStarted()) {
LogHelper.error("StarterAgent is not started!");
LogHelper.error("Your should add to JVM options this option: `-javaagent:LaunchServer.jar`");
LogHelper.error("You should add to JVM options this option: `-javaagent:LaunchServer.jar`");
}
// Start LaunchServer
@ -810,7 +811,7 @@ private void generateConfigIfNotExists(boolean testEnv) throws IOException {
newConfig.netty.fileServerEnabled = true;
newConfig.netty.binds = new NettyBindAddress[]{new NettyBindAddress("0.0.0.0", 9274)};
newConfig.netty.performance = new NettyPerformanceConfig();
newConfig.netty.performance.usingEpoll = JVMHelper.OS_TYPE == JVMHelper.OS.LINUX; //Only linux
newConfig.netty.performance.usingEpoll = Epoll.isAvailable();
newConfig.netty.performance.bossThread = 2;
newConfig.netty.performance.workerThread = 8;

View file

@ -153,11 +153,15 @@ public void onCheckInfo(OshiHWID hwid, String username, Connection c) throws HWI
db_hwid.HWDiskSerial = set.getString(hwidFieldHWDiskSerial);
db_hwid.totalMemory = Long.valueOf(set.getString(hwidFieldTotalMemory));
db_hwid.macAddr = set.getString(hwidFieldMAC);
LogHelper.dev("Compare HWID: %s vs %s", hwid.getSerializeString(), db_hwid.getSerializeString());
if (LogHelper.isDevEnabled()) {
LogHelper.dev("Compare HWID: %s vs %s", hwid.getSerializeString(), db_hwid.getSerializeString());
}
int compare_point = hwid.compare(db_hwid);
if (compare_point < compare) continue;
else {
LogHelper.debug("User %s hwid check: found compare %d in %d", username, compare_point, set.getInt("id"));
if (LogHelper.isDevEnabled()) {
LogHelper.debug("User %s hwid check: found compare %d in %d", username, compare_point, set.getInt("id"));
}
}
}
if (oneCompareMode) isOne = true;
@ -175,7 +179,9 @@ public void onCheckInfo(OshiHWID hwid, String username, Connection c) throws HWI
}
public void setIsBanned(HWID hwid, boolean isBanned) {
LogHelper.debug("%s Request HWID: %s", isBanned ? "Ban" : "UnBan", hwid.toString());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("%s Request HWID: %s", isBanned ? "Ban" : "UnBan", hwid.toString());
}
if (hwid instanceof OshiHWID) {
OshiHWID oshiHWID = (OshiHWID) hwid;
try (Connection c = mySQLHolder.getConnection()) {
@ -214,7 +220,9 @@ public void unban(List<HWID> list) {
public List<HWID> getHwid(String username) {
ArrayList<HWID> list = new ArrayList<>();
try (Connection c = mySQLHolder.getConnection()) {
LogHelper.debug("Try find HWID from username %s", username);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Try find HWID from username %s", username);
}
PreparedStatement s = c.prepareStatement(String.format("SELECT %s, %s FROM `%s` WHERE `%s` = ? LIMIT 1", userFieldHwid, userFieldLogin, tableUsers, userFieldLogin));
s.setString(1, username);

View file

@ -20,11 +20,15 @@ public RequestTextureProvider(String skinURL, String cloakURL) {
}
private static Texture getTexture(String url, boolean cloak) throws IOException {
LogHelper.debug("Getting texture: '%s'", url);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Getting texture: '%s'", url);
}
try {
return new Texture(url, cloak);
} catch (FileNotFoundException ignored) {
LogHelper.subDebug("Texture not found :(");
if (LogHelper.isDebugEnabled()) {
LogHelper.subDebug("Texture not found :(");
}
return null; // Simply not found
}
}

View file

@ -4,6 +4,7 @@
import java.io.Writer;
import java.lang.reflect.Type;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@ -41,7 +42,7 @@ public void invoke(String... args) throws Exception {
public void invoke(String... args) throws Exception {
verifyArgs(args, 1);
LogHelper.info("Sessions write to %s", args[0]);
Set<Client> clientSet = server.sessionManager.getSessions();
Collection<Client> clientSet = server.sessionManager.getSessions();
try (Writer writer = IOHelper.newWriter(Paths.get(args[0]))) {
Launcher.gsonManager.configGson.toJson(clientSet, writer);
}

View file

@ -1,7 +1,11 @@
package pro.gravit.launchserver.manangers;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import pro.gravit.launcher.NeedGarbageCollection;
import pro.gravit.launchserver.socket.Client;
@ -10,53 +14,50 @@ public class SessionManager implements NeedGarbageCollection {
public static final long SESSION_TIMEOUT = 3 * 60 * 60 * 1000; // 3 часа
public static final boolean GARBAGE_SERVER = Boolean.parseBoolean(System.getProperty("launcher.garbageSessionsServer", "false"));
private HashSet<Client> clientSet = new HashSet<>(128);
private Map<Long, Client> clientSet = new HashMap<>(128);
public boolean addClient(Client client) {
clientSet.add(client);
clientSet.put(client.session, client);
return true;
}
@Override
public void garbageCollection() {
long time = System.currentTimeMillis();
clientSet.removeIf(c -> (c.timestamp + SESSION_TIMEOUT < time) && ((c.type == Client.Type.USER) || ((c.type == Client.Type.SERVER) && GARBAGE_SERVER)));
clientSet.entrySet().removeIf(entry -> {
Client c = entry.getValue();
return (c.timestamp + SESSION_TIMEOUT < time) && ((c.type == Client.Type.USER) || ((c.type == Client.Type.SERVER) && GARBAGE_SERVER));
});
}
public Client getClient(long session) {
for (Client c : clientSet)
if (c.session == session) return c;
return null;
return clientSet.get(session);
}
public Client getOrNewClient(long session) {
for (Client c : clientSet)
if (c.session == session) return c;
Client newClient = new Client(session);
clientSet.add(newClient);
return newClient;
return clientSet.computeIfAbsent(session, Client::new);
}
public void updateClient(long session) {
for (Client c : clientSet) {
if (c.session == session) {
c.up();
return;
}
Client c = clientSet.get(session);
if (c != null) {
c.up();
return;
}
Client newClient = new Client(session);
clientSet.add(newClient);
clientSet.put(session, newClient);
}
public Set<Client> getSessions() {
return clientSet;
// TODO: removeme
return new HashSet<>(clientSet.values());
}
public void loadSessions(Set<Client> set) {
clientSet.addAll(set);
clientSet.putAll(set.stream().collect(Collectors.toMap(c -> c.session, Function.identity())));
}
}

View file

@ -7,6 +7,7 @@
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.epoll.Epoll;
import io.netty.channel.group.DefaultChannelGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.codec.http.HttpObjectAggregator;
@ -20,7 +21,6 @@
import pro.gravit.launchserver.socket.handlers.WebSocketFrameHandler;
import pro.gravit.launchserver.socket.handlers.fileserver.FileServerHandler;
import pro.gravit.utils.BiHookSet;
import pro.gravit.utils.helper.JVMHelper;
import pro.gravit.utils.helper.LogHelper;
public class LauncherNettyServer implements AutoCloseable {
@ -38,16 +38,16 @@ public LauncherNettyServer(LaunchServer server) {
{
LogHelper.debug("Netty: Epoll enabled");
}
if(config.performance.usingEpoll && JVMHelper.OS_TYPE != JVMHelper.OS.LINUX)
if(config.performance.usingEpoll && !Epoll.isAvailable())
{
LogHelper.error("netty,perfomance.usingEpoll work only Linux systems");
LogHelper.error("netty,perfomance.usingEpoll is not available: ", Epoll.unavailabilityCause());
}
bossGroup = NettyObjectFactory.newEventLoopGroup(config.performance.bossThread);
workerGroup = NettyObjectFactory.newEventLoopGroup(config.performance.workerThread);
serverBootstrap = new ServerBootstrap();
service = new WebSocketService(new DefaultChannelGroup(GlobalEventExecutor.INSTANCE), server);
serverBootstrap.group(bossGroup, workerGroup)
.channel(NettyObjectFactory.getServerSocketChannelClass())
.channelFactory(NettyObjectFactory.getServerSocketChannelFactory())
.handler(new LoggingHandler(config.logLevel))
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override

View file

@ -1,5 +1,6 @@
package pro.gravit.launchserver.socket;
import io.netty.channel.ChannelFactory;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.ServerChannel;
import io.netty.channel.epoll.EpollEventLoopGroup;
@ -20,12 +21,12 @@ public static EventLoopGroup newEventLoopGroup(int threads)
else
return new NioEventLoopGroup(threads);
}
public static Class<? extends ServerChannel> getServerSocketChannelClass()
public static ChannelFactory<? extends ServerChannel> getServerSocketChannelFactory()
{
if(epoll)
return EpollServerSocketChannel.class;
return EpollServerSocketChannel::new;
else
return NioServerSocketChannel.class;
return NioServerSocketChannel::new;
}
}

View file

@ -9,6 +9,7 @@
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.group.ChannelGroup;
import io.netty.channel.group.ChannelMatchers;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import pro.gravit.launcher.Launcher;
import pro.gravit.launcher.events.ExceptionEvent;
@ -120,22 +121,22 @@ public static void registerResponses() {
}
public void sendObject(ChannelHandlerContext ctx, Object obj) {
ctx.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, WebSocketEvent.class)));
ctx.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, WebSocketEvent.class)), ctx.voidPromise());
}
public void sendObject(ChannelHandlerContext ctx, Object obj, Type type) {
ctx.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, type)));
ctx.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, type)), ctx.voidPromise());
}
public void sendObjectAll(Object obj) {
for (Channel ch : channels) {
ch.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, WebSocketEvent.class)));
ch.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, WebSocketEvent.class)), ch.voidPromise());
}
}
public void sendObjectAll(Object obj, Type type) {
for (Channel ch : channels) {
ch.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, type)));
ch.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj, type)), ch.voidPromise());
}
}
@ -148,7 +149,7 @@ public void sendObjectAndClose(ChannelHandlerContext ctx, Object obj, Type type)
}
public void sendEvent(EventResult obj) {
channels.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj)));
channels.writeAndFlush(new TextWebSocketFrame(gson.toJson(obj)), ChannelMatchers.all(), true);
}
public static class EventResult implements WebSocketEvent {

View file

@ -36,7 +36,9 @@ protected void decode(ChannelHandlerContext ctx, HttpRequest msg, List<Object> o
realIP = headers.get("X-Real-IP");
}
if (realIP != null) {
LogHelper.dev("Real IP address %s", realIP);
if (LogHelper.isDevEnabled()) {
LogHelper.dev("Real IP address %s", realIP);
}
context.ip = realIP;
} else LogHelper.error("IpForwarding error. Headers not found");
out.add(msg);

View file

@ -2,6 +2,7 @@
import java.util.concurrent.TimeUnit;
import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
@ -40,11 +41,14 @@ public void setClient(Client client) {
@Override
public void channelActive(ChannelHandlerContext ctx) {
LogHelper.dev("New client %s", IOHelper.getIP(ctx.channel().remoteAddress()));
if (LogHelper.isDevEnabled()) {
LogHelper.dev("New client %s", IOHelper.getIP(ctx.channel().remoteAddress()));
}
client = new Client(0);
service.registerClient(ctx.channel());
Channel ch = ctx.channel();
service.registerClient(ch);
ctx.executor().schedule(() -> {
ctx.channel().writeAndFlush(new PingWebSocketFrame());
ch.writeAndFlush(new PingWebSocketFrame(), ch.voidPromise());
}, 30L, TimeUnit.SECONDS);
}
@ -58,7 +62,9 @@ protected void channelRead0(ChannelHandlerContext ctx, WebSocketFrame frame) {
ctx.channel().writeAndFlush(new PongWebSocketFrame(frame.content()));
//return;
} else if ((frame instanceof PongWebSocketFrame)) {
LogHelper.dev("WebSocket Client received pong");
if (LogHelper.isDevEnabled()) {
LogHelper.dev("WebSocket Client received pong");
}
} else if ((frame instanceof CloseWebSocketFrame)) {
ctx.channel().close();
} else {

View file

@ -112,6 +112,7 @@ public void execute(ChannelHandlerContext ctx, Client clientData) throws Excepti
result.permissions = clientData.permissions;
if (authType == ConnectTypes.SERVER && !clientData.permissions.canServer) {
AuthProvider.authError("authType: SERVER not allowed for this account");
return;
}
if (getSession) {
if (clientData.session == 0) {
@ -123,7 +124,9 @@ public void execute(ChannelHandlerContext ctx, Client clientData) throws Excepti
if (authType != ConnectTypes.API && server.config.protectHandler.allowGetAccessToken(context)) {
UUID uuid = pair.handler.auth(aresult);
result.playerProfile = ProfileByUUIDResponse.getProfile(uuid, aresult.username, client, clientData.auth.textureProvider);
LogHelper.debug("Auth: %s accessToken %s uuid: %s", login, result.accessToken, uuid.toString());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Auth: %s accessToken %s uuid: %s", login, result.accessToken, uuid.toString());
}
}
sendResult(result);
} catch (AuthException | HWIDException | HookException e) {

View file

@ -27,7 +27,9 @@ public void execute(ChannelHandlerContext ctx, Client pClient) {
result.uuid = pClient.auth.handler.checkServer(username, serverID);
if (result.uuid != null)
result.playerProfile = ProfileByUUIDResponse.getProfile(result.uuid, username, client, pClient.auth.textureProvider);
LogHelper.debug("checkServer: %s uuid: %s serverID: %s", result.playerProfile.username, result.uuid.toString(), serverID);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("checkServer: %s uuid: %s serverID: %s", result.playerProfile.username, result.uuid.toString(), serverID);
}
} catch (AuthException | HookException e) {
sendError(e.getMessage());
return;

View file

@ -27,7 +27,9 @@ public void execute(ChannelHandlerContext ctx, Client client) {
LogHelper.warning("Client auth is null. Using default.");
success = server.config.getAuthProviderPair().handler.joinServer(username, accessToken, serverID);
} else success = client.auth.handler.joinServer(username, accessToken, serverID);
LogHelper.debug("joinServer: %s accessToken: %s serverID: %s", username, accessToken, serverID);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("joinServer: %s accessToken: %s serverID: %s", username, accessToken, serverID);
}
} catch (AuthException | HookException e) {
sendError(e.getMessage());
return;

View file

@ -540,7 +540,7 @@ private static LinkedList<Path> resolveClassPathList(Path clientDir, String... c
return result;
}
public static void initGson() {
private static void initGson() {
Launcher.gsonManager = new ClientGsonManager();
Launcher.gsonManager.initGson();
}
@ -552,8 +552,8 @@ public static void setProfile(ClientProfile profile) {
}
public static void verifyHDir(Path dir, HashedDir hdir, FileNameMatcher matcher, boolean digest) throws IOException {
if (matcher != null)
matcher = matcher.verifyOnly();
//if (matcher != null)
// matcher = matcher.verifyOnly();
// Hash directory and compare (ignore update-only matcher entries, it will break offline-mode)
HashedDir currentHDir = new HashedDir(dir, matcher, true, digest);

View file

@ -72,7 +72,9 @@ public void postDiff(UpdateRequest request, UpdateRequestEvent e, HashedDir.Diff
//if(file.isSame(ret, true))
{
Path source = request.getDir().resolve(path);
LogHelper.debug("Copy file %s to %s", ret.toAbsolutePath().toString(), source.toAbsolutePath().toString());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Copy file %s to %s", ret.toAbsolutePath().toString(), source.toAbsolutePath().toString());
}
//Let's go!
Files.copy(ret, source);
try (InputStream input = IOHelper.newInput(ret)) {
@ -93,11 +95,15 @@ public Path tryFind(NewLauncherSettings.HashedStoreEntry en, HashedFile file) th
if (entry.getType() == HashedEntry.Type.DIR) return HashedDir.WalkAction.CONTINUE;
HashedFile tfile = (HashedFile) entry;
if (tfile.isSame(file)) {
LogHelper.dev("[DIR:%s] Found file %s in %s", en.name, name, path);
if (LogHelper.isDevEnabled()) {
LogHelper.dev("[DIR:%s] Found file %s in %s", en.name, name, path);
}
Path tdir = Paths.get(en.fullPath).resolve(path);
try {
if (tfile.isSame(tdir, true)) {
LogHelper.dev("[DIR:%s] Confirmed file %s in %s", en.name, name, path);
if (LogHelper.isDevEnabled()) {
LogHelper.dev("[DIR:%s] Confirmed file %s in %s", en.name, name, path);
}
ret.set(tdir);
return HashedDir.WalkAction.STOP;
}

View file

@ -168,7 +168,9 @@ public Path handleResponse(HttpResponse response) throws IOException {
if (callback != null) {
callback.stateChanged(entry.getName(), 0, entry.getSize());
}
LogHelper.dev("Resolved filename %s to %s", filename, target.toAbsolutePath().toString());
if (LogHelper.isDevEnabled()) {
LogHelper.dev("Resolved filename %s to %s", filename, target.toAbsolutePath().toString());
}
transfer(source, target, filename, size, callback, totalCallback);
entry = input.getNextEntry();
}

View file

@ -50,7 +50,9 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IO
public void autoload(Path dir) throws IOException {
LogHelper.info("Load modules");
if (Files.notExists(dir)) Files.createDirectory(dir);
IOHelper.walk(dir, new ModulesVisitor(), true);
else {
IOHelper.walk(dir, new ModulesVisitor(), true);
}
sort();
LogHelper.info("Loaded %d modules", modules.size());
}

View file

@ -85,7 +85,7 @@ public void open() throws Exception {
public ChannelFuture send(String text) {
LogHelper.dev("Send: %s", text);
return ch.writeAndFlush(new TextWebSocketFrame(text));
return ch.writeAndFlush(new TextWebSocketFrame(text), ch.voidPromise());
}
abstract void onMessage(String message) throws Exception;
@ -98,7 +98,7 @@ public void close() throws InterruptedException {
//System.out.println("WebSocket Client sending close");
isClosed = true;
if (ch != null && ch.isActive()) {
ch.writeAndFlush(new CloseWebSocketFrame());
ch.writeAndFlush(new CloseWebSocketFrame(), ch.voidPromise());
ch.closeFuture().sync();
}
@ -106,7 +106,7 @@ public void close() throws InterruptedException {
}
public void eval(final String text) throws IOException {
ch.writeAndFlush(new TextWebSocketFrame(text));
ch.writeAndFlush(new TextWebSocketFrame(text), ch.voidPromise());
}
}

View file

@ -56,8 +56,8 @@ public boolean isDone() {
@Override
public WebSocketEvent get() throws InterruptedException, ExecutionException {
if (isCanceled) return null;
while (!event.ready) {
synchronized (event) {
synchronized (event) {
while (!event.ready) {
event.wait();
}
}
@ -73,8 +73,8 @@ public WebSocketEvent get() throws InterruptedException, ExecutionException {
@Override
public WebSocketEvent get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException {
if (isCanceled) return null;
while (!event.ready) {
synchronized (event) {
synchronized (event) {
while (!event.ready) {
event.wait(timeout);
}
}

View file

@ -73,12 +73,14 @@ protected void channelRead0(ChannelHandlerContext ctx, Object msg) throws Except
if (frame instanceof TextWebSocketFrame) {
final TextWebSocketFrame textFrame = (TextWebSocketFrame) frame;
clientJSONPoint.onMessage(textFrame.text());
LogHelper.dev("Message: %s", textFrame.text());
if (LogHelper.isDevEnabled()) {
LogHelper.dev("Message: %s", textFrame.text());
}
// uncomment to print request
// logger.info(textFrame.text());
} else if ((frame instanceof PingWebSocketFrame)) {
frame.content().retain();
ctx.channel().writeAndFlush(new PongWebSocketFrame(frame.content()));
ch.writeAndFlush(new PongWebSocketFrame(frame.content()), ch.voidPromise());
//return;
} else if (frame instanceof PongWebSocketFrame) {
} else if (frame instanceof CloseWebSocketFrame)

View file

@ -47,7 +47,9 @@ public void findProfilesByNames(String[] usernames, Agent agent, ProfileLookupCa
sliceProfiles = new BatchProfileByUsernameRequest(sliceUsernames).request().playerProfiles;
} catch (Exception e) {
for (String username : sliceUsernames) {
LogHelper.debug("Couldn't find profile '%s': %s", username, e);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Couldn't find profile '%s': %s", username, e);
}
callback.onProfileLookupFailed(new GameProfile((UUID) null, username), e);
}
@ -61,13 +63,17 @@ public void findProfilesByNames(String[] usernames, Agent agent, ProfileLookupCa
PlayerProfile pp = sliceProfiles[i];
if (pp == null) {
String username = sliceUsernames[i];
LogHelper.debug("Couldn't find profile '%s'", username);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Couldn't find profile '%s'", username);
}
callback.onProfileLookupFailed(new GameProfile((UUID) null, username), new ProfileNotFoundException("Server did not find the requested profile"));
continue;
}
// Report as looked up
LogHelper.debug("Successfully looked up profile '%s'", pp.username);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Successfully looked up profile '%s'", pp.username);
}
callback.onProfileLookupSucceeded(YggdrasilMinecraftSessionService.toGameProfile(pp));
}

View file

@ -33,7 +33,9 @@ public final class YggdrasilMinecraftSessionService extends BaseMinecraftSession
public static final boolean NO_TEXTURES = Boolean.parseBoolean("launcher.com.mojang.authlib.noTextures");
public static void fillTextureProperties(GameProfile profile, PlayerProfile pp) {
LogHelper.debug("fillTextureProperties, Username: '%s'", profile.getName());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("fillTextureProperties, Username: '%s'", profile.getName());
}
if (NO_TEXTURES)
return;
@ -42,12 +44,16 @@ public static void fillTextureProperties(GameProfile profile, PlayerProfile pp)
if (pp.skin != null) {
properties.put(Launcher.SKIN_URL_PROPERTY, new Property(Launcher.SKIN_URL_PROPERTY, pp.skin.url, ""));
properties.put(Launcher.SKIN_DIGEST_PROPERTY, new Property(Launcher.SKIN_DIGEST_PROPERTY, SecurityHelper.toHex(pp.skin.digest), ""));
LogHelper.debug("fillTextureProperties, Has skin texture for username '%s'", profile.getName());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("fillTextureProperties, Has skin texture for username '%s'", profile.getName());
}
}
if (pp.cloak != null) {
properties.put(Launcher.CLOAK_URL_PROPERTY, new Property(Launcher.CLOAK_URL_PROPERTY, pp.cloak.url, ""));
properties.put(Launcher.CLOAK_DIGEST_PROPERTY, new Property(Launcher.CLOAK_DIGEST_PROPERTY, SecurityHelper.toHex(pp.cloak.digest), ""));
LogHelper.debug("fillTextureProperties, Has cloak texture for username '%s'", profile.getName());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("fillTextureProperties, Has cloak texture for username '%s'", profile.getName());
}
}
}
@ -92,7 +98,9 @@ public YggdrasilMinecraftSessionService(AuthenticationService service) {
public GameProfile fillProfileProperties(GameProfile profile, boolean requireSecure) {
// Verify has UUID
UUID uuid = profile.getUUID();
LogHelper.debug("fillProfileProperties, UUID: %s", uuid);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("fillProfileProperties, UUID: %s", uuid);
}
if (uuid == null)
return profile;
@ -101,7 +109,9 @@ public GameProfile fillProfileProperties(GameProfile profile, boolean requireSec
try {
pp = new ProfileByUUIDRequest(uuid).request().playerProfile;
} catch (Exception e) {
LogHelper.debug("Couldn't fetch profile properties for '%s': %s", profile, e);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Couldn't fetch profile properties for '%s': %s", profile, e);
}
return profile;
}
@ -112,14 +122,18 @@ public GameProfile fillProfileProperties(GameProfile profile, boolean requireSec
}
// Create new game profile from player profile
LogHelper.debug("Successfully fetched profile properties for '%s'", profile);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Successfully fetched profile properties for '%s'", profile);
}
fillTextureProperties(profile, pp);
return toGameProfile(pp);
}
@Override
public Map<MinecraftProfileTexture.Type, MinecraftProfileTexture> getTextures(GameProfile profile, boolean requireSecure) {
LogHelper.debug("getTextures, Username: '%s', UUID: '%s'", profile.getName(), profile.getUUID());
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("getTextures, Username: '%s', UUID: '%s'", profile.getName(), profile.getUUID());
}
Map<MinecraftProfileTexture.Type, MinecraftProfileTexture> textures = new EnumMap<>(MinecraftProfileTexture.Type.class);
// Add textures
@ -151,7 +165,9 @@ public Map<MinecraftProfileTexture.Type, MinecraftProfileTexture> getTextures(Ga
@Override
public GameProfile hasJoinedServer(GameProfile profile, String serverID) throws AuthenticationUnavailableException {
String username = profile.getName();
LogHelper.debug("checkServer, Username: '%s', Server ID: %s", username, serverID);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("checkServer, Username: '%s', Server ID: %s", username, serverID);
}
// Make checkServer request
PlayerProfile pp;
@ -180,7 +196,9 @@ public void joinServer(GameProfile profile, String accessToken, String serverID)
// Join server
String username = profile.getName();
LogHelper.debug("joinServer, Username: '%s', Access token: %s, Server ID: %s", username, accessToken, serverID);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("joinServer, Username: '%s', Access token: %s, Server ID: %s", username, accessToken, serverID);
}
// Make joinServer request
boolean success;

View file

@ -6,10 +6,6 @@
// Не входящих в пакеты самого Forge
public class SafeExitJVMLegacy {
public static void exit(int code) {
try {
JVMHelper.RUNTIME.halt(code);
} catch (Throwable e) {
System.exit(code);
}
JVMHelper.RUNTIME.halt(code);
}
}

View file

@ -6,10 +6,6 @@
// Не входящих в пакеты самого Forge
public class SafeExitJVM {
public static void exit(int code) {
try {
JVMHelper.RUNTIME.halt(code);
} catch (Throwable e) {
System.exit(code);
}
JVMHelper.RUNTIME.halt(code);
}
}

View file

@ -173,16 +173,24 @@ public void removeR(String name) {
for (String s : dirs) {
HashedEntry e = current.get(s);
if (e == null) {
LogHelper.debug("Null %s", s);
for (String x : current.keySet()) LogHelper.debug("Contains %s", x);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Null %s", s);
}
if (LogHelper.isDebugEnabled()) {
for (String x : current.keySet()) LogHelper.debug("Contains %s", x);
}
break;
}
if (e.getType() == Type.DIR) {
current = ((HashedDir) e).map;
LogHelper.debug("Found dir %s", s);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Found dir %s", s);
}
} else {
current.remove(s);
LogHelper.debug("Found filename %s", s);
if (LogHelper.isDebugEnabled()) {
LogHelper.debug("Found filename %s", s);
}
break;
}
}

View file

@ -26,7 +26,6 @@ public HashedEntry deserialize(JsonElement json, Type typeOfT, JsonDeserializati
if (typename.equals("dir")) cls = HashedDir.class;
if (typename.equals("file")) cls = HashedFile.class;
return (HashedEntry) context.deserialize(json, cls);
}

View file

@ -1,6 +1,7 @@
package pro.gravit.launcher.managers;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
@ -19,7 +20,7 @@ public Entry(NeedGarbageCollection invoke, long timer) {
private static final Timer timer = new Timer("GarbageTimer");
private static final ArrayList<Entry> NEED_GARBARE_COLLECTION = new ArrayList<>();
private static final Set<Entry> NEED_GARBARE_COLLECTION = new HashSet<>();
public static void gc() {
for (Entry gc : NEED_GARBARE_COLLECTION)