You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Daniele guiducci (JIRA)" <ji...@apache.org> on 2013/09/14 20:47:51 UTC

[jira] [Commented] (DIRMINA-963) Socks5 and ProxyConnector don't work with InetSocketAddress.createUnresolved

    [ https://issues.apache.org/jira/browse/DIRMINA-963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13767541#comment-13767541 ] 

Daniele guiducci commented on DIRMINA-963:
------------------------------------------

Inside file Socks5LogicHandler
Replace line 129
from:             host = request.getHost() != null ? request.getHost().getBytes("ASCII") : null;
to:             host = adr != null ? adr.getHostName().getBytes("ASCII") : null;
                
> Socks5 and ProxyConnector don't work with InetSocketAddress.createUnresolved
> ----------------------------------------------------------------------------
>
>                 Key: DIRMINA-963
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-963
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.7
>            Reporter: Daniele guiducci
>              Labels: InetSocketAddress, bug, proxy, socks
>
> I'm tring to use Tor to connect using proxy (SOCKS5).
> InetSocketAddress resolve dns without use Tor, so i can not use in production.
> To use tor to resolve dns i must use   InetSocketAddress.createUnresolved.
> java.net.Socket work perfectly also with .onion url.
>  public static void main(String[] args) throws Exception{
>         NioSocketConnector nioConnector=new NioSocketConnector();
>         nioConnector.setConnectTimeoutMillis(60000);
>         SocksProxyRequest pr = new SocksProxyRequest(
>                 SocksProxyConstants.SOCKS_VERSION_5,
>                 SocksProxyConstants.ESTABLISH_TCPIP_STREAM,
>                 new InetSocketAddress("www.google.com", 80), ""); 
>         ProxyIoSession ps=new ProxyIoSession(new InetSocketAddress("127.0.0.1", 9050), pr);
>         ProxyConnector connector=new ProxyConnector(nioConnector);
>         connector.getFilterChain().addLast("logger", new LoggingFilter());
>         connector.setProxyIoSession(ps);
>         connector.setHandler(new MyHandler());
>         ConnectFuture cf=connector.connect();
>         IoSession session=cf.getSession();
>         session.getCloseFuture().awaitUninterruptibly();
>         cf.awaitUninterruptibly();
>        Thread.sleep(40000);
>     }
>     private static class MyHandler extends AbstractProxyIoHandler {
>         @Override
>         public void proxySessionOpened(IoSession session) {
>             System.out.println("ProxySession aperta");
>             session.write(IoBuffer.wrap("GET / HTTP/1.0\n\n".getBytes()));
>         }
>         @Override
>         public void  messageReceived(IoSession session, Object msg) {
>             System.out.println("Data:"+new String(((IoBuffer)msg).array()));
>         }
>         @Override
>         public void exceptionCaught(IoSession session, Throwable cause)   throws Exception {
>             System.out.println("Error: "+cause);
>         }
>     }
> =======================================================
>   public static void main(String[] args) throws Exception{
>         NioSocketConnector nioConnector=new NioSocketConnector();
>         nioConnector.setConnectTimeoutMillis(60000);
>         SocksProxyRequest pr = new SocksProxyRequest(
>                 SocksProxyConstants.SOCKS_VERSION_5,
>                 SocksProxyConstants.ESTABLISH_TCPIP_STREAM,
>                  InetSocketAddress.createUnresolved("www.google.com", 80), ""); 
>         ProxyIoSession ps=new ProxyIoSession(new InetSocketAddress("127.0.0.1", 9050), pr);
>         ProxyConnector connector=new ProxyConnector(nioConnector);
>         connector.getFilterChain().addLast("logger", new LoggingFilter());
>         connector.setProxyIoSession(ps);
>         connector.setHandler(new MyHandler());
>         ConnectFuture cf=connector.connect();
>         IoSession session=cf.getSession();
>         session.getCloseFuture().awaitUninterruptibly();
>         cf.awaitUninterruptibly();
>        Thread.sleep(40000);
>     }
>     private static class MyHandler extends AbstractProxyIoHandler {
>         @Override
>         public void proxySessionOpened(IoSession session) {
>             System.out.println("ProxySession aperta");
>             session.write(IoBuffer.wrap("GET / HTTP/1.0\n\n".getBytes()));
>         }
>         @Override
>         public void  messageReceived(IoSession session, Object msg) {
>             System.out.println("Data:"+new String(((IoBuffer)msg).array()));
>         }
>         @Override
>         public void exceptionCaught(IoSession session, Throwable cause)   throws Exception {
>             System.out.println("Error: "+cause);
>         }
>     }
> =========================
> java.net.Socket example working with tor.
> Socket socket=new Socket(new Proxy(Proxy.Type.SOCKS,new InetSocketAddress("127.0.0.1", 9050)));
>         System.out.println("Tryng connect ");
>         socket.connect(InetSocketAddress.createUnresolved("kpvz7ki2v5agwT35.onion", 80),200000);
>         System.out.println("Connected.");
>         OutputStream os=socket.getOutputStream();
>         os.write("GET /wiki/index.php/Main_Page HTTP/1.0\n\n".getBytes());
>         os.flush();
>         System.out.println("Waiting answer.");
>         System.out.println("Output:"+IOUtils.toString(socket.getInputStream()));
> Tell me for other information.
> Thank you.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira