Merge
This commit is contained in:
commit
01465edf46
@ -22,13 +22,14 @@
|
||||
*/
|
||||
import java.net.*;
|
||||
import java.io.*;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class SocksServer extends Thread {
|
||||
// Some useful SOCKS constant
|
||||
|
||||
static final int PROTO_VERS4 = 4;
|
||||
static final int PROTO_VERS4 = 4;
|
||||
static final int PROTO_VERS = 5;
|
||||
static final int DEFAULT_PORT = 1080;
|
||||
static final int DEFAULT_PORT = 1080;
|
||||
|
||||
static final int NO_AUTH = 0;
|
||||
static final int GSSAPI = 1;
|
||||
@ -36,28 +37,28 @@ public class SocksServer extends Thread {
|
||||
static final int NO_METHODS = -1;
|
||||
|
||||
static final int CONNECT = 1;
|
||||
static final int BIND = 2;
|
||||
static final int BIND = 2;
|
||||
static final int UDP_ASSOC = 3;
|
||||
|
||||
static final int IPV4 = 1;
|
||||
static final int DOMAIN_NAME = 3;
|
||||
static final int IPV6 = 4;
|
||||
static final int IPV4 = 1;
|
||||
static final int DOMAIN_NAME = 3;
|
||||
static final int IPV6 = 4;
|
||||
|
||||
static final int REQUEST_OK = 0;
|
||||
static final int GENERAL_FAILURE = 1;
|
||||
static final int NOT_ALLOWED = 2;
|
||||
static final int NOT_ALLOWED = 2;
|
||||
static final int NET_UNREACHABLE = 3;
|
||||
static final int HOST_UNREACHABLE = 4;
|
||||
static final int CONN_REFUSED = 5;
|
||||
static final int TTL_EXPIRED = 6;
|
||||
static final int CONN_REFUSED = 5;
|
||||
static final int TTL_EXPIRED = 6;
|
||||
static final int CMD_NOT_SUPPORTED = 7;
|
||||
static final int ADDR_TYPE_NOT_SUP = 8;
|
||||
|
||||
private int port;
|
||||
private ServerSocket server;
|
||||
private boolean useV4 = false;
|
||||
private java.util.Hashtable users = new java.util.Hashtable();
|
||||
private boolean done = false;
|
||||
private HashMap<String,String> users = new HashMap<>();
|
||||
private volatile boolean done = false;
|
||||
// Inner class to handle protocol with client
|
||||
// This is the bulk of the work (protocol handler)
|
||||
class ClientHandler extends Thread {
|
||||
@ -136,7 +137,7 @@ public class SocksServer extends Thread {
|
||||
System.err.println("User: '" + uname);
|
||||
System.err.println("PSWD: '" + password);
|
||||
if (users.containsKey(uname)) {
|
||||
String p1 = (String) users.get(uname);
|
||||
String p1 = users.get(uname);
|
||||
System.err.println("p1 = " + p1);
|
||||
if (p1.equals(password)) {
|
||||
out.write(PROTO_VERS);
|
||||
@ -492,7 +493,12 @@ public class SocksServer extends Thread {
|
||||
public SocksServer(int port) throws IOException {
|
||||
this.port = port;
|
||||
server = new ServerSocket();
|
||||
server.bind(new InetSocketAddress(port));
|
||||
if (port == 0) {
|
||||
server.bind(null);
|
||||
this.port = server.getLocalPort();
|
||||
} else {
|
||||
server.bind(new InetSocketAddress(port));
|
||||
}
|
||||
}
|
||||
|
||||
public SocksServer() throws IOException {
|
||||
@ -503,8 +509,13 @@ public class SocksServer extends Thread {
|
||||
users.put(user, passwd);
|
||||
}
|
||||
|
||||
public synchronized void terminate() {
|
||||
public int getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void terminate() {
|
||||
done = true;
|
||||
try { server.close(); } catch (IOException unused) {}
|
||||
}
|
||||
|
||||
public void run() {
|
||||
|
@ -26,23 +26,22 @@
|
||||
* @bug 4727547
|
||||
* @summary SocksSocketImpl throws NullPointerException
|
||||
* @build SocksServer
|
||||
* @run main SocksV4Test
|
||||
*/
|
||||
|
||||
import java.net.*;
|
||||
import java.io.*;
|
||||
|
||||
public class SocksV4Test {
|
||||
public static void main(String[] args) throws IOException {
|
||||
// Create a SOCKS V4 proxy on port 8888
|
||||
SocksServer srvr = new SocksServer(8888, true);
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Create a SOCKS V4 proxy
|
||||
SocksServer srvr = new SocksServer(0, true);
|
||||
srvr.start();
|
||||
System.setProperty("socksProxyHost", "localhost");
|
||||
System.setProperty("socksProxyPort", "8888");
|
||||
Proxy sp = new Proxy(Proxy.Type.SOCKS,
|
||||
new InetSocketAddress("localhost", srvr.getPort()));
|
||||
// Let's create an unresolved address
|
||||
InetSocketAddress ad = new InetSocketAddress("doesnt.exist.name", 1234);
|
||||
Socket s = new Socket();
|
||||
try {
|
||||
s.connect(ad,10000);
|
||||
try (Socket s = new Socket(sp)) {
|
||||
s.connect(ad, 10000);
|
||||
} catch (UnknownHostException ex) {
|
||||
// OK, that's what we expected
|
||||
} catch (NullPointerException npe) {
|
||||
@ -50,7 +49,6 @@ public class SocksV4Test {
|
||||
throw new RuntimeException("Got a NUllPointerException");
|
||||
} finally {
|
||||
srvr.terminate();
|
||||
srvr.interrupt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user