Skip to content

Instantly share code, notes, and snippets.

@etiennecarriere
Created August 22, 2017 05:53
Show Gist options
  • Save etiennecarriere/cec6b37dec05a1b5301d59ec190c456a to your computer and use it in GitHub Desktop.
Save etiennecarriere/cec6b37dec05a1b5301d59ec190c456a to your computer and use it in GitHub Desktop.
Usage of Listener on DNSResolver
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());
}
}
}
}
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");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment