/*
* =============================================================================
*
* Copyright (c) 2007-2010, The JASYPT team (http://www.jasypt.org)
*
* 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.
*
* =============================================================================
*/
package org.jasypt.web.pbeconfig;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.jasypt.encryption.pbe.config.WebPBEConfig;
import org.jasypt.exceptions.EncryptionInitializationException;
HTML creation class for internal use of WebPBEConfigServlet
and WebPBEConfigFilter
.
Author: Daniel Fernández Since: 1.3
/**
* <p>
* HTML creation class for internal use of {@link WebPBEConfigServlet} and
* {@link WebPBEConfigFilter}.
* </p>
*
* @since 1.3
*
* @author Daniel Fernández
*
*/
final class WebPBEConfigHtmlUtils {
public static final String PASSWORD_SETTING_FLAG = "jasyptPwSetting";
public static final String VALIDATION_PREFIX = "jasyptVa";
public static final String PASSWORD_PREFIX = "jasyptPw";
public static final String PASSWORD_RETYPED_PREFIX = "jasyptRPw";
private static final String HTTPS_SCHEME = "https";
private WebPBEConfigHtmlUtils() {
super();
}
public static String createConfigurationDoneHtml() {
final StringBuffer strBuff = new StringBuffer();
addHeader(strBuff);
strBuff.append(" <h2>All Configuration Done</h2>\n");
addFoot(strBuff);
return strBuff.toString();
}
public static String createInputFormHtml(
final HttpServletRequest request, final boolean inputError) {
final WebPBEConfigRegistry registry = WebPBEConfigRegistry.getInstance();
final List configs = registry.getConfigs();
final StringBuffer strBuff = new StringBuffer();
addHeader(strBuff);
strBuff.append(" <h2>Please enter the PBE configuration parameters</h2>\n");
if (!HTTPS_SCHEME.equals(request.getScheme().toLowerCase())) {
strBuff.append(" <div class=\"warning\">WARNING: NOT IN SECURE MODE (HTTPS)</div>\n");
}
if (inputError) {
strBuff.append(" <div class=\"warning\">Validation error!</div>\n");
}
strBuff.append(" <form action=\"" + request.getRequestURI() + "\" method=\"POST\">\n");
strBuff.append(" <div>\n");
final Iterator configsIter = configs.iterator();
int i = 0;
while (configsIter.hasNext()) {
WebPBEConfig config =
(WebPBEConfig) configsIter.next();
if (!config.isComplete()) {
throw new EncryptionInitializationException("Incomplete " +
"WebPBEConfig object: all configs must specify " +
"both a name and a validation word");
}
strBuff.append(" <fieldset>\n");
strBuff.append(" <legend>" + config.getName() + "</legend>\n");
strBuff.append(" <label for=\"" + VALIDATION_PREFIX + i + "\">Validation word</label>: <input type=\"password\" name=\"" + VALIDATION_PREFIX + i + "\" />\n");
strBuff.append(" <br /><br />\n");
strBuff.append(" <label for=\"" + PASSWORD_PREFIX + i + "\">Password</label>: <input type=\"password\" name=\"" + PASSWORD_PREFIX + i + "\" />\n");
strBuff.append(" <br /><br />\n");
strBuff.append(" <label for=\"" + PASSWORD_RETYPED_PREFIX + i + "\">Retype password</label>: <input type=\"password\" name=\"" + PASSWORD_RETYPED_PREFIX + i + "\" />\n");
strBuff.append(" </fieldset>\n");
i++;
}
strBuff.append(" </div>\n");
strBuff.append(" <div id=\"button\">\n");
strBuff.append(" <input type=\"hidden\" name=\"" + PASSWORD_SETTING_FLAG + "\" value=\"true\" />\n");
strBuff.append(" <input type=\"submit\" value=\"Submit\" />\n");
strBuff.append(" </div>\n");
strBuff.append(" </form>\n");
addFoot(strBuff);
return strBuff.toString();
}
public static String createNotInitializedHtml() {
final StringBuffer strBuff = new StringBuffer();
strBuff.append("<html>\n");
strBuff.append(" <head>\n");
strBuff.append(" <title>Forbidden</title>\n");
strBuff.append(" </head>\n");
strBuff.append(" <body>\n");
strBuff.append(" <h1>Access Forbidden</h1>\n");
strBuff.append(" </body>\n");
strBuff.append("</html>\n");
return strBuff.toString();
}
private static void addHeader(final StringBuffer strBuff) {
strBuff.append("<html>\n");
strBuff.append(" <head>\n");
strBuff.append(" <title>Web Password Based Encryption Configuration</title>\n");
strBuff.append(" <style type=\"text/css\">");
strBuff.append(" html { background-color: #ccc; text-align: center; margin: 0px; padding: 0px;} body {text-align:center;} #page { width: 700px; background-color: white; margin-top: 10px; margin-left: auto; margin-right: auto; padding: 10px; border: 1px solid #000; text-align: left;} h1 { text-weight: bold;} #button { text-align: center; margin-top: 20px; } fieldset { margin-bottom: 20px; } label { font-style: italic; } legend { font-weight: bold; } div.warning { border: 1px dotted #000; margin: 15px; padding: 5px; background-color: eee; font-weight: bold; }");
strBuff.append(" </style>\n");
strBuff.append(" </head>\n");
strBuff.append(" <body>\n");
strBuff.append(" <div id=\"page\">\n");
strBuff.append(" <h1>Web PBE Configuration</h1>\n");
}
private static void addFoot(final StringBuffer strBuff) {
strBuff.append(" </div>\n");
strBuff.append(" </body>\n");
strBuff.append("</html>\n");
}
}