| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
 | 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);
   }
}
 |