From 27bb19646fe4046628e9a21e63a425c1f7a8f15f Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sun, 31 Jul 2016 01:35:18 +0300 Subject: move components to api module --- .../main/java/com/juick/xmpp/s2s/DNSQueries.java | 47 ++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 juick-api/src/main/java/com/juick/xmpp/s2s/DNSQueries.java (limited to 'juick-api/src/main/java/com/juick/xmpp/s2s/DNSQueries.java') diff --git a/juick-api/src/main/java/com/juick/xmpp/s2s/DNSQueries.java b/juick-api/src/main/java/com/juick/xmpp/s2s/DNSQueries.java new file mode 100644 index 00000000..e4c5f085 --- /dev/null +++ b/juick-api/src/main/java/com/juick/xmpp/s2s/DNSQueries.java @@ -0,0 +1,47 @@ +package com.juick.xmpp.s2s; + +import java.net.InetSocketAddress; +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 InetSocketAddress 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 InetSocketAddress(host, port); + } +} -- cgit v1.2.3