diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java index 3a18b970..e0222ce4 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/FastLoginBukkit.java @@ -15,16 +15,14 @@ import com.github.games647.fastlogin.core.shared.PlatformPlugin; import com.google.common.collect.Iterables; import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteStreams; +import com.google.common.net.HostAndPort; import java.security.KeyPair; import java.util.List; -import java.util.Map; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ThreadFactory; import java.util.logging.Level; -import java.util.logging.Logger; -import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; @@ -194,11 +192,6 @@ public class FastLoginBukkit extends JavaPlugin implements PlatformPlugin addresses, int requests - , Map proxies) { - return new MojangApiBukkit(logger, addresses, requests, proxies); + public MojangApiConnector makeApiConnector(List addresses, int requests, List proxies) { + return new MojangApiBukkit(getLogger(), addresses, requests, proxies); } } diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java index 5bf57271..a68d5779 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java @@ -5,6 +5,7 @@ import com.github.games647.fastlogin.core.mojang.MojangApiConnector; import com.github.games647.fastlogin.core.mojang.SkinProperties; import com.github.games647.fastlogin.core.mojang.VerificationReply; import com.github.games647.fastlogin.core.shared.LoginSession; +import com.google.common.net.HostAndPort; import java.io.BufferedReader; import java.io.InputStreamReader; @@ -12,7 +13,7 @@ import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.URLEncoder; import java.util.Collection; -import java.util.Map; +import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; @@ -23,7 +24,7 @@ public class MojangApiBukkit extends MojangApiConnector { "username=%s&serverId=%s"; public MojangApiBukkit(Logger logger, Collection localAddresses, int rateLimit - , Map proxies) { + , List proxies) { super(logger, localAddresses, rateLimit, proxies); } diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java index 3c35cbd8..8f4f963b 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/FastLoginBungee.java @@ -7,14 +7,12 @@ import com.github.games647.fastlogin.core.mojang.MojangApiConnector; import com.github.games647.fastlogin.core.shared.FastLoginCore; import com.github.games647.fastlogin.core.shared.PlatformPlugin; import com.google.common.collect.Maps; +import com.google.common.net.HostAndPort; import java.util.List; -import java.util.Map; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ThreadFactory; -import java.util.logging.Logger; -import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.connection.PendingConnection; @@ -82,11 +80,6 @@ public class FastLoginBungee extends Plugin implements PlatformPlugin addresses, int requests - , Map proxies) { - return new MojangApiConnector(logger, addresses, requests, proxies); + public MojangApiConnector makeApiConnector(List addresses, int requests, List proxies) { + return new MojangApiConnector(getLogger(), addresses, requests, proxies); } } diff --git a/core/src/main/java/com/github/games647/fastlogin/core/CommonUtil.java b/core/src/main/java/com/github/games647/fastlogin/core/CommonUtil.java index 24997a48..6795592d 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/CommonUtil.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/CommonUtil.java @@ -8,6 +8,9 @@ import java.util.concurrent.TimeUnit; public class CommonUtil { + private static final char COLOR_CHAR = '&'; + private static final char TRANSLATED_CHAR = 'ยง'; + public static ConcurrentMap buildCache(int expireAfterWrite, int maxSize) { CompatibleCacheBuilder builder = CompatibleCacheBuilder.newBuilder(); @@ -36,6 +39,18 @@ public class CommonUtil { + '-' + withoutDashes.substring(20, 32)); } + public static String translateColorCodes(String rawMessage) { + char[] chars = rawMessage.toCharArray(); + for (int i = 0; i < chars.length - 1; i++) { + if (chars[i] == COLOR_CHAR && "0123456789AaBbCcDdEeFfKkLlMmNnOoRr".indexOf(chars[i + 1]) > -1) { + chars[i] = TRANSLATED_CHAR; + chars[i + 1] = Character.toLowerCase(chars[i + 1]); + } + } + + return new String(chars); + } + private CommonUtil() { //Utility class } diff --git a/core/src/main/java/com/github/games647/fastlogin/core/mojang/MojangApiConnector.java b/core/src/main/java/com/github/games647/fastlogin/core/mojang/MojangApiConnector.java index 75be3a49..b7f23240 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/mojang/MojangApiConnector.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/mojang/MojangApiConnector.java @@ -6,6 +6,7 @@ import com.github.games647.fastlogin.core.shared.LoginSession; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import com.google.common.net.HostAndPort; import com.google.gson.Gson; import java.io.BufferedReader; @@ -22,7 +23,6 @@ import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Set; import java.util.UUID; import java.util.logging.Level; @@ -56,14 +56,14 @@ public class MojangApiConnector { protected final Logger logger; public MojangApiConnector(Logger logger, Collection localAddresses, int rateLimit - , Map proxies) { + , List proxies) { this.logger = logger; this.rateLimit = Math.max(rateLimit, 600); this.sslFactory = buildAddresses(logger, localAddresses); List proxyBuilder = Lists.newArrayList(); - for (Entry proxy : proxies.entrySet()) { - proxyBuilder.add(new Proxy(Type.HTTP, new InetSocketAddress(proxy.getKey(), proxy.getValue()))); + for (HostAndPort proxy : proxies) { + proxyBuilder.add(new Proxy(Type.HTTP, new InetSocketAddress(proxy.getHostText(), proxy.getPort()))); } this.proxies = Iterables.cycle(proxyBuilder).iterator(); diff --git a/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java b/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java index a1bf64f2..6dfc15b6 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/shared/FastLoginCore.java @@ -8,6 +8,7 @@ import com.github.games647.fastlogin.core.hooks.PasswordGenerator; import com.github.games647.fastlogin.core.mojang.MojangApiConnector; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import com.google.common.net.HostAndPort; import java.io.File; import java.io.IOException; @@ -65,7 +66,7 @@ public class FastLoginCore

> { .filter(key -> messages.get(key) != null) .collect(Collectors.toMap(Function.identity(), messages::get)) .forEach((key, message) -> { - String colored = plugin.translateColorCodes('&', (String) message); + String colored = CommonUtil.translateColorCodes((String) message); if (!colored.isEmpty()) { localeMessages.put(key, colored); } @@ -77,11 +78,9 @@ public class FastLoginCore

> { List ipAddresses = config.getStringList("ip-addresses"); int requestLimit = config.getInt("mojang-request-limit"); List proxyList = config.get("proxies", Lists.newArrayList()); - Map proxies = proxyList.stream() - .collect(Collectors - .toMap(line -> line.split(":")[0], line -> Integer.parseInt(line.split(":")[1]))); + List proxies = proxyList.stream().map(HostAndPort::fromString).collect(Collectors.toList()); - this.apiConnector = plugin.makeApiConnector(plugin.getLogger(), ipAddresses, requestLimit, proxies); + this.apiConnector = plugin.makeApiConnector(ipAddresses, requestLimit, proxies); } private Configuration loadFile(String fileName) throws IOException { diff --git a/core/src/main/java/com/github/games647/fastlogin/core/shared/PlatformPlugin.java b/core/src/main/java/com/github/games647/fastlogin/core/shared/PlatformPlugin.java index e0338f88..9dba7f05 100644 --- a/core/src/main/java/com/github/games647/fastlogin/core/shared/PlatformPlugin.java +++ b/core/src/main/java/com/github/games647/fastlogin/core/shared/PlatformPlugin.java @@ -1,10 +1,10 @@ package com.github.games647.fastlogin.core.shared; import com.github.games647.fastlogin.core.mojang.MojangApiConnector; +import com.google.common.net.HostAndPort; import java.io.File; import java.util.List; -import java.util.Map; import java.util.concurrent.ThreadFactory; import java.util.logging.Logger; @@ -20,8 +20,5 @@ public interface PlatformPlugin { ThreadFactory getThreadFactory(); - String translateColorCodes(char colorChar, String rawMessage); - - MojangApiConnector makeApiConnector(Logger logger, List addresses, int requests - , Map proxies); + MojangApiConnector makeApiConnector(List addresses, int requests, List proxies); }