forked from UnlegitDqrk/unlegitlibrary
- Added proxy
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -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>
|
||||||
|
|
||||||
|
@@ -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 {
|
||||||
|
Reference in New Issue
Block a user