source: 3thparty/jmessenger/src/nu/fw/jeti/plugins/filetransfer/socks5/jsocks/UserPasswordAuthentication.java @ 3952

Revision 3952, 2.2 KB checked in by alexandrecorreia, 13 years ago (diff)

Ticket #1710 - Adicao do codigo fonte java do componente jmessenger(jabberit_messenger)

  • Property svn:executable set to *
Line 
1package nu.fw.jeti.plugins.filetransfer.socks5.jsocks;
2
3/**
4  SOCKS5 User Password authentication scheme.
5*/
6public class UserPasswordAuthentication implements Authentication{
7
8   /**SOCKS ID for User/Password authentication method*/
9   public final static int METHOD_ID = 2;
10
11   String userName, password;
12   byte[] request;
13
14   /**
15     Create an instance of UserPasswordAuthentication.
16     @param userName User Name to send to SOCKS server.
17     @param password Password to send to SOCKS server.
18   */
19   public UserPasswordAuthentication(String userName,String password){
20     this.userName = userName;
21     this.password = password;
22     formRequest();
23   }
24   /** Get the user name.
25   @return User name.
26   */
27   public String getUser(){
28     return userName;
29   }
30   /** Get password
31   @return Password
32   */
33   public String getPassword(){
34     return password;
35   }
36   /**
37    Does User/Password authentication as defined in rfc1929.
38    @return An array containnig in, out streams, or null if authentication
39    fails.
40   */
41   public Object[] doSocksAuthentication(int methodId,
42                                         java.net.Socket proxySocket)
43                   throws java.io.IOException{
44
45      if(methodId != METHOD_ID) return null;
46
47      java.io.InputStream in = proxySocket.getInputStream();
48      java.io.OutputStream out = proxySocket.getOutputStream();
49
50      out.write(request);
51      int version = in.read();
52      if(version < 0) return null; //Server closed connection
53      int status = in.read();
54      if(status != 0) return null; //Server closed connection, or auth failed.
55
56      return new Object[] {in,out};
57   }
58
59//Private methods
60//////////////////
61
62/** Convert UserName password in to binary form, ready to be send to server*/
63   private void formRequest(){
64      byte[] user_bytes = userName.getBytes();
65      byte[] password_bytes = password.getBytes();
66
67      request = new byte[3+user_bytes.length+password_bytes.length];
68      request[0] = (byte) 1;
69      request[1] = (byte) user_bytes.length;
70      System.arraycopy(user_bytes,0,request,2,user_bytes.length);
71      request[2+user_bytes.length] = (byte) password_bytes.length;
72      System.arraycopy(password_bytes,0,
73                       request,3+user_bytes.length,password_bytes.length);
74   }
75}
Note: See TracBrowser for help on using the repository browser.