From 75d80dc433348435c1f8e11fafb0d1deda1ca793 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Tue, 26 Jan 2016 20:09:27 +0300 Subject: import s2s component --- src/main/java/com/juick/xmpp/s2s/DNSQueries.java | 46 ++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main/java/com/juick/xmpp/s2s/DNSQueries.java (limited to 'src/main/java/com/juick/xmpp/s2s/DNSQueries.java') diff --git a/src/main/java/com/juick/xmpp/s2s/DNSQueries.java b/src/main/java/com/juick/xmpp/s2s/DNSQueries.java new file mode 100644 index 00000000..2b2d60e0 --- /dev/null +++ b/src/main/java/com/juick/xmpp/s2s/DNSQueries.java @@ -0,0 +1,46 @@ +package com.juick.xmpp.s2s; + +import java.net.UnknownHostException; +import java.util.Hashtable; +import java.util.Random; +import javax.naming.NamingException; +import javax.naming.directory.Attribute; +import javax.naming.directory.DirContext; +import javax.naming.directory.InitialDirContext; + +/** + * + * @author ugnich + */ +public class DNSQueries { + + private static Random rand = new Random(); + + public static HostnamePort getServerAddress(String hostname) throws UnknownHostException { + + String host = hostname; + int port = 5269; + + try { + Hashtable env = new Hashtable(5); + env.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory"); + DirContext ctx = new InitialDirContext(env); + Attribute att = ctx.getAttributes("_xmpp-server._tcp." + hostname, new String[]{"SRV"}).get("SRV"); + + if (att != null && att.size() > 0) { + int i = rand.nextInt(att.size()); + try { + String srv[] = att.get(i).toString().split(" "); + port = Integer.parseInt(srv[2]); + host = srv[3]; + } catch (Exception e) { + } + } + + ctx.close(); + } catch (NamingException e) { + } + + return new HostnamePort(host, port); + } +} -- cgit v1.2.3