summaryrefslogtreecommitdiffstats
path: root/base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java
diff options
context:
space:
mode:
authorMatthew Harmsen <mharmsen@redhat.com>2014-09-03 21:07:07 -0700
committerMatthew Harmsen <mharmsen@redhat.com>2014-09-03 21:07:07 -0700
commitabaa8473f51a5c436a2952920625b7447e226b29 (patch)
treee9e731a6e4eb8be63f1a74fffad101332b060afe /base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java
parent4dbec5fe960a89b7ced3028e000b5695b6d9aac7 (diff)
downloadpki-abaa8473f51a5c436a2952920625b7447e226b29.tar.gz
pki-abaa8473f51a5c436a2952920625b7447e226b29.tar.xz
pki-abaa8473f51a5c436a2952920625b7447e226b29.zip
Rename pki-tps-tomcat to pki-tps
* PKI TRAC Ticket #1017 - Rename pki-tps-tomcat to pki-tps
Diffstat (limited to 'base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java')
-rw-r--r--base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java171
1 files changed, 171 insertions, 0 deletions
diff --git a/base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java b/base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java
new file mode 100644
index 000000000..4c5371f20
--- /dev/null
+++ b/base/tps/src/org/dogtagpki/server/tps/installer/CAInfoPanel.java
@@ -0,0 +1,171 @@
+package org.dogtagpki.server.tps.installer;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.security.cert.CertificateException;
+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.mozilla.jss.CryptoManager.NotInitializedException;
+import org.mozilla.jss.crypto.TokenException;
+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 CAInfoPanel extends WizardPanelBase {
+
+ public CAInfoPanel() {
+ }
+
+ public void init(ServletConfig config, int panelno)
+ throws ServletException {
+ setPanelNo(panelno);
+ setName("CA Information");
+ }
+
+ public void init(WizardServlet servlet, ServletConfig config, int panelno, String id)
+ throws ServletException {
+ setPanelNo(panelno);
+ setName("CA Information");
+ setId(id);
+ }
+
+ public boolean shouldSkip() {
+ return false;
+ }
+
+ public void cleanUp() throws IOException {
+ IConfigStore cs = CMS.getConfigStore();
+ cs.putString("preop.cainfo.select", "");
+ }
+
+ public boolean isPanelDone() {
+ IConfigStore cs = CMS.getConfigStore();
+ try {
+ String s = cs.getString("preop.cainfo.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", "CA Information");
+ context.put("panel", "admin/console/config/cainfopanel.vm");
+ IConfigStore config = CMS.getConfigStore();
+
+ if (isPanelDone()) {
+ // TODO - put the selected URL in selection box.
+ // String s = config.getString("preop.cainfo.select");
+ }
+
+ // get CA URLs
+ Vector<String> v;
+ try {
+ v = null;
+ v = ConfigurationUtils.getUrlListFromSecurityDomain(config, "CA", "SecurePort");
+ if (v == null) {
+ errorString = "No CA found. CA, TKS and optionally DRM " +
+ " must be installed prior to TPS installation";
+ context.put("errorString", errorString);
+ context.put("preop.cainfo.errorString", errorString);
+ return;
+ }
+
+ config.putString("preop.ca.list", StringUtils.join(v,","));
+ config.commit(false);
+ } catch (EBaseException | IOException | SAXException | ParserConfigurationException e) {
+ e.printStackTrace();
+ errorString = "Failed to get CA information from security domain. " + e;
+ context.put("errorString", errorString);
+ context.put("preop.cainfo.errorString", errorString);
+ return;
+ }
+
+ context.put("urls", v);
+ context.put("urls_size", v.size());
+ context.put("errorString", "");
+ context.put("preop.cainfo.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");
+ URI caUri = null;
+ String parsedURI = url.substring(url.lastIndexOf("http"));
+ try {
+ caUri = new URI(parsedURI);
+ } catch (URISyntaxException e) {
+ throw new IOException("Invalid URI " + parsedURI);
+ }
+
+ // TODO: get installer from session
+ TPSInstaller installer = new TPSInstaller();
+ installer.configureCAConnector(caUri, subsystemNick);
+
+ String host = caUri.getHost();
+ int port = caUri.getPort();
+
+ // Note -
+ // list contains EE port. If admin port is different, it needs to
+ // be obtained from security domain and used to get the cert chain
+
+ /* int admin_port = ConfigurationUtils.getPortFromSecurityDomain(domainXML,
+ host, port, "CA", "SecurePort", "SecureAdminPort");
+ */
+
+ try {
+ ConfigurationUtils.importCertChain(host, port, "/ca/admin/ca/getCertChain", "ca");
+ } catch (CertificateException | SAXException | ParserConfigurationException
+ | NotInitializedException | TokenException | EBaseException e) {
+ e.printStackTrace();
+ throw new IOException("Failed to import certificate chain from CA");
+ }
+
+ context.put("updateStatus", "success");
+ }
+
+ public void displayError(HttpServletRequest request,
+ HttpServletResponse response,
+ Context context) {
+ }
+}