diff options
author | Kenny Root <kenny@the-b.org> | 2014-10-01 23:04:51 +0100 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2014-10-01 12:48:19 +0100 |
commit | 49b779dcaf03e3598d2709b321e20ea029b25163 (patch) | |
tree | 05af547b1f1433d7dd6f7373d0b25a455e053a03 /src/net/sourceforge/jsocks/server | |
parent | d64786d9197090c74072b648e487e3d34817bb57 (diff) | |
download | connectbot-49b779dcaf03e3598d2709b321e20ea029b25163.tar.gz connectbot-49b779dcaf03e3598d2709b321e20ea029b25163.tar.bz2 connectbot-49b779dcaf03e3598d2709b321e20ea029b25163.zip |
Convert to gradle build system
Diffstat (limited to 'src/net/sourceforge/jsocks/server')
-rw-r--r-- | src/net/sourceforge/jsocks/server/ServerAuthenticator.java | 120 | ||||
-rw-r--r-- | src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java | 169 |
2 files changed, 0 insertions, 289 deletions
diff --git a/src/net/sourceforge/jsocks/server/ServerAuthenticator.java b/src/net/sourceforge/jsocks/server/ServerAuthenticator.java deleted file mode 100644 index cb7f0af..0000000 --- a/src/net/sourceforge/jsocks/server/ServerAuthenticator.java +++ /dev/null @@ -1,120 +0,0 @@ -package net.sourceforge.jsocks.server; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.DatagramPacket; -import java.net.Socket; - -import net.sourceforge.jsocks.ProxyMessage; -import net.sourceforge.jsocks.UDPEncapsulation; - -/** - Classes implementing this interface should provide socks server with - authentication and authorization of users. -**/ -public interface ServerAuthenticator{ - - /** - This method is called when a new connection accepted by the server. - <p> - At this point no data have been extracted from the connection. It is - responsibility of this method to ensure that the next byte in the - stream after this method have been called is the first byte of the - socks request message. For SOCKSv4 there is no authentication data and - the first byte in the stream is part of the request. With SOCKSv5 however - there is an authentication data first. It is expected that implementaions - will process this authentication data. - <p> - If authentication was successful an instance of ServerAuthentication - should be returned, it later will be used by the server to perform - authorization and some other things. If authentication fails null should - be returned, or an exception may be thrown. - - @param s Accepted Socket. - @return An instance of ServerAuthenticator to be used for this connection - or null - */ - ServerAuthenticator startSession(Socket s) throws IOException; - - /** - This method should return input stream which should be used on the - accepted socket. - <p> - SOCKSv5 allows to have multiple authentication methods, and these methods - might require some kind of transformations being made on the data. - <p> - This method is called on the object returned from the startSession - function. - */ - InputStream getInputStream(); - /** - This method should return output stream to use to write to the accepted - socket. - <p> - SOCKSv5 allows to have multiple authentication methods, and these methods - might require some kind of transformations being made on the data. - <p> - This method is called on the object returned from the startSession - function. - */ - OutputStream getOutputStream(); - - /** - This method should return UDPEncapsulation, which should be used - on the datagrams being send in/out. - <p> - If no transformation should be done on the datagrams, this method - should return null. - <p> - This method is called on the object returned from the startSession - function. - */ - - UDPEncapsulation getUdpEncapsulation(); - - /** - This method is called when a request have been read. - <p> - Implementation should decide wether to grant request or not. Returning - true implies granting the request, false means request should be rejected. - <p> - This method is called on the object returned from the startSession - function. - @param msg Request message. - @return true to grant request, false to reject it. - */ - boolean checkRequest(ProxyMessage msg); - - /** - This method is called when datagram is received by the server. - <p> - Implementaions should decide wether it should be forwarded or dropped. - It is expecteed that implementation will use datagram address and port - information to make a decision, as well as anything else. Address and - port of the datagram are always correspond to remote machine. It is - either destination or source address. If out is true address is destination - address, else it is a source address, address of the machine from which - datagram have been received for the client. - <p> - Implementaions should return true if the datagram is to be forwarded, and - false if the datagram should be dropped. - <p> - This method is called on the object returned from the startSession - function. - - @param out If true the datagram is being send out(from the client), - otherwise it is an incoming datagram. - @return True to forward datagram false drop it silently. - */ - boolean checkRequest(DatagramPacket dp, boolean out); - - /** - This method is called when session is completed. Either due to normal - termination or due to any error condition. - <p> - This method is called on the object returned from the startSession - function. - */ - void endSession(); -} diff --git a/src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java b/src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java deleted file mode 100644 index e4edbe7..0000000 --- a/src/net/sourceforge/jsocks/server/ServerAuthenticatorNone.java +++ /dev/null @@ -1,169 +0,0 @@ -package net.sourceforge.jsocks.server; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PushbackInputStream; -import java.net.Socket; - -import net.sourceforge.jsocks.ProxyMessage; -import net.sourceforge.jsocks.UDPEncapsulation; - -/** - An implementation of ServerAuthenticator, which does <b>not</b> do - any authentication. -<P> -<FONT size="+3" color ="FF0000"> Warning!!</font><br> Should not be -used on machines which are not behind the firewall. -<p> -It is only provided to make implementing other authentication schemes -easier.<br> -For Example: <tt><pre> - class MyAuth extends socks.server.ServerAuthenticator{ - ... - public ServerAuthenticator startSession(java.net.Socket s){ - if(!checkHost(s.getInetAddress()) return null; - return super.startSession(s); - } - - boolean checkHost(java.net.Inetaddress addr){ - boolean allow; - //Do it somehow - return allow; - } - } -</pre></tt> -*/ -public class ServerAuthenticatorNone implements ServerAuthenticator{ - - static final byte[] socks5response = {5,0}; - - InputStream in; - OutputStream out; - - /** - Creates new instance of the ServerAuthenticatorNone. - */ - public ServerAuthenticatorNone(){ - this.in = null; - this.out = null; - } - /** - Constructs new ServerAuthenticatorNone object suitable for returning - from the startSession function. - @param in Input stream to return from getInputStream method. - @param out Output stream to return from getOutputStream method. - */ - public ServerAuthenticatorNone(InputStream in, OutputStream out){ - this.in = in; - this.out = out; - } - /** - Grants access to everyone.Removes authentication related bytes from - the stream, when a SOCKS5 connection is being made, selects an - authentication NONE. - */ - public ServerAuthenticator startSession(Socket s) - throws IOException{ - - PushbackInputStream in = new PushbackInputStream(s.getInputStream()); - OutputStream out = s.getOutputStream(); - - int version = in.read(); - if(version == 5){ - if(!selectSocks5Authentication(in,out,0)) - return null; - }else if(version == 4){ - //Else it is the request message allready, version 4 - in.unread(version); - }else - return null; - - - return new ServerAuthenticatorNone(in,out); - } - - /** - Get input stream. - @return Input stream speciefied in the constructor. - */ - public InputStream getInputStream(){ - return in; - } - /** - Get output stream. - @return Output stream speciefied in the constructor. - */ - public OutputStream getOutputStream(){ - return out; - } - /** - Allways returns null. - @return null - */ - public UDPEncapsulation getUdpEncapsulation(){ - return null; - } - - /** - Allways returns true. - */ - public boolean checkRequest(ProxyMessage msg){ - return true; - } - - /** - Allways returns true. - */ - public boolean checkRequest(java.net.DatagramPacket dp, boolean out){ - return true; - } - - /** - Does nothing. - */ - public void endSession(){ - } - - /** - Convinience routine for selecting SOCKSv5 authentication. - <p> - This method reads in authentication methods that client supports, - checks wether it supports given method. If it does, the notification - method is written back to client, that this method have been chosen - for authentication. If given method was not found, authentication - failure message is send to client ([5,FF]). - @param in Input stream, version byte should be removed from the stream - before calling this method. - @param out Output stream. - @param methodId Method which should be selected. - @return true if methodId was found, false otherwise. - */ - static public boolean selectSocks5Authentication(InputStream in, - OutputStream out, - int methodId) - throws IOException{ - - int num_methods = in.read(); - if (num_methods <= 0) return false; - byte method_ids[] = new byte[num_methods]; - byte response[] = new byte[2]; - boolean found = false; - - response[0] = (byte) 5; //SOCKS version - response[1] = (byte) 0xFF; //Not found, we are pessimistic - - int bread = 0; //bytes read so far - while(bread < num_methods) - bread += in.read(method_ids,bread,num_methods-bread); - - for(int i=0;i<num_methods;++i) - if(method_ids[i] == methodId){ - found = true; - response[1] = (byte) methodId; - break; - } - - out.write(response); - return found; - } -} |