%--
- Copyright (C) 2007 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.
--%>
<%@ page import="org.jivesoftware.util.JiveGlobals" %>
<%@ page import="org.jivesoftware.util.ParamUtils" %>
<%@ page import="org.jivesoftware.openfire.XMPPServer" %>
<%@ page import="org.jivesoftware.openfire.stun.STUNService" %>
<%@ page import="org.jivesoftware.openfire.stun.StunServerAddress" %>
<%@ page import="java.net.InetAddress" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<%
STUNService stunService = XMPPServer.getInstance().getSTUNService();
boolean save = request.getParameter("save") != null;
boolean add = request.getParameter("add") != null;
int remove = ParamUtils.getIntParameter(request, "remove", -1);
boolean success = false;
boolean enabled = true;
boolean localEnabled = false;
String primaryAddress;
String secondaryAddress;
int primaryPort = 3478;
int secondaryPort = 3479;
if (save) {
primaryPort = ParamUtils.getIntParameter(request, "primaryPort", primaryPort);
JiveGlobals.setProperty("stun.port.primary", String.valueOf(primaryPort));
secondaryPort = ParamUtils.getIntParameter(request, "secondaryPort", secondaryPort);
JiveGlobals.setProperty("stun.port.secondary", String.valueOf(secondaryPort));
primaryAddress = ParamUtils.getParameter(request, "primaryAddress", true);
JiveGlobals.setProperty("stun.address.primary", primaryAddress);
secondaryAddress = ParamUtils.getParameter(request, "secondaryAddress", true);
JiveGlobals.setProperty("stun.address.secondary", secondaryAddress);
enabled = JiveGlobals.getBooleanProperty("stun.enabled", enabled);
localEnabled = ParamUtils.getBooleanParameter(request, "localEnabled", localEnabled);
JiveGlobals.setProperty("stun.local.enabled", String.valueOf(localEnabled));
stunService.stop();
stunService.initialize(XMPPServer.getInstance());
if (!enabled) localEnabled = false;
stunService.setEnabled(enabled, localEnabled);
success = stunService.isEnabled() == enabled && stunService.isLocalEnabled() == localEnabled;
} else if (remove > -1) {
stunService.removeExternalServer(remove);
success = true;
} else if (add) {
String server = ParamUtils.getParameter(request, "externalServer", true);
String port = ParamUtils.getParameter(request, "externalPort", true);
if (server != null && port != null)
if (!server.equals("") && !port.equals("")) {
if (server.indexOf(';') == -1 && server.indexOf(',') == -1 && server.indexOf('@') == -1) {
if (port.indexOf(';') == -1 && port.indexOf(',') == -1 && port.indexOf('@') == -1) {
stunService.addExternalServer(server, port);
success = true;
}
}
}
}
%>
<% if (success) { %>
<% } else if (save) { %>
<% } else if (add) { %>
<% } %>