Commit 245a2d90 authored by Thiago Camargo's avatar Thiago Camargo Committed by thiago

Fixes, Logic Improvements and Default values for STUN Service

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@7678 b35dd754-fafc-0310-a699-88a17e54d16e
parent a061fdaa
......@@ -59,6 +59,8 @@ public class STUNService extends BasicModule implements ServerItemsProvider, Rou
private List<StunServerAddress> externalServers = null;
private String defaultExternalAddresses = "stun.xten.net:3478;jivesoftware.com:3478;igniterealtime.org:3478";
public static final String NAMESPACE = "google:jingleinfo";
/**
......@@ -76,7 +78,11 @@ public class STUNService extends BasicModule implements ServerItemsProvider, Rou
primaryAddress = JiveGlobals.getProperty("stun.address.primary");
secondaryAddress = JiveGlobals.getProperty("stun.address.secondary");
externalServers = getStunServerAddresses(JiveGlobals.getProperty("stun.external.addresses"));
String addresses = JiveGlobals.getProperty("stun.external.addresses");
if (addresses == null) addresses = defaultExternalAddresses;
externalServers = getStunServerAddresses(addresses);
if (primaryAddress == null || primaryAddress.equals(""))
primaryAddress = JiveGlobals.getProperty("xmpp.domain",
......@@ -218,10 +224,15 @@ public class STUNService extends BasicModule implements ServerItemsProvider, Rou
if (isEnabled()) {
Element stun = childElementCopy.addElement("stun");
if (isLocalEnabled()) {
Element server = stun.addElement("server");
server.addAttribute("host", primaryAddress);
server.addAttribute("udp", String.valueOf(primaryPort));
StunServerAddress local = null;
local = new StunServerAddress(primaryAddress, String.valueOf(primaryPort));
if (!externalServers.contains(local)) {
Element server = stun.addElement("server");
server.addAttribute("host", local.getServer());
server.addAttribute("udp", local.getPort());
}
}
for (StunServerAddress stunServerAddress : externalServers) {
Element server = stun.addElement("server");
......@@ -449,37 +460,6 @@ public class STUNService extends BasicModule implements ServerItemsProvider, Rou
return list;
}
/**
* Provides easy abstract to store STUN Server Addresses and Ports
*/
public class StunServerAddress {
private String server;
private String port;
public StunServerAddress(String server, String port) {
this.server = server;
this.port = port;
}
/**
* Get the Host Address
*
* @return Host Address
*/
public String getServer() {
return server;
}
/**
* Get STUN port
*
* @return the Server Port
*/
public String getPort() {
return port;
}
}
/**
* Abstraction method used to convert a String into a STUN Server Address List
*
......@@ -490,13 +470,15 @@ public class STUNService extends BasicModule implements ServerItemsProvider, Rou
List<StunServerAddress> list = new ArrayList<StunServerAddress>();
if (addresses == null || addresses.equals("")) return list;
if (addresses.equals("")) return list;
String servers[] = addresses.split(";");
for (String server : servers) {
String address[] = server.split(":");
list.add(new StunServerAddress(address[0], address[1]));
StunServerAddress aux = new StunServerAddress(address[0], address[1]);
if (!list.contains(aux))
list.add(aux);
}
return list;
......
/**
* $RCSfile$
* $Revision: 3144 $
* $Date: 2005-12-01 14:20:11 -0300 (Thu, 01 Dec 2005) $
*
* Copyright (C) 2004 Jive Software. All rights reserved.
*
* This software is published under the terms of the GNU Public License (GPL),
* a copy of which is included in this distribution.
*/
package org.jivesoftware.wildfire.stun;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* Provides easy abstract to store STUN Server Addresses and Ports
*/
public class StunServerAddress {
private String server;
private String port;
public StunServerAddress(String server, String port) {
this.server = server;
this.port = port;
}
/**
* Get the Host Address
*
* @return Host Address
*/
public String getServer() {
return server;
}
/**
* Get STUN port
*
* @return the Server Port
*/
public String getPort() {
return port;
}
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj instanceof StunServerAddress) {
StunServerAddress other = (StunServerAddress) obj;
if (this.getPort().equals(other.getPort())) {
if (this.getServer().equals(other.getServer())) {
return true;
}
try {
InetAddress addr0 = InetAddress.getByName(this.getServer());
InetAddress addr1 = InetAddress.getByName(other.getServer());
return addr0.getHostAddress().equals(addr1.getHostAddress());
} catch (UnknownHostException e) {
return false;
}
}
}
return false;
}
}
\ No newline at end of file
/**
* $RCSfile$
* $Revision: 70 $
* $Date: 2004-10-22 15:35:36 -0200 (sex, 22 out 2004) $
*
* Copyright (C) 1999-2003 CoolServlets, Inc. All rights reserved.
*
* This software is the proprietary information of CoolServlets, Inc.
* Use is subject to license terms.
*/
package org.jivesoftware.util;
import junit.framework.TestCase;
import org.jivesoftware.wildfire.stun.StunServerAddress;
import java.util.List;
import java.util.ArrayList;
public class STUNServerTest extends TestCase {
public void testEqualsStunServerAddress() {
StunServerAddress addr0 = new StunServerAddress("apollo", "10000");
StunServerAddress addr1 = new StunServerAddress("apollo", "10000");
StunServerAddress addr2 = new StunServerAddress("63.246.20.124", "10002");
StunServerAddress addr3 = new StunServerAddress("jivesoftware.com", "10002");
StunServerAddress addr4 = new StunServerAddress("jivesoftware.com", "10003");
assertTrue(addr0.equals(addr1));
assertFalse(addr0.equals(addr2));
assertTrue(addr2.equals(addr3));
assertFalse(addr3.equals(addr4));
List<StunServerAddress> list = new ArrayList<StunServerAddress>();
list.add(addr0);
list.add(addr1);
list.add(addr2);
list.add(addr4);
assertTrue(list.contains(addr3));
}
}
......@@ -13,6 +13,7 @@
<%@ page import="org.jivesoftware.wildfire.stun.STUNService" %>
<%@ page import="java.net.InetAddress" %>
<%@ page import="java.util.List" %>
<%@ page import="org.jivesoftware.wildfire.stun.StunServerAddress" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
......@@ -311,7 +312,7 @@
<tbody>
<%
int i = 0;
for (STUNService.StunServerAddress stunServerAddress : stunService.getExternalServers()) {
for (StunServerAddress stunServerAddress : stunService.getExternalServers()) {
%>
<tr>
<td align="left">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment