From d94e8dd8b916f06c8ba11c1fda65b58c697973b2 Mon Sep 17 00:00:00 2001 From: Finn Date: Sat, 20 Sep 2025 14:53:51 +0200 Subject: [PATCH] - Added proxy --- pom.xml | 2 +- .../network/system/client/NetworkClient.java | 20 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 860fe52..affad39 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ me.finn.unlegitlibrary unlegitlibrary - 1.6.1 + 1.6.2 https://unlegitdqrk.dev/UnlegitLibrary/ Just a big library diff --git a/src/main/java/me/finn/unlegitlibrary/network/system/client/NetworkClient.java b/src/main/java/me/finn/unlegitlibrary/network/system/client/NetworkClient.java index 3100443..759107d 100644 --- a/src/main/java/me/finn/unlegitlibrary/network/system/client/NetworkClient.java +++ b/src/main/java/me/finn/unlegitlibrary/network/system/client/NetworkClient.java @@ -13,7 +13,9 @@ import me.finn.unlegitlibrary.utils.Logger; import javax.net.ssl.*; import java.io.*; import java.net.ConnectException; +import java.net.InetSocketAddress; import java.net.Proxy; +import java.net.Socket; import java.security.KeyStore; import java.security.cert.CertificateFactory; @@ -30,6 +32,11 @@ public final class NetworkClient { private final SSLSocketFactory sslSocketFactory; private final SSLParameters sslParameters; private int clientID = -1; + private final Proxy proxy; + + public Proxy getProxy() { + return proxy; + } public int getClientID() { return clientID; @@ -76,7 +83,7 @@ public final class NetworkClient { private NetworkClient(String host, int port, PacketHandler packetHandler, EventManager eventManager, Logger logger, int timeout, SSLSocketFactory sslSocketFactory, - SSLParameters sslParameters) { + SSLParameters sslParameters, Proxy proxy) { this.host = host; this.port = port; this.packetHandler = packetHandler; @@ -88,6 +95,7 @@ public final class NetworkClient { this.packetHandler.setClientInstance(this); this.packetHandler.registerPacket(new ClientIDPacket()); + this.proxy = proxy; } public boolean isConnected() { @@ -104,7 +112,11 @@ public final class NetworkClient { try { if (sslSocketFactory == null) throw new ConnectException("SSL socket factory not set. Client certificate required!"); - socket = (SSLSocket) sslSocketFactory.createSocket(host, port); + if (proxy != null) { + Socket rawSocket = new Socket(proxy); + rawSocket.connect(new InetSocketAddress(host, port), timeout); + socket = (SSLSocket) sslSocketFactory.createSocket(rawSocket, host, port, true); + } else socket = (SSLSocket) sslSocketFactory.createSocket(host, port); if (sslParameters != null) socket.setSSLParameters(sslParameters); else { @@ -202,6 +214,7 @@ public final class NetworkClient { private File caFolder; private File clientFolder; private File keyFolder; + private Proxy proxy; public ClientBuilder setHost(String host) { this.host = host; return this; } public ClientBuilder setPort(int port) { this.port = port; return this; } @@ -213,6 +226,7 @@ public final class NetworkClient { public ClientBuilder setSSLParameters(SSLParameters params) { this.sslParameters = params; return this; } public ClientBuilder setRootCAFolder(File folder) { this.caFolder = folder; return this; } public ClientBuilder setClientCertificatesFolder(File clientFolder, File keyFolder) { this.clientFolder = clientFolder; this.keyFolder = keyFolder; return this; } + public ClientBuilder setProxy(Proxy proxy) { this.proxy = proxy; return this; } public NetworkClient build() { if (sslSocketFactory == null && caFolder != null) { @@ -221,7 +235,7 @@ public final class NetworkClient { } return new NetworkClient(host, port, packetHandler, eventManager, logger, - timeout, sslSocketFactory, sslParameters); + timeout, sslSocketFactory, sslParameters, proxy); } public static SSLSocketFactory createSSLSocketFactory(File caFolder, File clientCertFolder, File clientKeyFolder) throws Exception {