001 /** 002 * 003 * Licensed to the Apache Software Foundation (ASF) under one or more 004 * contributor license agreements. See the NOTICE file distributed with 005 * this work for additional information regarding copyright ownership. 006 * The ASF licenses this file to You under the Apache License, Version 2.0 007 * (the "License"); you may not use this file except in compliance with 008 * the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 package org.apache.geronimo.console.ca; 019 020 import java.io.IOException; 021 import java.math.BigInteger; 022 import java.text.DateFormat; 023 import java.text.SimpleDateFormat; 024 import java.util.Calendar; 025 import java.util.Date; 026 import java.util.GregorianCalendar; 027 028 import javax.portlet.ActionRequest; 029 import javax.portlet.ActionResponse; 030 import javax.portlet.PortletException; 031 import javax.portlet.RenderRequest; 032 import javax.portlet.RenderResponse; 033 034 import org.apache.commons.logging.Log; 035 import org.apache.commons.logging.LogFactory; 036 import org.apache.geronimo.console.MultiPageModel; 037 038 /** 039 * Handler for Setup CA screen to get CA details from user. 040 * 041 * @version $Rev: 706640 $ $Date: 2008-10-21 14:44:05 +0000 (Tue, 21 Oct 2008) $ 042 */ 043 public class SetupCAHandler extends BaseCAHandler { 044 private final static Log log = LogFactory.getLog(SetupCAHandler.class); 045 public SetupCAHandler() { 046 super(SETUPCA_MODE, "/WEB-INF/view/ca/setupCA.jsp"); 047 } 048 049 public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 050 String[] params = {ERROR_MSG, INFO_MSG, "caCN", "caOU", "caO", "caL", "caST", "caC", "alias", "keyAlgorithm", "keySize", "algorithm", "validFrom", "validTo", "sNo", "password"}; 051 for(int i = 0; i < params.length; ++i) { 052 String value = request.getParameter(params[i]); 053 if(value != null) response.setRenderParameter(params[i], value); 054 } 055 return getMode(); 056 } 057 058 public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException { 059 String[] params = {ERROR_MSG, INFO_MSG, "caCN", "caOU", "caO", "caL", "caST", "caC", "alias", "keyAlgorithm", "keySize", "algorithm", "validFrom", "validTo", "sNo", "password"}; 060 for(int i = 0; i < params.length; ++i) { 061 Object value = request.getParameter(params[i]); 062 if(value != null) request.setAttribute(params[i], value); 063 } 064 } 065 066 public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException { 067 String errorMsg = null; 068 try { 069 // Validate the Serial Number 070 String sNo = request.getParameter("sNo"); 071 new BigInteger(sNo.trim()); 072 073 // Validate the from and to dates 074 String validFrom = request.getParameter("validFrom"); 075 String validTo = request.getParameter("validTo"); 076 // Check if the from date format is MM/DD/YYYY 077 DateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 078 Date validFromDate = df.parse(validFrom); 079 Calendar calendar = new GregorianCalendar(); 080 calendar.setTime(validFromDate); 081 String mmddyyyy = (calendar.get(Calendar.MONTH) < 9 ? "0":"") + (calendar.get(Calendar.MONTH)+1); 082 mmddyyyy += "/"+(calendar.get(Calendar.DAY_OF_MONTH) < 10 ? "0":"") + (calendar.get(Calendar.DAY_OF_MONTH)); 083 mmddyyyy += "/"+calendar.get(Calendar.YEAR); 084 if(!mmddyyyy.equals(validFrom)) { 085 throw new Exception("validFrom must be a date in MM/DD/YYYY format."); 086 } 087 // Check if the to date format is MM/DD/YYYY 088 Date validToDate = df.parse(validTo); 089 calendar.setTime(validToDate); 090 mmddyyyy = (calendar.get(Calendar.MONTH) < 9 ? "0":"") + (calendar.get(Calendar.MONTH)+1); 091 mmddyyyy += "/"+(calendar.get(Calendar.DAY_OF_MONTH) < 10 ? "0":"") + (calendar.get(Calendar.DAY_OF_MONTH)); 092 mmddyyyy += "/"+calendar.get(Calendar.YEAR); 093 if(!mmddyyyy.equals(validTo)) { 094 throw new Exception("validTo must be a date in MM/DD/YYYY format."); 095 } 096 // Check if the from date is before the to date 097 if(validFromDate.after(validToDate)) { 098 throw new Exception("Validity: From date '"+validFrom+"' is before the To date '"+validTo+"'."); 099 } 100 101 // Load page to confirm CA details 102 return CONFIRM_CA_MODE+BEFORE_ACTION; 103 } catch(Exception e) { 104 errorMsg = e.toString(); 105 log.error("Error in user input during CA Setup.", e); 106 } 107 if(errorMsg != null) response.setRenderParameter(ERROR_MSG, errorMsg); 108 return getMode()+BEFORE_ACTION; 109 } 110 111 }