You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Emmanuel Lecharny (JIRA)" <ji...@apache.org> on 2014/09/04 19:18:51 UTC

[jira] [Updated] (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:all-tabpanel ]

Emmanuel Lecharny updated DIRMINA-963:
--------------------------------------
    Description: 
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.

{code}
 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);
        }
    }
{code}


=======================================================

{code}
  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);
        }
    }
{code}

=========================
java.net.Socket example working with tor.

{code}
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()));
{code}

Tell me for other information.
Thank you.

  was:
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.


> 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.
> {code}
>  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);
>         }
>     }
> {code}
> =======================================================
> {code}
>   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);
>         }
>     }
> {code}
> =========================
> java.net.Socket example working with tor.
> {code}
> 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()));
> {code}
> Tell me for other information.
> Thank you.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)