%--
- Copyright (C) 2005-2008 Jive Software. All rights reserved.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--%>
<%@ page import="java.util.*,
org.jivesoftware.util.*"
errorPage="error.jsp"
%>
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>
<% webManager.init(request, response, session, application, out ); %>
<%
// get parameters
String host = ParamUtils.getParameter(request,"host");
int port = ParamUtils.getIntParameter(request,"port",0);
String username = ParamUtils.getParameter(request,"server_username");
String password = ParamUtils.getParameter(request,"server_password");
boolean ssl = ParamUtils.getBooleanParameter(request,"ssl");
boolean save = request.getParameter("save") != null;
boolean test = request.getParameter("test") != null;
boolean debug = ParamUtils.getBooleanParameter(request, "debug");
// Handle a test request
if (test) {
response.sendRedirect("system-emailtest.jsp");
return;
}
EmailService service = EmailService.getInstance();
// Save the email settings if requested
Map errors = new HashMap();
if (save) {
if (host != null) {
service.setHost(host);
}
else {
errors.put("host","");
}
if (port > 0) {
service.setPort(port);
}
else {
// Default to port 25.
service.setPort(25);
}
service.setUsername(username);
// Get hash value of existing password
String existingHashPassword = "";
if (service.getPassword() != null) {
existingHashPassword = StringUtils.hash(service.getPassword());
}
// Check if the new password was changed. If it wasn't changed, then it is the original hashed password
// NOTE: if the new PLAIN password equals the previous HASHED password this fails, but is unlikely.
if (!existingHashPassword.equals(password)) {
// Hash the new password since it was changed
String newHashPassword = "";
if (password != null) {
newHashPassword = StringUtils.hash(password);
}
// Change password if hash values are different
if (!existingHashPassword.equals(newHashPassword)) {
service.setPassword(password);
}
}
service.setDebugEnabled(debug);
service.setSSLEnabled(ssl);
if (errors.size() == 0) {
// Log the event
webManager.logEvent("updated email service settings", "host = "+host+"\nport = "+port+"\nusername = "+username);
// Set property to specify email is configured
JiveGlobals.setProperty("mail.configured", "true");
response.sendRedirect("system-email.jsp?success=true");
}
}
host = service.getHost();
port = service.getPort();
username = service.getUsername();
password = service.getPassword();
ssl = service.isSSLEnabled();
debug = service.isDebugEnabled();
%>
<% if ("true".equals(request.getParameter("success"))) { %>