summaryrefslogtreecommitdiffstats
path: root/pki/base/console/src/com/netscape/admin/certsrv/CMSKernelUILoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/console/src/com/netscape/admin/certsrv/CMSKernelUILoader.java')
-rw-r--r--pki/base/console/src/com/netscape/admin/certsrv/CMSKernelUILoader.java320
1 files changed, 320 insertions, 0 deletions
diff --git a/pki/base/console/src/com/netscape/admin/certsrv/CMSKernelUILoader.java b/pki/base/console/src/com/netscape/admin/certsrv/CMSKernelUILoader.java
new file mode 100644
index 000000000..2c4de161f
--- /dev/null
+++ b/pki/base/console/src/com/netscape/admin/certsrv/CMSKernelUILoader.java
@@ -0,0 +1,320 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.admin.certsrv;
+
+import com.netscape.management.client.*;
+import com.netscape.management.client.util.*;
+import com.netscape.management.client.console.*;
+import com.netscape.admin.certsrv.security.*;
+import com.netscape.admin.certsrv.menu.*;
+import com.netscape.admin.certsrv.config.*;
+import com.netscape.admin.certsrv.ug.*;
+import com.netscape.admin.certsrv.status.*;
+import com.netscape.certsrv.common.*;
+import com.netscape.admin.certsrv.connection.*;
+import com.netscape.admin.certsrv.CMSUIFramework;
+import java.util.*;
+import javax.swing.*;
+
+/**
+ * Netscape Certificate Server Kernel UI Loader.
+ *
+ * This class registers tabs (tasks,configuraiton,status)
+ * into the UI framework.
+ *
+ * @author Jack Pan-Chen
+ * @version $Revision$, $Date$
+ * @date 03/30/97
+ */
+public class CMSKernelUILoader implements ISubSystemUILoader {
+
+ protected static final int ERROR_MESSAGE = JOptionPane.ERROR_MESSAGE;
+ /*==========================================================
+ * variables
+ *==========================================================*/
+ private CMSUIFramework mUIFramework; //parent framework
+
+ /*==========================================================
+ * constructors
+ *==========================================================*/
+ public CMSKernelUILoader(CMSUIFramework framework) {
+ mUIFramework = framework;
+ }
+
+ /*==========================================================
+ * public methods
+ *==========================================================*/
+ public void register() {
+
+ //register subsystem UI
+ try {
+ //task tab - this holds icons such as start server, stop server, etc
+ IPage task = mUIFramework.getPage(CMSPageFeeder.TASK_TAB_TYPE,"");
+ }catch(Exception e) {
+ Debug.println("CMSKernelUILoader: register() config tab - "+e.toString());
+ }
+ CMSResourcePage page;
+ CMSBaseResourceModel model;
+
+ try {
+ //configuration tab - (holds main UI tree)
+ page = (CMSResourcePage) mUIFramework.getPage(CMSPageFeeder.RESOURCE_TAB_TYPE,"CONFIGURATION");
+ model = (CMSBaseResourceModel) page.getModel();
+ populateConfigContent(model);
+ populateConfigMenu(page);
+
+ } catch(Exception e) {
+ Debug.println("CMSKernelUILoader: register() config tab - "+e.toString());
+ }
+
+ try {
+ //status tab - allows user to view CMS log files
+ page = (CMSResourcePage) mUIFramework.getPage(CMSPageFeeder.RESOURCE_TAB_TYPE,"STATUS");
+ populateStatusContent(page);
+ populateStatusMenu(page);
+ } catch(Exception e) {
+ Debug.println("CMSKernelUILoader: register() status - "+e.toString());
+ }
+ }
+
+ /*==========================================================
+ * protected methods
+ *==========================================================*/
+
+ /**
+ * This method creates the configuration tree
+ */
+
+ protected void populateConfigContent(CMSBaseResourceModel model) {
+
+ CMSResourceObject root = (CMSResourceObject) model.getRoot();
+ CMSTabPanel tabPane = new CMSTabPanel(model, root);
+ tabPane.addTab(new CMSLDAPSettingPanel(tabPane));
+ tabPane.addTab(new CMSSMTPPanel(tabPane));
+ tabPane.addTab(new CMSSelfTestsPanel(tabPane));
+
+ // The log panel would only really be useful if we were able to
+ // enable or disable debug without restarting. If we can do this,
+ // then we can enable this tab.
+ //
+ // tabPane.addTab(new GeneralLogPanel(tabPane));
+
+ root.setCustomPanel(tabPane);
+
+
+ CMSResourceObject usernode = new CMSResourceObject("USERGROUPS");
+ CMSUGTabPanel tabPane1 = new CMSUGTabPanel(model, usernode);
+ tabPane1.addTab(new UserTab(model));
+ tabPane1.addTab(new GroupTab(model));
+ usernode.setCustomPanel(tabPane1);
+ usernode.setAllowsChildren(false);
+ usernode.setIcon(CMSAdminUtil.getImage(CMSAdminResources.IMAGE_UGOBJECT));
+ model.addSubSystemNode(usernode);
+
+// This ACL configuration may be revived in a future version
+ CMSResourceObject aclnode = new CMSResourceObject("ACL");
+ CMSUGTabPanel aclTabPane = new CMSUGTabPanel(model, aclnode);
+ aclTabPane.addTab(new ACLPanel(aclTabPane));
+ aclTabPane.addTab(new ACLImplTab(aclTabPane));
+ aclnode.setCustomPanel(aclTabPane);
+ aclnode.setIcon(CMSAdminUtil.getImage(
+ CMSAdminResources.IMAGE_ACLOBJECT));
+ aclnode.setAllowsChildren(false);
+ model.addSubSystemNode(aclnode);
+
+ // Authentication subsystem
+/*
+ CMSResourceObject authnode = new CMSResourceObject("AUTH");
+ tabPane1 = new CMSUGTabPanel(model, authnode);
+ tabPane1.addTab(new AuthInstanceTab(model));
+ tabPane1.addTab(new AuthImplTab(model));
+ authnode.setCustomPanel(tabPane1);
+ authnode.setIcon( CMSAdminUtil.getImage(
+ CMSAdminResources.IMAGE_AUTHOBJECT));
+ authnode.setAllowsChildren(false);
+ model.addSubSystemNode(authnode);
+
+ // jobs scheduler node
+ CMSResourceObject jobsnode = new CMSResourceObject("JOBSCHED");
+ tabPane = new CMSTabPanel(model, jobsnode);
+ tabPane.addTab(new JobsSettingPanel("JOBSGENERAL", tabPane));
+
+ jobsnode.setCustomPanel(tabPane);
+ jobsnode.setIcon( CMSAdminUtil.getImage(
+ CMSAdminResources.IMAGE_JOBSOBJECT));
+
+ jobsnode.setAllowsChildren(true);
+ CMSResourceObject cnode = new CMSResourceObject("JOBS");
+
+ tabPane1 = new CMSUGTabPanel(model, cnode);
+ tabPane1.addTab(new JobsInstanceTab(model));
+ tabPane1.addTab(new JobsImplTab(model));
+ cnode.setCustomPanel(tabPane1);
+ cnode.setIcon( CMSAdminUtil.getImage(
+ CMSAdminResources.IMAGE_JOBSOBJECT));
+ jobsnode.add(cnode);
+ cnode.setAllowsChildren(false);
+ model.addSubSystemNode(jobsnode);
+*/
+
+ // log config node
+ CMSResourceObject node = new CMSResourceObject("LOG");
+
+ CMSUGTabPanel tabPane2 = new CMSUGTabPanel(model, node);
+ tabPane2.addTab(new LogInstanceTab(model, DestDef.DEST_LOG_ADMIN));
+ tabPane2.addTab(new LogImplTab(model, DestDef.DEST_LOG_ADMIN));
+ node.setCustomPanel(tabPane2);
+ node.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_LOGOBJ));
+ node.setAllowsChildren(false);
+ model.addSubSystemNode(node);
+
+ // encryption config node
+ CMSResourceObject encryptionnode = new CMSResourceObject("ENCRYPTION");
+ CMSUGTabPanel tabPane3 = new CMSUGTabPanel(model, encryptionnode);
+ tabPane3.addTab(new CACertsTab(model, DestDef.DEST_SERVER_ADMIN));
+ tabPane3.addTab(new UserCertsTab(model, DestDef.DEST_SERVER_ADMIN));
+ NameValuePairs response;
+/*
+ try
+ {
+ AdminConnection connection = model.getServerInfo().getAdmin();
+
+ response = connection.search(DestDef.DEST_SERVER_ADMIN,
+ ScopeDef.SC_SUBSYSTEM, new NameValuePairs());
+ Debug.println(response.toString());
+ String tempString = response.toString();
+ if(tempString.length()==0) // tempString should equals tks=tks in CMSAdminServlet::readSubsystem
+ tabPane3.addTab(new TKSKeysTab(model, DestDef.DEST_SERVER_ADMIN));
+ }catch (Exception e) {
+ Debug.println("bad admin servlet connection ");
+ }
+*/
+
+ encryptionnode.setCustomPanel(tabPane3);
+ encryptionnode.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_AUTHOBJECT));
+ encryptionnode.setAllowsChildren(false);
+ model.addSubSystemNode(encryptionnode);
+ }
+
+
+ /**
+ * Modifies the window menu (File, Edit, View, etc) to add some
+ * things which are specific to CMS configuration
+ */
+ protected void populateConfigMenu(CMSResourcePage page) {
+ CMSBaseResourceModel model = (CMSBaseResourceModel) page.getModel();
+ CMSBaseMenuInfo menuInfo = (CMSBaseMenuInfo)page.getMenuInfo();
+ try {
+ //menuInfo.registerMenuItem(CMSBaseMenuInfo.MENU_FILE,
+ // CMSBaseMenuInfo.MENU_PKCS11,
+ // new PKCS11ManagementAction(model.getConsoleInfo()));
+ // reference Bug 613851 Manage PKCS#11 shows a blank window.
+ menuInfo.addMenuItemSeparator(CMSBaseMenuInfo.MENU_FILE);
+ menuInfo.addMenuItemSeparator(CMSBaseMenuInfo.MENU_VIEW);
+ menuInfo.registerMenuItem(CMSBaseMenuInfo.MENU_VIEW,
+ CMSBaseMenuInfo.MENU_REFRESH,
+ new RefreshTabPane(model));
+ } catch(Exception e) {
+ Debug.println("menuinfo register()"+e.toString());
+ }
+ }
+
+
+ /**
+ * creates the tree view seen in the left panel when the user selects
+ * the status tab. This typically looks like this:
+ * 1 Netscape Certificate Management System
+ * 2 + Log
+ * 3 System
+ * 4 Transactions
+ * [ this method creates 1,2. The updateLogInstance() method creates 3,4 ]
+ */
+
+ protected void populateStatusContent(CMSResourcePage page) {
+ CMSBaseResourceModel model = (CMSBaseResourceModel) page.getModel();
+ CMSResourceObject root = (CMSResourceObject) model.getRoot();
+
+ //set general stat panel
+ root.setCustomPanel(new StatusPanel(model));
+
+ CMSResourceObject list, node;
+ CMSTabPanel tabPane;
+
+ //log content
+ list = new CMSResourceObject("LOG");
+ list.setCustomPanel(new CMSBlankPanel(model));
+ list.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_LOGFOLDER));
+ list.setAllowsChildren(true);
+
+ // get the log instance name list
+ updateLogInstance(page, list);
+
+ model.addSubSystemNode(list);
+ }
+
+ protected void populateStatusMenu(CMSResourcePage page) {
+ CMSBaseResourceModel model = (CMSBaseResourceModel) page.getModel();
+ CMSBaseMenuInfo menuInfo = (CMSBaseMenuInfo)page.getMenuInfo();
+ try {
+ menuInfo.addMenuItemSeparator(CMSBaseMenuInfo.MENU_VIEW);
+ menuInfo.registerMenuItem(CMSBaseMenuInfo.MENU_VIEW,
+ CMSBaseMenuInfo.MENU_REFRESH,
+ new RefreshTabPane(model));
+ } catch(Exception e) {
+ Debug.println("menuinfo register()"+e.toString());
+ }
+ }
+
+ /**
+ * retrieve log instance listing from the server
+ * side and populate the index
+ */
+ protected void updateLogInstance(CMSResourcePage page, CMSResourceObject list) {
+ CMSBaseResourceModel model = (CMSBaseResourceModel) page.getModel();
+ AdminConnection connection = model.getServerInfo().getAdmin();
+
+ //get the list of log instances from the server
+ NameValuePairs response;
+ model.progressStart();
+ try {
+ response = connection.search(DestDef.DEST_LOG_ADMIN,
+ ScopeDef.SC_LOG_INSTANCES,
+ new NameValuePairs());
+ } catch (EAdminException e) {
+ //display error dialog
+ CMSAdminUtil.showErrorDialog(model.getFrame(),
+ ResourceBundle.getBundle(
+ CMSAdminResources.class.getName()
+ ), e.getMessage(), ERROR_MESSAGE);
+ model.progressStop();
+ return;
+ }
+
+ //update the index
+ for (Enumeration e = response.getNames(); e.hasMoreElements() ;) {
+ String entry = (String)e.nextElement();
+ CMSResourceObject node = new CMSResourceObject(entry);
+ node.setCustomPanel(new LogInstancePanel(entry, model));
+ node.setIcon( CMSAdminUtil.getImage(CMSAdminResources.IMAGE_LOGOBJECT));
+ node.setAllowsChildren(false);
+ list.add(node);
+ }
+ model.progressStop();
+ }
+
+}