Skip to content

Instantly share code, notes, and snippets.

@mohsenk
Forked from etiennecarriere/DNSPromise.java
Created August 24, 2017 07:55
Show Gist options
  • Save mohsenk/0656238c061baa3475e84ec2bbd1229e to your computer and use it in GitHub Desktop.
Save mohsenk/0656238c061baa3475e84ec2bbd1229e to your computer and use it in GitHub Desktop.

Revisions

  1. @etiennecarriere etiennecarriere created this gist Aug 22, 2017.
    37 changes: 37 additions & 0 deletions DNSPromise.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    import java.net.InetSocketAddress;

    import io.netty.channel.AddressedEnvelope;
    import io.netty.handler.codec.dns.DnsRecord;
    import io.netty.handler.codec.dns.DnsResponse;
    import io.netty.handler.codec.dns.DnsSection;
    import io.netty.util.concurrent.DefaultPromise;
    import io.netty.util.concurrent.Future;
    import io.netty.util.concurrent.GenericFutureListener;

    public class DnsPromise extends DefaultPromise<AddressedEnvelope<? extends DnsResponse,InetSocketAddress>>{

    public DnsPromise() {
    addListener(new DnsListener());
    }

    public class DnsListener implements GenericFutureListener<Future <AddressedEnvelope<? extends DnsResponse,InetSocketAddress>>>{

    @Override
    public void operationComplete(Future<AddressedEnvelope<? extends DnsResponse, InetSocketAddress>> future)
    throws Exception {
    DnsResponse response = future.getNow().content();
    DnsRecord answer = response.recordAt(DnsSection.ANSWER);
    if (answer != null) {
    System.out.println("POSITIVE ANSWER "+ answer.name()+ " TTL "+ answer.timeToLive());
    }else {
    DnsRecord authoritity = response.recordAt(DnsSection.AUTHORITY);
    System.out.println("Negative ANSWER TTL" + authoritity.timeToLive());

    }


    }


    }
    }
    37 changes: 37 additions & 0 deletions MainClass.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    import java.net.InetSocketAddress;
    import java.util.concurrent.ExecutionException;

    import io.netty.channel.AddressedEnvelope;
    import io.netty.channel.EventLoopGroup;
    import io.netty.channel.nio.NioEventLoopGroup;
    import io.netty.channel.socket.nio.NioDatagramChannel;
    import io.netty.handler.codec.dns.DefaultDnsQuestion;
    import io.netty.handler.codec.dns.DnsQuestion;
    import io.netty.handler.codec.dns.DnsRecordType;
    import io.netty.handler.codec.dns.DnsResponse;
    import io.netty.resolver.dns.DnsNameResolver;
    import io.netty.resolver.dns.DnsNameResolverBuilder;
    import io.netty.resolver.dns.SingletonDnsServerAddressStreamProvider;
    import io.netty.util.concurrent.Future;

    public class MainClass {

    public static void main(String[] args) throws InterruptedException, ExecutionException {
    EventLoopGroup group = new NioEventLoopGroup(1);
    //DnsNameResolver dnsNameResolver = new DnsNameResolver(group.next(),NioDatagramChannel.class,DnsServerAddresses.shuffled(SERVERS));
    DnsNameResolver dnsNameResolver = new DnsNameResolverBuilder(group.next())
    .channelType(NioDatagramChannel.class)
    .nameServerProvider(new SingletonDnsServerAddressStreamProvider(new InetSocketAddress("127.0.0.1", 53)))
    .build();
    int i = 154;
    int j = 6;
    String query = j+ "." + i + "." + "228.160.in-addr.arpa";
    DnsQuestion dnsQuestion = new DefaultDnsQuestion(query, DnsRecordType.PTR);
    Future<AddressedEnvelope<DnsResponse,InetSocketAddress>> futureResponse = dnsNameResolver.query(dnsQuestion,new DnsPromise());
    System.out.println("apres");
    }




    }