diff options
Diffstat (limited to 'base/tps/src/org/dogtagpki/server/tps/installer/DRMInfoPanel.java')
-rw-r--r-- | base/tps/src/org/dogtagpki/server/tps/installer/DRMInfoPanel.java | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/base/tps/src/org/dogtagpki/server/tps/installer/DRMInfoPanel.java b/base/tps/src/org/dogtagpki/server/tps/installer/DRMInfoPanel.java new file mode 100644 index 000000000..2237f9e53 --- /dev/null +++ b/base/tps/src/org/dogtagpki/server/tps/installer/DRMInfoPanel.java @@ -0,0 +1,154 @@ +package org.dogtagpki.server.tps.installer; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Vector; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.commons.lang.StringUtils; +import org.apache.velocity.context.Context; +import org.xml.sax.SAXException; + +import com.netscape.certsrv.apps.CMS; +import com.netscape.certsrv.base.EBaseException; +import com.netscape.certsrv.base.IConfigStore; +import com.netscape.certsrv.property.PropertySet; +import com.netscape.certsrv.util.HttpInput; +import com.netscape.cms.servlet.csadmin.ConfigurationUtils; +import com.netscape.cms.servlet.csadmin.WizardPanelBase; +import com.netscape.cms.servlet.wizard.WizardServlet; + +public class DRMInfoPanel extends WizardPanelBase { + + public DRMInfoPanel() { + } + + public void init(ServletConfig config, int panelno) + throws ServletException { + setPanelNo(panelno); + setName("DRM Information"); + } + + public void init(WizardServlet servlet, ServletConfig config, int panelno, String id) + throws ServletException { + setPanelNo(panelno); + setName("DRM Information"); + setId(id); + } + + public boolean shouldSkip() { + return false; + } + + public void cleanUp() throws IOException { + IConfigStore cs = CMS.getConfigStore(); + cs.putString("preop.krainfo.select", ""); + } + + public boolean isPanelDone() { + IConfigStore cs = CMS.getConfigStore(); + try { + String s = cs.getString("preop.krainfo.select", ""); + if (s != null && ! s.isEmpty()) { + return true; + } + } catch (EBaseException e) { + } + return false; + } + + public PropertySet getUsage() { + return new PropertySet(); + } + + public void display(HttpServletRequest request, + HttpServletResponse response, + Context context) { + String errorString = ""; + context.put("title", "DRM Information"); + context.put("panel", "admin/console/config/drminfopanel.vm"); + IConfigStore config = CMS.getConfigStore(); + + if (isPanelDone()) { + //TODO - put selected entry in selection box. + //String s = config.getString("preop.krainfo.select"); + } + + // get KRA URLs + Vector<String> v = null; + try { + v = ConfigurationUtils.getUrlListFromSecurityDomain(config, "KRA", "SecurePort"); + if (v == null) { + errorString = "No DRM found. CA, TKS and optionally DRM " + + " must be installed prior to TPS installation"; + context.put("errorString", errorString); + context.put("preop.krainfo.errorString", errorString); + return; + } + + config.putString("preop.kra.list", StringUtils.join(v,",")); + config.commit(false); + } catch (EBaseException | IOException | SAXException | ParserConfigurationException e1) { + e1.printStackTrace(); + errorString = "Failed to get DRM information from security domain. " + e1; + context.put("errorString", errorString); + context.put("preop.krainfo.errorString", errorString); + return; + } + + context.put("urls", v); + context.put("urls_size", v.size()); + context.put("errorString", ""); + context.put("preop.krainfo.errorString", ""); + } + + public void validate(HttpServletRequest request, + HttpServletResponse response, + Context context) throws IOException { + } + + public void update(HttpServletRequest request, + HttpServletResponse response, + Context context) throws IOException { + IConfigStore config = CMS.getConfigStore(); + String subsystemNick; + try { + subsystemNick = config.getString("preop.cert.subsystem.nickname"); + } catch (EBaseException e1) { + e1.printStackTrace(); + throw new IOException("Failed to get subsystem certificate nickname"); + } + + String url = HttpInput.getString(request, "urls"); + String parsedURI = url.substring(url.lastIndexOf("http")); + URI kraUri = null; + try { + kraUri = new URI(parsedURI); + } catch (URISyntaxException e) { + throw new IOException("Invalid URI " + parsedURI); + } + + String choice = HttpInput.getString(request, "choice"); + boolean keyGen = choice.equalsIgnoreCase("keygen"); + + // TODO: get installer from session + TPSInstaller installer = new TPSInstaller(); + installer.configureKRAConnector(keyGen, kraUri, subsystemNick); + + context.put("updateStatus", "success"); + } + + /** + * If validate() returns false, this method will be called. + */ + public void displayError(HttpServletRequest request, + HttpServletResponse response, + Context context) { + } +} |