diff src/net/sourceforge/jsocks/Socks4Proxy.java @ 0:0ce5cc452d02

initial version
author Carl Byington <carl@five-ten-sg.com>
date Thu, 22 May 2014 10:41:19 -0700
parents
children 205ee2873330
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/net/sourceforge/jsocks/Socks4Proxy.java	Thu May 22 10:41:19 2014 -0700
@@ -0,0 +1,110 @@
+package net.sourceforge.jsocks;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+  Proxy which describes SOCKS4 proxy.
+*/
+
+public class Socks4Proxy extends Proxy implements Cloneable {
+
+//Data members
+    String user;
+
+//Public Constructors
+//====================
+
+    /**
+      Creates the SOCKS4 proxy
+      @param p Proxy to use to connect to this proxy, allows proxy chaining.
+      @param proxyHost Address of the proxy server.
+      @param proxyPort Port of the proxy server
+      @param user User name to use for identification purposes.
+      @throws UnknownHostException If proxyHost can't be resolved.
+     */
+    public Socks4Proxy(String proxyHost, int proxyPort, String user)
+    throws UnknownHostException {
+        super(proxyHost, proxyPort);
+        this.user = new String(user);
+        version = 4;
+    }
+
+    /**
+      Creates the SOCKS4 proxy
+      @param p Proxy to use to connect to this proxy, allows proxy chaining.
+      @param proxyIP Address of the proxy server.
+      @param proxyPort Port of the proxy server
+      @param user User name to use for identification purposes.
+     */
+    public Socks4Proxy(Proxy p, InetAddress proxyIP, int proxyPort, String user) {
+        super(p, proxyIP, proxyPort);
+        this.user = new String(user);
+        version = 4;
+    }
+
+    /**
+      Creates the SOCKS4 proxy
+      @param proxyIP Address of the proxy server.
+      @param proxyPort Port of the proxy server
+      @param user User name to use for identification purposes.
+     */
+    public Socks4Proxy(InetAddress proxyIP, int proxyPort, String user) {
+        this(null, proxyIP, proxyPort, user);
+    }
+
+//Public instance methods
+//========================
+
+    /**
+     * Creates a clone of this proxy. Changes made to the clone should not
+     * affect this object.
+     */
+    public Object clone() {
+        Socks4Proxy newProxy = new Socks4Proxy(proxyIP, proxyPort, user);
+        newProxy.chainProxy = chainProxy;
+        return newProxy;
+    }
+
+
+//Public Static(Class) Methods
+//==============================
+
+
+//Protected Methods
+//=================
+
+    protected Proxy copy() {
+        Socks4Proxy copy = new Socks4Proxy(proxyIP, proxyPort, user);
+        copy.chainProxy = chainProxy;
+        return copy;
+    }
+
+    protected ProxyMessage formMessage(int cmd, InetAddress ip, int port) {
+        switch (cmd) {
+            case SOCKS_CMD_CONNECT:
+                cmd = Socks4Message.REQUEST_CONNECT;
+                break;
+
+            case SOCKS_CMD_BIND:
+                cmd = Socks4Message.REQUEST_BIND;
+                break;
+
+            default:
+                return null;
+        }
+
+        return new Socks4Message(cmd, ip, port, user);
+    }
+    protected ProxyMessage formMessage(int cmd, String host, int port)
+    throws UnknownHostException {
+        return formMessage(cmd, InetAddress.getByName(host), port);
+    }
+    protected ProxyMessage formMessage(InputStream in)
+    throws SocksException,
+        IOException {
+        return new Socks4Message(in, true);
+    }
+
+}