- Added proxy

This commit is contained in:
2025-09-20 14:53:51 +02:00
parent 9f865141ae
commit d94e8dd8b9
2 changed files with 18 additions and 4 deletions

View File

@@ -6,7 +6,7 @@
<groupId>me.finn.unlegitlibrary</groupId> <groupId>me.finn.unlegitlibrary</groupId>
<artifactId>unlegitlibrary</artifactId> <artifactId>unlegitlibrary</artifactId>
<version>1.6.1</version> <version>1.6.2</version>
<url>https://unlegitdqrk.dev/UnlegitLibrary/</url> <url>https://unlegitdqrk.dev/UnlegitLibrary/</url>
<description>Just a big library</description> <description>Just a big library</description>

View File

@@ -13,7 +13,9 @@ import me.finn.unlegitlibrary.utils.Logger;
import javax.net.ssl.*; import javax.net.ssl.*;
import java.io.*; import java.io.*;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.InetSocketAddress;
import java.net.Proxy; import java.net.Proxy;
import java.net.Socket;
import java.security.KeyStore; import java.security.KeyStore;
import java.security.cert.CertificateFactory; import java.security.cert.CertificateFactory;
@@ -30,6 +32,11 @@ public final class NetworkClient {
private final SSLSocketFactory sslSocketFactory; private final SSLSocketFactory sslSocketFactory;
private final SSLParameters sslParameters; private final SSLParameters sslParameters;
private int clientID = -1; private int clientID = -1;
private final Proxy proxy;
public Proxy getProxy() {
return proxy;
}
public int getClientID() { public int getClientID() {
return clientID; return clientID;
@@ -76,7 +83,7 @@ public final class NetworkClient {
private NetworkClient(String host, int port, PacketHandler packetHandler, private NetworkClient(String host, int port, PacketHandler packetHandler,
EventManager eventManager, Logger logger, EventManager eventManager, Logger logger,
int timeout, SSLSocketFactory sslSocketFactory, int timeout, SSLSocketFactory sslSocketFactory,
SSLParameters sslParameters) { SSLParameters sslParameters, Proxy proxy) {
this.host = host; this.host = host;
this.port = port; this.port = port;
this.packetHandler = packetHandler; this.packetHandler = packetHandler;
@@ -88,6 +95,7 @@ public final class NetworkClient {
this.packetHandler.setClientInstance(this); this.packetHandler.setClientInstance(this);
this.packetHandler.registerPacket(new ClientIDPacket()); this.packetHandler.registerPacket(new ClientIDPacket());
this.proxy = proxy;
} }
public boolean isConnected() { public boolean isConnected() {
@@ -104,7 +112,11 @@ public final class NetworkClient {
try { try {
if (sslSocketFactory == null) throw new ConnectException("SSL socket factory not set. Client certificate required!"); 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); if (sslParameters != null) socket.setSSLParameters(sslParameters);
else { else {
@@ -202,6 +214,7 @@ public final class NetworkClient {
private File caFolder; private File caFolder;
private File clientFolder; private File clientFolder;
private File keyFolder; private File keyFolder;
private Proxy proxy;
public ClientBuilder setHost(String host) { this.host = host; return this; } public ClientBuilder setHost(String host) { this.host = host; return this; }
public ClientBuilder setPort(int port) { this.port = port; 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 setSSLParameters(SSLParameters params) { this.sslParameters = params; return this; }
public ClientBuilder setRootCAFolder(File folder) { this.caFolder = folder; 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 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() { public NetworkClient build() {
if (sslSocketFactory == null && caFolder != null) { if (sslSocketFactory == null && caFolder != null) {
@@ -221,7 +235,7 @@ public final class NetworkClient {
} }
return new NetworkClient(host, port, packetHandler, eventManager, logger, 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 { public static SSLSocketFactory createSSLSocketFactory(File caFolder, File clientCertFolder, File clientKeyFolder) throws Exception {