package net.minecraft.client.multiplayer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.Hashtable; import javax.naming.directory.Attributes; import javax.naming.directory.InitialDirContext; @SideOnly(Side.CLIENT) public class ServerAddress { private final String ipAddress; private final int serverPort; private ServerAddress(String par1Str, int par2) { this.ipAddress = par1Str; this.serverPort = par2; } public String getIP() { return this.ipAddress; } public int getPort() { return this.serverPort; } public static ServerAddress func_78860_a(String par0Str) { if (par0Str == null) { return null; } else { String[] var1 = par0Str.split(":"); if (par0Str.startsWith("[")) { int var2 = par0Str.indexOf("]"); if (var2 > 0) { String var3 = par0Str.substring(1, var2); String var4 = par0Str.substring(var2 + 1).trim(); if (var4.startsWith(":") && var4.length() > 0) { var4 = var4.substring(1); var1 = new String[] {var3, var4}; } else { var1 = new String[] {var3}; } } } if (var1.length > 2) { var1 = new String[] {par0Str}; } String var5 = var1[0]; int var6 = var1.length > 1 ? parseIntWithDefault(var1[1], 25565) : 25565; if (var6 == 25565) { String[] var7 = getServerAddress(var5); var5 = var7[0]; var6 = parseIntWithDefault(var7[1], 25565); } return new ServerAddress(var5, var6); } } /** * Returns a server's address and port for the specified hostname, looking up the SRV record if possible */ private static String[] getServerAddress(String par0Str) { try { Class.forName("com.sun.jndi.dns.DnsContextFactory"); Hashtable var2 = new Hashtable(); var2.put("java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory"); var2.put("java.naming.provider.url", "dns:"); InitialDirContext var3 = new InitialDirContext(var2); Attributes var4 = var3.getAttributes("_minecraft._tcp." + par0Str, new String[] {"SRV"}); String[] var5 = var4.get("srv").get().toString().split(" ", 4); return new String[] {var5[3], var5[2]}; } catch (Throwable var6) { return new String[] {par0Str, Integer.toString(25565)}; } } private static int parseIntWithDefault(String par0Str, int par1) { try { return Integer.parseInt(par0Str.trim()); } catch (Exception var3) { return par1; } } }