diff --git a/LaunchServer/source/response/PingResponse.java b/LaunchServer/source/response/PingResponse.java index 421c23e..481d491 100644 --- a/LaunchServer/source/response/PingResponse.java +++ b/LaunchServer/source/response/PingResponse.java @@ -9,9 +9,9 @@ public final class PingResponse extends Response { - public PingResponse(LaunchServer server, long id, HInput input, HOutput output) + public PingResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/LaunchServer/source/response/Response.java b/LaunchServer/source/response/Response.java index c2e1a4d..a1fb589 100644 --- a/LaunchServer/source/response/Response.java +++ b/LaunchServer/source/response/Response.java @@ -14,17 +14,17 @@ @LauncherAPI protected final LaunchServer server; @LauncherAPI - protected final long id; + protected final String ip; @LauncherAPI protected final HInput input; @LauncherAPI protected final HOutput output; @LauncherAPI - protected Response(LaunchServer server, long id, HInput input, HOutput output) + protected Response(LaunchServer server, String ip, HInput input, HOutput output) { this.server = server; - this.id = id; + this.ip = ip; this.input = input; this.output = output; } @@ -41,7 +41,7 @@ @LauncherAPI protected final void debug(String message) { - LogHelper.subDebug("#%d %s", id, message); + LogHelper.subDebug("[%s] %s", ip, message); } @LauncherAPI @@ -61,6 +61,6 @@ public interface Factory { @LauncherAPI - Response newResponse(LaunchServer server, long id, HInput input, HOutput output); + Response newResponse(LaunchServer server, String ip, HInput input, HOutput output); } } diff --git a/LaunchServer/source/response/ResponseThread.java b/LaunchServer/source/response/ResponseThread.java index f2a1050..d26de18 100644 --- a/LaunchServer/source/response/ResponseThread.java +++ b/LaunchServer/source/response/ResponseThread.java @@ -28,13 +28,13 @@ public final class ResponseThread implements Runnable { private final LaunchServer server; - private final long id; + private final String ip; private final Socket socket; - public ResponseThread(LaunchServer server, long id, Socket socket) throws SocketException + public ResponseThread(LaunchServer server, String ip, Socket socket) throws SocketException { this.server = server; - this.id = id; + this.ip = ip; this.socket = socket; // Fix socket flags @@ -46,7 +46,7 @@ { if (!server.serverSocketHandler.logConnections) { - LogHelper.debug("Connection #%d from %s", id, IOHelper.getIP(socket.getRemoteSocketAddress())); + LogHelper.debug("Connection from %s", ip); } // Process connection @@ -55,7 +55,7 @@ try (HInput input = new HInput(IOHelper.newBufferedInputStream(socket.getInputStream())); HOutput output = new HOutput(IOHelper.newBufferedOutStream(socket.getOutputStream()))) { - Type type = readHandshake(input, output); + Type type = readHandshake(ip, input, output); if (type == null) { // Not accepted cancelled = true; @@ -69,7 +69,7 @@ } catch (RequestException e) { - LogHelper.subDebug(String.format("#%d Request error: %s", id, e.getMessage())); + LogHelper.subDebug(String.format("#%s Request error: %s", IOHelper.getIP(socket.getRemoteSocketAddress()), e.getMessage())); output.writeString(e.getMessage(), 0); } } @@ -83,12 +83,12 @@ IOHelper.close(socket); if (!cancelled) { - server.serverSocketHandler.onDisconnect(id, savedError); + server.serverSocketHandler.onDisconnect(IOHelper.getIP(socket.getRemoteSocketAddress()), savedError); } } } - private Type readHandshake(HInput input, HOutput output) throws IOException + private Type readHandshake(String ip, HInput input, HOutput output) throws IOException { boolean legacy = false; @@ -99,7 +99,7 @@ if (magicNumber != Launcher.PROTOCOL_MAGIC - 1) { // Previous launcher protocol output.writeBoolean(false); - if (LogHelper.isDebugEnabled()) throw new IOException(String.format("#%d Protocol magic mismatch", id)); + if (LogHelper.isDebugEnabled()) throw new IOException(String.format("[%s] Protocol magic mismatch", ip)); return null; } legacy = true; @@ -110,7 +110,7 @@ if (!keyModulus.equals(server.privateKey.getModulus())) { output.writeBoolean(false); - if (LogHelper.isDebugEnabled()) throw new IOException(String.format("#%d Key modulus mismatch", id)); + if (LogHelper.isDebugEnabled()) throw new IOException(String.format("[%s] Key modulus mismatch", ip)); return null; } @@ -119,10 +119,10 @@ if (legacy && type != Type.LAUNCHER) { output.writeBoolean(false); - if (LogHelper.isDebugEnabled()) throw new IOException(String.format("#%d Not LAUNCHER request on legacy protocol", id)); + if (LogHelper.isDebugEnabled()) throw new IOException(String.format("[%s] Not LAUNCHER request on legacy protocol", ip)); return null; } - if (!server.serverSocketHandler.onHandshake(id, type)) + if (!server.serverSocketHandler.onHandshake(ip, type)) { output.writeBoolean(false); return null; @@ -138,11 +138,11 @@ { if (server.serverSocketHandler.logConnections) { - LogHelper.info("Connection #%d from %s: %s", id, IOHelper.getIP(socket.getRemoteSocketAddress()), type.name()); + LogHelper.info("Connection from %s: %s", ip, type.name()); } else { - LogHelper.subDebug("#%d Type: %s", id, type.name()); + LogHelper.subDebug("[%s] Type: %s", ip, type.name()); } // Choose response based on type @@ -150,38 +150,38 @@ switch (type) { case PING: - response = new PingResponse(server, id, input, output); + response = new PingResponse(server, ip, input, output); break; case AUTH: - response = new AuthResponse(server, id, input, output, IOHelper.getIP(socket.getRemoteSocketAddress())); + response = new AuthResponse(server, input, output, IOHelper.getIP(socket.getRemoteSocketAddress())); break; case JOIN_SERVER: - response = new JoinServerResponse(server, id, input, output); + response = new JoinServerResponse(server, ip, input, output); break; case CHECK_SERVER: - response = new CheckServerResponse(server, id, input, output); + response = new CheckServerResponse(server, ip, input, output); break; case LAUNCHER: - response = new LauncherResponse(server, id, input, output); + response = new LauncherResponse(server, ip, input, output); break; case UPDATE: - response = new UpdateResponse(server, id, input, output); + response = new UpdateResponse(server, ip, input, output); break; case UPDATE_LIST: - response = new UpdateListResponse(server, id, input, output); + response = new UpdateListResponse(server, ip, input, output); break; case PROFILE_BY_USERNAME: - response = new ProfileByUsernameResponse(server, id, input, output); + response = new ProfileByUsernameResponse(server, ip, input, output); break; case PROFILE_BY_UUID: - response = new ProfileByUUIDResponse(server, id, input, output); + response = new ProfileByUUIDResponse(server, ip, input, output); break; case BATCH_PROFILE_BY_USERNAME: - response = new BatchProfileByUsernameResponse(server, id, input, output); + response = new BatchProfileByUsernameResponse(server, ip, input, output); break; case CUSTOM: String name = VerifyHelper.verifyIDName(input.readASCII(255)); - response = server.serverSocketHandler.newCustomResponse(name, id, input, output); + response = server.serverSocketHandler.newCustomResponse(name, ip, input, output); break; default: throw new AssertionError("Unsupported request type: " + type.name()); @@ -189,6 +189,6 @@ // Reply response.reply(); - LogHelper.subDebug("#%d Replied", id); + LogHelper.subDebug("[%s] Replied", ip); } } diff --git a/LaunchServer/source/response/ServerSocketHandler.java b/LaunchServer/source/response/ServerSocketHandler.java index 0b3cd79..e798dc2 100644 --- a/LaunchServer/source/response/ServerSocketHandler.java +++ b/LaunchServer/source/response/ServerSocketHandler.java @@ -2,6 +2,7 @@ import launcher.LauncherAPI; import launcher.helper.CommonHelper; +import launcher.helper.IOHelper; import launcher.helper.LogHelper; import launcher.helper.VerifyHelper; import launcher.request.Request.Type; @@ -83,15 +84,16 @@ { Socket socket = serverSocket.accept(); + String ip = IOHelper.getIP(socket.getRemoteSocketAddress()); + // Invoke pre-connect listener - long id = idCounter.incrementAndGet(); - if (listener != null && !listener.onConnect(id, socket.getInetAddress())) + if (listener != null && !listener.onConnect(ip, socket.getInetAddress())) { continue; // Listener didn't accepted this connection } // Reply in separate thread - threadPool.execute(new ResponseThread(server, id, socket)); + threadPool.execute(new ResponseThread(server, ip, socket)); } } catch (IOException e) @@ -105,11 +107,11 @@ } @LauncherAPI - public Response newCustomResponse(String name, long id, HInput input, HOutput output) + public Response newCustomResponse(String name, String ip, HInput input, HOutput output) { Factory factory = VerifyHelper.getMapValue(customResponses, name, String.format("Unknown custom response: '%s'", name)); - return factory.newResponse(server, id, input, output); + return factory.newResponse(server, ip, input, output); } @LauncherAPI @@ -126,28 +128,28 @@ this.listener = listener; } - /*package*/ void onDisconnect(long id, Throwable exc) + /*package*/ void onDisconnect(String ip, Throwable exc) { if (listener != null) { - listener.onDisconnect(id, exc); + listener.onDisconnect(ip, exc); } } - /*package*/ boolean onHandshake(long id, Type type) + /*package*/ boolean onHandshake(String ip, Type type) { - return listener == null || listener.onHandshake(id, type); + return listener == null || listener.onHandshake(ip, type); } public interface Listener { @LauncherAPI - boolean onConnect(long id, InetAddress address); + boolean onConnect(String ip, InetAddress address); @LauncherAPI - void onDisconnect(long id, Throwable exc); + void onDisconnect(String ip, Throwable exc); @LauncherAPI - boolean onHandshake(long id, Type type); + boolean onHandshake(String ip, Type type); } } diff --git a/LaunchServer/source/response/auth/AuthResponse.java b/LaunchServer/source/response/auth/AuthResponse.java index 956270a..b15177c 100644 --- a/LaunchServer/source/response/auth/AuthResponse.java +++ b/LaunchServer/source/response/auth/AuthResponse.java @@ -22,9 +22,9 @@ { private final String ip; - public AuthResponse(LaunchServer server, long id, HInput input, HOutput output, String ip) + public AuthResponse(LaunchServer server, HInput input, HOutput output, String ip) { - super(server, id, input, output); + super(server, ip, input, output); this.ip = ip; } diff --git a/LaunchServer/source/response/auth/CheckServerResponse.java b/LaunchServer/source/response/auth/CheckServerResponse.java index 1074285..f3c5e35 100644 --- a/LaunchServer/source/response/auth/CheckServerResponse.java +++ b/LaunchServer/source/response/auth/CheckServerResponse.java @@ -15,9 +15,9 @@ public final class CheckServerResponse extends Response { - public CheckServerResponse(LaunchServer server, long id, HInput input, HOutput output) + public CheckServerResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/LaunchServer/source/response/auth/JoinServerResponse.java b/LaunchServer/source/response/auth/JoinServerResponse.java index c334f9b..4910167 100644 --- a/LaunchServer/source/response/auth/JoinServerResponse.java +++ b/LaunchServer/source/response/auth/JoinServerResponse.java @@ -14,9 +14,9 @@ public final class JoinServerResponse extends Response { - public JoinServerResponse(LaunchServer server, long id, HInput input, HOutput output) + public JoinServerResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/LaunchServer/source/response/profile/BatchProfileByUsernameResponse.java b/LaunchServer/source/response/profile/BatchProfileByUsernameResponse.java index 903dc08..ca78f27 100644 --- a/LaunchServer/source/response/profile/BatchProfileByUsernameResponse.java +++ b/LaunchServer/source/response/profile/BatchProfileByUsernameResponse.java @@ -12,9 +12,9 @@ public final class BatchProfileByUsernameResponse extends Response { - public BatchProfileByUsernameResponse(LaunchServer server, long id, HInput input, HOutput output) + public BatchProfileByUsernameResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/LaunchServer/source/response/profile/ProfileByUUIDResponse.java b/LaunchServer/source/response/profile/ProfileByUUIDResponse.java index 02298dd..6d8b73c 100644 --- a/LaunchServer/source/response/profile/ProfileByUUIDResponse.java +++ b/LaunchServer/source/response/profile/ProfileByUUIDResponse.java @@ -13,9 +13,9 @@ public final class ProfileByUUIDResponse extends Response { - public ProfileByUUIDResponse(LaunchServer server, long id, HInput input, HOutput output) + public ProfileByUUIDResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } public static PlayerProfile getProfile(LaunchServer server, UUID uuid, String username) diff --git a/LaunchServer/source/response/profile/ProfileByUsernameResponse.java b/LaunchServer/source/response/profile/ProfileByUsernameResponse.java index fa4169d..fc1f70f 100644 --- a/LaunchServer/source/response/profile/ProfileByUsernameResponse.java +++ b/LaunchServer/source/response/profile/ProfileByUsernameResponse.java @@ -11,9 +11,9 @@ public final class ProfileByUsernameResponse extends Response { - public ProfileByUsernameResponse(LaunchServer server, long id, HInput input, HOutput output) + public ProfileByUsernameResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } public static void writeProfile(LaunchServer server, HOutput output, String username) throws IOException diff --git a/LaunchServer/source/response/update/LauncherResponse.java b/LaunchServer/source/response/update/LauncherResponse.java index a65544d..da0b3b3 100644 --- a/LaunchServer/source/response/update/LauncherResponse.java +++ b/LaunchServer/source/response/update/LauncherResponse.java @@ -14,9 +14,9 @@ public final class LauncherResponse extends Response { - public LauncherResponse(LaunchServer server, long id, HInput input, HOutput output) + public LauncherResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/LaunchServer/source/response/update/UpdateListResponse.java b/LaunchServer/source/response/update/UpdateListResponse.java index 8e55c4d..e45c6ab 100644 --- a/LaunchServer/source/response/update/UpdateListResponse.java +++ b/LaunchServer/source/response/update/UpdateListResponse.java @@ -12,9 +12,9 @@ public final class UpdateListResponse extends Response { - public UpdateListResponse(LaunchServer server, long id, HInput input, HOutput output) + public UpdateListResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/LaunchServer/source/response/update/UpdateResponse.java b/LaunchServer/source/response/update/UpdateResponse.java index 3465eb7..436596a 100644 --- a/LaunchServer/source/response/update/UpdateResponse.java +++ b/LaunchServer/source/response/update/UpdateResponse.java @@ -22,9 +22,9 @@ public final class UpdateResponse extends Response { - public UpdateResponse(LaunchServer server, long id, HInput input, HOutput output) + public UpdateResponse(LaunchServer server, String ip, HInput input, HOutput output) { - super(server, id, input, output); + super(server, ip, input, output); } @Override diff --git a/buildnumber b/buildnumber index 068afe4..da922d9 100644 --- a/buildnumber +++ b/buildnumber @@ -1 +1 @@ -538, 24.03.2021 \ No newline at end of file +539, 30.04.2021 \ No newline at end of file