opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/datamodel/ControlPanelInfo.java
@@ -62,6 +62,7 @@ import org.opends.guitools.controlpanel.util.Utilities; import org.opends.quicksetup.util.UIKeyStore; import org.opends.quicksetup.util.Utils; import org.opends.server.util.DynamicConstants; import org.opends.server.util.StaticUtils; import com.forgerock.opendj.cli.CliConstants; @@ -73,22 +74,29 @@ */ public class ControlPanelInfo { private long poolingPeriod = 20000; private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); private ServerDescriptor serverDesc; private static boolean mustDeregisterConfig; private static ControlPanelInfo instance; private Set<Task> tasks = new HashSet<>(); private ConnectionWrapper connWrapper; private InitialLdapContext userDataCtx; private final LDAPConnectionPool connectionPool = new LDAPConnectionPool(); /** Used by the browsers. */ private final IconPool iconPool = new IconPool(); private long poolingPeriod = 20000; private Thread poolingThread; private boolean stopPooling; private boolean pooling; private ApplicationTrustManager trustManager; private int connectTimeout = CliConstants.DEFAULT_LDAP_CONNECT_TIMEOUT; private ConnectionProtocolPolicy connectionPolicy = ConnectionProtocolPolicy.USE_MOST_SECURE_AVAILABLE; private ServerDescriptor serverDesc; private String ldapURL; private String startTLSURL; private String ldapsURL; @@ -99,22 +107,16 @@ private String lastRemoteHostName; private String lastRemoteAdministrationURL; private static boolean mustDeregisterConfig; private boolean isLocal = true; private Set<AbstractIndexDescriptor> modifiedIndexes = new HashSet<>(); private LinkedHashSet<ConfigChangeListener> configListeners = new LinkedHashSet<>(); private LinkedHashSet<BackupCreatedListener> backupListeners = new LinkedHashSet<>(); private LinkedHashSet<BackendPopulatedListener> backendPopulatedListeners = new LinkedHashSet<>(); private LinkedHashSet<IndexModifiedListener> indexListeners = new LinkedHashSet<>(); private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); private static ControlPanelInfo instance; private final Set<AbstractIndexDescriptor> modifiedIndexes = new HashSet<>(); private final Set<ConfigChangeListener> configListeners = new LinkedHashSet<>(); private final Set<BackupCreatedListener> backupListeners = new LinkedHashSet<>(); private final Set<BackendPopulatedListener> backendPopulatedListeners = new LinkedHashSet<>(); private final Set<IndexModifiedListener> indexListeners = new LinkedHashSet<>(); /** Default constructor. */ protected ControlPanelInfo() private ControlPanelInfo() { } @@ -392,41 +394,11 @@ } /** * Returns an empty new server descriptor instance. * @return an empty new server descriptor instance. */ protected ServerDescriptor createNewServerDescriptorInstance() { return new ServerDescriptor(); } /** * Returns a reader that will read the configuration from a file. * @return a reader that will read the configuration from a file. */ protected ConfigFromFile createNewConfigFromFileReader() { return new ConfigFromFile(); } /** * Returns a reader that will read the configuration from a dir context. * @return a reader that will read the configuration from a dir context. */ protected ConfigFromDirContext createNewConfigFromDirContextReader() { ConfigFromDirContext configFromDirContext = new ConfigFromDirContext(); configFromDirContext.setIsLocal(isLocal()); return configFromDirContext; } /** * Updates the contents of the server descriptor with the provider reader. * @param reader the configuration reader. * @param desc the server descriptor. */ protected void updateServerDescriptor(ConfigReader reader, ServerDescriptor desc) private void updateServerDescriptor(ConfigReader reader, ServerDescriptor desc) { desc.setExceptions(reader.getExceptions()); desc.setAdministrativeUsers(reader.getAdministrativeUsers()); @@ -440,15 +412,11 @@ /** Regenerates the last found ServerDescriptor object. */ public synchronized void regenerateDescriptor() { boolean isLocal = isLocal(); ServerDescriptor desc = createNewServerDescriptorInstance(); ServerDescriptor desc = new ServerDescriptor(); desc.setIsLocal(isLocal); ConnectionWrapper connWrapper = getConnection(); if (isLocal) { desc.setOpenDSVersion( org.opends.server.util.DynamicConstants.FULL_VERSION_STRING); desc.setOpenDSVersion(DynamicConstants.FULL_VERSION_STRING); String installPath = Utilities.getInstallPathFromClasspath(); desc.setInstallPath(installPath); desc.setInstancePath(Utils.getInstancePathFromInstallPath(installPath)); @@ -458,8 +426,8 @@ { desc.setHostname(lastRemoteHostName); } ConfigReader reader; ConfigReader reader; ServerStatus status = getStatus(desc); if (status != null) { @@ -467,18 +435,17 @@ if (status == ServerStatus.STOPPING) { StaticUtils.close(connWrapper); this.connWrapper = null; connWrapper = null; if (userDataCtx != null) { unregisterConnection(connectionPool, connWrapper.getLdapContext()); unregisterConnection(connectionPool, null); StaticUtils.close(userDataCtx); userDataCtx = null; } } if (isLocal) { reader = createNewConfigFromFileReader(); ((ConfigFromFile)reader).readConfiguration(); reader = newLocalConfigReader(); } else { @@ -515,41 +482,36 @@ { // Ignore: we will ask the user for credentials. } if (connWrapper != null) { this.connWrapper = connWrapper; } } if (isLocal && connWrapper == null) if (connWrapper == null) { reader = createNewConfigFromFileReader(); ((ConfigFromFile)reader).readConfiguration(); if (isLocal) { reader = newLocalConfigReader(); } else if (!isLocal && connWrapper == null) else { desc.setStatus(ServerStatus.NOT_CONNECTED_TO_REMOTE); reader = null; desc.setStatus(ServerStatus.NOT_CONNECTED_TO_REMOTE); } } else { Utilities.initializeConfigurationFramework(); reader = createNewConfigFromDirContextReader(); ((ConfigFromDirContext) reader).readConfiguration(connWrapper); reader = newRemoteConfigReader(); boolean connectionWorks = checkConnections(connWrapper.getLdapContext(), userDataCtx); if (!connectionWorks) { if (isLocal) { // Try with off-line info reader = createNewConfigFromFileReader(); ((ConfigFromFile) reader).readConfiguration(); reader = newLocalConfigReader(); } else { desc.setStatus(ServerStatus.NOT_CONNECTED_TO_REMOTE); reader = null; desc.setStatus(ServerStatus.NOT_CONNECTED_TO_REMOTE); } StaticUtils.close(connWrapper); this.connWrapper = null; @@ -591,8 +553,7 @@ { desc.setStatus(ServerStatus.STOPPED); desc.setAuthenticated(false); reader = createNewConfigFromFileReader(); ((ConfigFromFile)reader).readConfiguration(); reader = newLocalConfigReader(); } if (reader != null) { @@ -609,8 +570,7 @@ { localAdminConnectorURL = adminConnectorURL; } startTLSURL = getURL(serverDesc, ConnectionHandlerDescriptor.Protocol.LDAP_STARTTLS); startTLSURL = getURL(serverDesc, ConnectionHandlerDescriptor.Protocol.LDAP_STARTTLS); ConfigurationChangeEvent ev = new ConfigurationChangeEvent(this, desc); for (ConfigChangeListener listener : configListeners) { @@ -619,6 +579,21 @@ } } private ConfigReader newRemoteConfigReader() { ConfigFromDirContext reader = new ConfigFromDirContext(); reader.setIsLocal(isLocal); reader.readConfiguration(connWrapper); return reader; } private ConfigReader newLocalConfigReader() { ConfigFromFile reader = new ConfigFromFile(); reader.readConfiguration(); return reader; } private ServerStatus getStatus(ServerDescriptor desc) { ServerStatus status = null; @@ -1019,11 +994,7 @@ */ public boolean connectUsingStartTLS() { if (getStartTLSURL() != null) { return getStartTLSURL().equals(getURLToConnect()); } return false; return startTLSURL != null && startTLSURL.equals(getURLToConnect()); } /** @@ -1033,11 +1004,7 @@ */ public boolean connectUsingLDAPS() { if (getLDAPSURL() != null) { return getLDAPSURL().equals(getURLToConnect()); } return false; return ldapsURL != null && ldapsURL.equals(getURLToConnect()); } /** @@ -1048,39 +1015,38 @@ */ public String getURLToConnect() { String url; switch (getConnectionPolicy()) { case USE_STARTTLS: return getStartTLSURL(); return startTLSURL; case USE_LDAP: return getLDAPURL(); return ldapURL; case USE_LDAPS: return getLDAPSURL(); return ldapsURL; case USE_ADMIN: return getAdminConnectorURL(); case USE_MOST_SECURE_AVAILABLE: url = getLDAPSURL(); if (url == null) String url1 = ldapsURL; if (url1 == null) { url = getStartTLSURL(); url1 = startTLSURL; } if (url == null) if (url1 == null) { url = getLDAPURL(); url1 = ldapURL; } return url; return url1; case USE_LESS_SECURE_AVAILABLE: url = getLDAPURL(); if (url == null) String url2 = ldapURL; if (url2 == null) { url = getStartTLSURL(); url2 = startTLSURL; } if (url == null) if (url2 == null) { url = getLDAPSURL(); url2 = ldapsURL; } return url; return url2; default: throw new RuntimeException("Unknown policy: "+getConnectionPolicy()); } opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/BrowseGeneralMonitoringPanel.java
@@ -12,7 +12,7 @@ * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2009 Sun Microsystems, Inc. * Portions Copyright 2014-2015 ForgeRock AS. * Portions Copyright 2014-2016 ForgeRock AS. */ package org.opends.guitools.controlpanel.ui; @@ -26,6 +26,7 @@ import java.awt.Insets; import java.awt.Window; import java.util.HashMap; import java.util.Objects; import javax.swing.ImageIcon; import javax.swing.JPanel; @@ -42,7 +43,6 @@ import org.opends.guitools.controlpanel.browser.IconPool; import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo; import org.opends.guitools.controlpanel.datamodel.CustomSearchResult; import org.opends.guitools.controlpanel.datamodel.ServerDescriptor; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.ui.components.TreePanel; @@ -53,17 +53,12 @@ import org.forgerock.i18n.LocalizableMessage; import org.forgerock.i18n.LocalizableMessageBuilder; /** * The pane that is displayed when the user clicks on 'General Monitoring'. * */ /** The pane that is displayed when the user clicks on 'General Monitoring'. */ public class BrowseGeneralMonitoringPanel extends StatusGenericPanel { private static final long serialVersionUID = 6462914563746678830L; /** * The panel containing the tree. */ /** The panel containing the tree. */ private TreePanel treePane; private JScrollPane treeScroll; @@ -79,10 +74,7 @@ private LocalizableMessage MULTIPLE_ITEMS_SELECTED = INFO_CTRL_PANEL_MULTIPLE_ITEMS_SELECTED_LABEL.get(); /** * The enumeration used to define the different static nodes of the tree. * */ /** The enumeration used to define the different static nodes of the tree. */ protected enum NodeType { /** Root node. */ @@ -101,43 +93,34 @@ PDB_DATABASES_INFORMATION } /** * The panel displaying the informations about the selected node. */ /** The panel displaying the informations about the selected node. */ protected GeneralMonitoringRightPanel entryPane; /** * Default constructor. * */ /** Default constructor. */ public BrowseGeneralMonitoringPanel() { super(); createLayout(); } /** {@inheritDoc} */ @Override public boolean requiresBorder() { return false; } /** {@inheritDoc} */ @Override public boolean requiresScroll() { return false; } /** {@inheritDoc} */ @Override public boolean callConfigurationChangedInBackground() { return true; } /** {@inheritDoc} */ @Override public void toBeDisplayed(boolean visible) { @@ -152,9 +135,7 @@ } } /** * Creates the layout of the panel (but the contents are not populated here). */ /** Creates the layout of the panel (but the contents are not populated here). */ private void createLayout() { setBackground(ColorAndFontConstants.greyBackground); @@ -177,28 +158,24 @@ add(createSplitPane(), gbc); } /** {@inheritDoc} */ @Override public LocalizableMessage getTitle() { return INFO_CTRL_PANEL_GENERAL_MONITORING_TITLE.get(); } /** {@inheritDoc} */ @Override public Component getPreferredFocusComponent() { return treePane; } /** {@inheritDoc} */ @Override public void okClicked() { // No ok button } /** {@inheritDoc} */ @Override public GenericDialog.ButtonType getButtonType() { @@ -236,7 +213,6 @@ treePane.getTree().addTreeSelectionListener(new TreeSelectionListener() { /** {@inheritDoc} */ public void valueChanged(TreeSelectionEvent ev) { if (!ignoreSelectionEvents) @@ -270,7 +246,6 @@ return pane; } /** {@inheritDoc} */ @Override public void setInfo(ControlPanelInfo info) { @@ -326,9 +301,7 @@ if (!server.isAuthenticated()) { LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); mb.append( INFO_CTRL_PANEL_AUTH_REQUIRED_TO_BROWSE_MONITORING_SUMMARY. get()); mb.append(INFO_CTRL_PANEL_AUTH_REQUIRED_TO_BROWSE_MONITORING_SUMMARY.get()); mb.append("<br><br>").append(getAuthenticateHTML()); errorDetails = mb.toMessage(); errorTitle = INFO_CTRL_PANEL_AUTHENTICATION_REQUIRED_SUMMARY.get(); @@ -339,8 +312,7 @@ else if (status == ServerDescriptor.ServerStatus.NOT_CONNECTED_TO_REMOTE) { LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); mb.append(INFO_CTRL_PANEL_CANNOT_CONNECT_TO_REMOTE_DETAILS.get( server.getHostname())); mb.append(INFO_CTRL_PANEL_CANNOT_CONNECT_TO_REMOTE_DETAILS.get(server.getHostname())); mb.append("<br><br>").append(getAuthenticateHTML()); errorDetails = mb.toMessage(); errorTitle = INFO_CTRL_PANEL_CANNOT_CONNECT_TO_REMOTE_SUMMARY.get(); @@ -350,9 +322,7 @@ { errorTitle = INFO_CTRL_PANEL_SERVER_NOT_RUNNING_SUMMARY.get(); LocalizableMessageBuilder mb = new LocalizableMessageBuilder(); mb.append( INFO_CTRL_PANEL_SERVER_MUST_RUN_TO_BROWSE_MONITORING_SUMMARY. get()); mb.append(INFO_CTRL_PANEL_SERVER_MUST_RUN_TO_BROWSE_MONITORING_SUMMARY.get()); mb.append("<br><br>"); mb.append(getStartServerHTML()); errorDetails = mb.toMessage(); @@ -363,7 +333,6 @@ final LocalizableMessage fErrorDetails = errorDetails; SwingUtilities.invokeLater(new Runnable() { /** {@inheritDoc} */ public void run() { errorPane.setVisible(fDisplayErrorPane); @@ -389,31 +358,24 @@ ViewPositions pos = Utilities.getViewPositions(treeScroll); ServerDescriptor server = null; if (getInfo() != null) { server = getInfo().getServerDescriptor(); } GeneralMonitoringTreeNode root; if (server == null) { root = new GeneralMonitoringTreeNode( INFO_CTRL_PANEL_GENERAL_MONITORING_ROOT.get().toString(), NodeType.ROOT, true); } else { root = new GeneralMonitoringTreeNode( getServerName(server), NodeType.ROOT, true); } GeneralMonitoringTreeNode root = new GeneralMonitoringTreeNode(getServerName(), NodeType.ROOT, true); LocalizableMessage[] messages = getNodeMessages(); NodeType[] identifiers = getNodeTypes(); LocalizableMessage[] messages = { INFO_CTRL_PANEL_SYSTEM_INFORMATION.get(), INFO_CTRL_PANEL_JAVA_INFORMATION.get(), INFO_CTRL_PANEL_WORK_QUEUE.get(), INFO_CTRL_PANEL_ENTRY_CACHES.get(), INFO_CTRL_PANEL_JE_DB_INFO.get(), INFO_CTRL_PANEL_PDB_DB_INFO.get() }; NodeType[] identifiers = { NodeType.SYSTEM_INFORMATION, NodeType.JAVA_INFORMATION, NodeType.WORK_QUEUE, NodeType.ENTRY_CACHES, NodeType.JE_DATABASES_INFORMATION, NodeType.PDB_DATABASES_INFORMATION }; for (int i=0; i < messages.length; i++) { if (isVisible(identifiers[i])) @@ -422,17 +384,26 @@ } } DefaultTreeModel model = new DefaultTreeModel(root); tree.setModel(model); tree.setModel(new DefaultTreeModel(root)); Utilities.updateViewPositions(pos); ignoreSelectionEvents = false; } /** * Updates the right entry panel. * */ private String getServerName() { ServerDescriptor server = null; if (getInfo() != null) { server = getInfo().getServerDescriptor(); if (server != null) { return getServerName(server); } } return INFO_CTRL_PANEL_GENERAL_MONITORING_ROOT.get().toString(); } /** Updates the right entry panel. */ private void updateEntryPane() { ViewPositions pos = Utilities.getViewPositions(entryPane); @@ -499,9 +470,7 @@ throw new RuntimeException("Unknown node type: "+type); } } else { if (paths != null && paths.length > 1) else if (paths != null && paths.length > 1) { entryPane.displayMessage(MULTIPLE_ITEMS_SELECTED); } @@ -510,7 +479,6 @@ entryPane.displayMessage(NO_ELEMENT_SELECTED); } } } Utilities.updateViewPositions(pos); } @@ -521,48 +489,18 @@ private boolean serverChanged(ServerDescriptor desc) { boolean changed = false; if (lastServer != null) if (lastServer == null) { return true; } // Just compare the elements interesting for this panel changed = !desc.getBackends().equals(lastServer.getBackends()); if (!changed) { CustomSearchResult[] monitor1 = { lastServer.getEntryCachesMonitor(), lastServer.getJvmMemoryUsageMonitor(), lastServer.getRootMonitor(), lastServer.getSystemInformationMonitor(), lastServer.getWorkQueueMonitor() }; CustomSearchResult[] monitor2 = { desc.getEntryCachesMonitor(), desc.getJvmMemoryUsageMonitor(), desc.getRootMonitor(), desc.getSystemInformationMonitor(), desc.getWorkQueueMonitor() }; for (int i=0; i<monitor1.length && !changed; i++) { if (monitor1[i] == null) { changed = monitor2[i] != null; } else { changed = !monitor1[i].equals(monitor2[i]); } } } } else { changed = true; } return changed; return !Objects.equals(desc.getBackends(), lastServer.getBackends()) && !Objects.equals(lastServer.getEntryCachesMonitor(), desc.getEntryCachesMonitor()) && !Objects.equals(lastServer.getJvmMemoryUsageMonitor(), desc.getJvmMemoryUsageMonitor()) && !Objects.equals(lastServer.getRootMonitor(), desc.getRootMonitor()) && !Objects.equals(lastServer.getSystemInformationMonitor(), desc.getSystemInformationMonitor()) && !Objects.equals(lastServer.getWorkQueueMonitor(), desc.getWorkQueueMonitor()); } private HashMap<Object, ImageIcon> hmImages = new HashMap<>(); @@ -587,32 +525,29 @@ }; for (int i=0; i<identifiers.length; i++) { hmImages.put(identifiers[i], Utilities.createImageIcon(IconPool.IMAGE_PATH+"/"+ocPaths[i], getClass().getClassLoader())); hmImages.put(identifiers[i], createImageIcon(ocPaths[i])); } } private ImageIcon createImageIcon(LocalizableMessage msg) { return Utilities.createImageIcon(IconPool.IMAGE_PATH + "/" + msg, getClass().getClassLoader()); } private String getServerName(ServerDescriptor server) { String serverName = server.getHostname(); if (server.getAdminConnector() != null) { serverName +=":"+server.getAdminConnector().getPort(); return server.getHostname() + ":" + server.getAdminConnector().getPort(); } return serverName; return server.getHostname(); } /** * Specific class used to render the nodes in the tree. It uses specific * icons for the nodes. * */ /** Specific class used to render the nodes in the tree. It uses specific icons for the nodes. */ protected class GeneralMonitoringTreeCellRenderer extends TreeCellRenderer { private static final long serialVersionUID = -3390566664259441766L; /** {@inheritDoc} */ @Override public Component getTreeCellRendererComponent(JTree tree, Object value, boolean isSelected, boolean isExpanded, boolean isLeaf, int row, @@ -626,55 +561,16 @@ private ImageIcon getIcon(Object value) { ImageIcon icon = null; if (value instanceof GeneralMonitoringTreeNode) { icon = hmImages.get( ((GeneralMonitoringTreeNode)value).getIdentifier()); } else if (!(value instanceof GeneralMonitoringTreeNode)) { throw new RuntimeException("Unexpected tree node: "+value); } return icon; return hmImages.get(((GeneralMonitoringTreeNode) value).getIdentifier()); } } /** * Returns the labels of the nodes to be displayed. * @return the labels of the nodes to be displayed. */ protected LocalizableMessage[] getNodeMessages() { return new LocalizableMessage[] { INFO_CTRL_PANEL_SYSTEM_INFORMATION.get(), INFO_CTRL_PANEL_JAVA_INFORMATION.get(), INFO_CTRL_PANEL_WORK_QUEUE.get(), INFO_CTRL_PANEL_ENTRY_CACHES.get(), INFO_CTRL_PANEL_JE_DB_INFO.get(), INFO_CTRL_PANEL_PDB_DB_INFO.get() }; } /** * Returns the node types to be displayed. * @return the node types to be displayed. */ protected NodeType[] getNodeTypes() { return new NodeType[] { NodeType.SYSTEM_INFORMATION, NodeType.JAVA_INFORMATION, NodeType.WORK_QUEUE, NodeType.ENTRY_CACHES, NodeType.JE_DATABASES_INFORMATION, NodeType.PDB_DATABASES_INFORMATION }; } private boolean isVisible(NodeType nodetype) { return !(isOEMVersion() && nodetype == NodeType.JE_DATABASES_INFORMATION); return !isOEMVersion() || nodetype != NodeType.JE_DATABASES_INFORMATION; } } opendj-server-legacy/src/main/java/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java
@@ -49,6 +49,7 @@ import org.opends.admin.ads.util.ConnectionWrapper; import org.opends.guitools.controlpanel.ControlPanelArgumentParser; import org.opends.guitools.controlpanel.datamodel.ConfigReadException; import org.opends.guitools.controlpanel.datamodel.ControlPanelInfo; import org.opends.guitools.controlpanel.datamodel.CustomSearchResult; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.task.OnlineUpdateException; @@ -74,12 +75,9 @@ import static org.opends.messages.QuickSetupMessages.*; import static org.opends.server.monitors.VersionMonitorProvider.*; /** * The panel that appears when the user is asked to provide authentication. */ /** The panel that appears when the user is asked to provide authentication. */ public class LocalOrRemotePanel extends StatusGenericPanel { private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); private static final long serialVersionUID = 5051556513294844797L; @@ -105,14 +103,12 @@ createLayout(); } /** {@inheritDoc} */ @Override public LocalizableMessage getTitle() { return INFO_CTRL_PANEL_LOCAL_OR_REMOTE_PANEL_TITLE.get(); } /** {@inheritDoc} */ @Override public GenericDialog.ButtonType getButtonType() { @@ -242,9 +238,7 @@ return callOKWhenVisible; } /** * Creates the layout of the panel (but the contents are not populated here). */ /** Creates the layout of the panel (but the contents are not populated here). */ private void createLayout() { GridBagConstraints gbc = new GridBagConstraints(); @@ -312,7 +306,6 @@ gbc.gridx = 0; gbc.gridwidth = 1; localInstallLabel = Utilities.createPrimaryLabel( INFO_CTRL_PANEL_INSTANCE_PATH_LABEL.get()); gbc.insets.left = 0; @@ -386,7 +379,6 @@ addBottomGlue(gbc); } /** {@inheritDoc} */ @Override public Component getPreferredFocusComponent() { @@ -397,13 +389,11 @@ return combo; } /** {@inheritDoc} */ @Override public void configurationChanged(ConfigurationChangeEvent ev) { } /** {@inheritDoc} */ @Override public void toBeDisplayed(boolean visible) { @@ -422,7 +412,6 @@ return null; } @Override public void backgroundTaskCompleted(Void returnValue, Throwable t) @@ -449,7 +438,6 @@ } } /** {@inheritDoc} */ @Override public void okClicked() { @@ -522,11 +510,11 @@ BackgroundTask<InitialLdapContext> worker = new BackgroundTask<InitialLdapContext>() { /** {@inheritDoc} */ @Override public InitialLdapContext processBackgroundTask() throws Throwable { getInfo().stopPooling(); final ControlPanelInfo info = getInfo(); info.stopPooling(); if (isLocal) { // At least load the local information. @@ -539,12 +527,12 @@ INFO_CTRL_PANEL_READING_CONFIGURATION_SUMMARY.get()); } }); if (getInfo().isLocal() != isLocal) if (info.isLocal() != isLocal) { closeInfoConnections(); } getInfo().setIsLocal(isLocal); getInfo().regenerateDescriptor(); info.setIsLocal(isLocal); info.regenerateDescriptor(); if (!isLocalServerRunning) { return null; @@ -555,8 +543,8 @@ { if (isLocal) { usedUrl = getInfo().getAdminConnectorURL(); ctx = Utilities.getAdminDirContext(getInfo(), dn.getText(), usedUrl = info.getAdminConnectorURL(); ctx = Utilities.getAdminDirContext(info, dn.getText(), String.valueOf(pwd.getPassword())); } else @@ -565,8 +553,8 @@ Integer.valueOf(port.getText().trim()), true); ctx = createLdapsContext(usedUrl, dn.getText(), String.valueOf(pwd.getPassword()), getInfo().getConnectTimeout(), null, getInfo().getTrustManager(), null); info.getConnectTimeout(), null, info.getTrustManager(), null); checkVersion(ctx); } @@ -580,11 +568,11 @@ } }); closeInfoConnections(); getInfo().setIsLocal(isLocal); getInfo().setConnection( new ConnectionWrapper(ctx, getInfo().getConnectTimeout(), getInfo().getTrustManager())); getInfo().setUserDataDirContext(null); getInfo().regenerateDescriptor(); info.setIsLocal(isLocal); info.setConnection( new ConnectionWrapper(ctx, info.getConnectTimeout(), info.getTrustManager())); info.setUserDataDirContext(null); info.regenerateDescriptor(); return ctx; } catch (Throwable t) { @@ -593,10 +581,8 @@ } } /** {@inheritDoc} */ @Override public void backgroundTaskCompleted(InitialLdapContext ctx, Throwable throwable) public void backgroundTaskCompleted(InitialLdapContext ctx, Throwable throwable) { boolean handleCertificateException = false; boolean localServerErrorConnecting = false; @@ -605,6 +591,7 @@ { logger.info(LocalizableMessage.raw("Error connecting: " + throwable, throwable)); final ControlPanelInfo info = getInfo(); if (isVersionException(throwable)) { errors.add(((OpenDsException)throwable).getMessageObject()); @@ -612,7 +599,7 @@ else if (isCertificateException(throwable)) { ApplicationTrustManager.Cause cause = getInfo().getTrustManager().getLastRefusedCause(); info.getTrustManager().getLastRefusedCause(); logger.info(LocalizableMessage.raw("Certificate exception cause: "+cause)); UserDataCertificateException.Type excType = null; @@ -620,16 +607,13 @@ { excType = UserDataCertificateException.Type.NOT_TRUSTED; } else if (cause == ApplicationTrustManager.Cause.HOST_NAME_MISMATCH) else if (cause == ApplicationTrustManager.Cause.HOST_NAME_MISMATCH) { excType = UserDataCertificateException.Type.HOST_NAME_MISMATCH; } else { LocalizableMessage msg = getThrowableMsg( INFO_ERROR_CONNECTING_TO_LOCAL.get(), throwable); errors.add(msg); errors.add(getThrowableMsg(INFO_ERROR_CONNECTING_TO_LOCAL.get(), throwable)); } if (excType != null) @@ -649,12 +633,13 @@ h = INFO_NOT_AVAILABLE_LABEL.get().toString(); p = -1; } ApplicationTrustManager trustMgr = info.getTrustManager(); UserDataCertificateException udce = new UserDataCertificateException(null, INFO_CERTIFICATE_EXCEPTION.get(h, p), throwable, h, p, getInfo().getTrustManager().getLastRefusedChain(), getInfo().getTrustManager().getLastRefusedAuthType(), trustMgr.getLastRefusedChain(), trustMgr.getLastRefusedAuthType(), excType); handleCertificateException(udce); @@ -667,7 +652,7 @@ String providedDn = dn.getText(); if (isLocal) { Iterator<DN> it = getInfo().getServerDescriptor(). Iterator<DN> it = info.getServerDescriptor(). getAdministrativeUsers().iterator(); while (it.hasNext() && !found) { @@ -771,7 +756,6 @@ } } /** {@inheritDoc} */ @Override public void cancelClicked() { @@ -922,10 +906,10 @@ String hostName = ConnectionUtils.getHostName(ctx); String productName = String.valueOf(getFirstValueAsString(csr, ATTR_PRODUCT_NAME)); String major = String.valueOf(getFirstValueAsString(csr, ATTR_MAJOR_VERSION)); String point = String.valueOf(getFirstValueAsString(csr, ATTR_POINT_VERSION)); String minor = String.valueOf(getFirstValueAsString(csr, ATTR_MINOR_VERSION)); String productName = getFirstValueAsString(csr, ATTR_PRODUCT_NAME); String major = getFirstValueAsString(csr, ATTR_MAJOR_VERSION); String point = getFirstValueAsString(csr, ATTR_POINT_VERSION); String minor = getFirstValueAsString(csr, ATTR_MINOR_VERSION); // Be strict, control panel is only compatible with exactly the same version if (!productName.equalsIgnoreCase(DynamicConstants.PRODUCT_NAME)) { opendj-server-legacy/src/main/java/org/opends/guitools/uninstaller/UninstallCliHelper.java
@@ -70,10 +70,12 @@ import com.forgerock.opendj.cli.ArgumentException; import com.forgerock.opendj.cli.ClientException; import com.forgerock.opendj.cli.ConsoleApplication; import com.forgerock.opendj.cli.IntegerArgument; import com.forgerock.opendj.cli.Menu; import com.forgerock.opendj.cli.MenuBuilder; import com.forgerock.opendj.cli.MenuResult; import com.forgerock.opendj.cli.ReturnCode; import com.forgerock.opendj.cli.StringArgument; /** * The class used to provide some CLI interface in the uninstall. @@ -83,10 +85,8 @@ * * Once the user has provided all the required information it calls Uninstaller * and launches it. * */ public class UninstallCliHelper extends ConsoleApplication { private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass(); private UninstallerArgumentParser parser; @@ -97,9 +97,7 @@ private boolean useSSL = true; private boolean useStartTLS; /** * Default constructor. */ /** Default constructor. */ public UninstallCliHelper() { // Nothing to do. @@ -135,8 +133,7 @@ boolean isVerbose; boolean isCanceled = false; /* Step 1: analyze the arguments. */ /* Step 1: analyze the arguments. */ isInteractive = args.isInteractive(); @@ -151,9 +148,7 @@ userData.setConnectTimeout(getConnectTimeout()); /* * Step 2: check that the provided parameters are compatible. */ /* Step 2: check that the provided parameters are compatible. */ LocalizableMessageBuilder buf = new LocalizableMessageBuilder(); int v = args.validateGlobalOptions(buf); if (v != ReturnCode.SUCCESS.get()) @@ -245,9 +240,7 @@ info.setConnectTimeout(getConnectTimeout()); info.regenerateDescriptor(); info.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN); String adminConnectorUrl = info.getAdminConnectorURL(); if (adminConnectorUrl == null) { logger.warn(LocalizableMessage.raw( @@ -268,13 +261,12 @@ if (!isCanceled) { isCanceled = checkServerState(userData); } if (isCanceled && !userData.isForceOnError()) { logger.info(LocalizableMessage.raw("User cancelled uninstall.")); userData = null; } } if (userData != null && !args.isQuiet()) { @@ -790,44 +782,47 @@ while (!couldConnect && accepted) { // This is done because we do not need to ask the user about these parameters. // If we force their presence the class LDAPConnectionConsoleInteraction will not prompt the user for them. SecureConnectionCliArgs secureArgsList = parser.getSecureArgsList(); secureArgsList.getHostNameArg().setPresent(true); secureArgsList.getPortArg().setPresent(true); secureArgsList.getHostNameArg().clearValues(); secureArgsList.getHostNameArg().addValue( secureArgsList.getHostNameArg().getDefaultValue()); secureArgsList.getPortArg().clearValues(); secureArgsList.getPortArg().addValue( secureArgsList.getPortArg().getDefaultValue()); secureArgsList.getBindDnArg().clearValues(); StringArgument hostNameArg = secureArgsList.getHostNameArg(); hostNameArg.setPresent(true); hostNameArg.clearValues(); hostNameArg.addValue(hostNameArg.getDefaultValue()); IntegerArgument portArg = secureArgsList.getPortArg(); portArg.setPresent(true); portArg.clearValues(); portArg.addValue(portArg.getDefaultValue()); StringArgument bindDnArg = secureArgsList.getBindDnArg(); bindDnArg.clearValues(); if (uid != null) { secureArgsList.getBindDnArg().addValue(ADSContext.getAdministratorDN(uid)); secureArgsList.getBindDnArg().setPresent(true); bindDnArg.addValue(ADSContext.getAdministratorDN(uid)); bindDnArg.setPresent(true); } else { secureArgsList.getBindDnArg().setPresent(false); bindDnArg.setPresent(false); } secureArgsList.getBindPasswordArg().clearValues(); StringArgument bindPasswordArg = secureArgsList.getBindPasswordArg(); bindPasswordArg.clearValues(); if (pwd != null) { secureArgsList.getBindPasswordArg().addValue(pwd); secureArgsList.getBindPasswordArg().setPresent(true); bindPasswordArg.addValue(pwd); bindPasswordArg.setPresent(true); } else { secureArgsList.getBindPasswordArg().setPresent(false); bindPasswordArg.setPresent(false); } if (ci == null) { ci = new LDAPConnectionConsoleInteraction(this, parser.getSecureArgsList()); ci = new LDAPConnectionConsoleInteraction(this, parser.getSecureArgsList()); ci.setDisplayLdapIfSecureParameters(true); } @@ -838,12 +833,10 @@ userData.setAdminPwd(ci.getBindPassword()); info.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN); String adminConnectorUrl = info.getAdminConnectorURL(); if (adminConnectorUrl == null) { logger.warn(LocalizableMessage.raw( "Error retrieving a valid Administration Connector URL in conf file.")); logger.warn(LocalizableMessage.raw("Error retrieving a valid Administration Connector URL in conf file.")); LocalizableMessage msg = ERR_COULD_NOT_FIND_VALID_LDAPURL.get(); throw new ClientException(ReturnCode.APPLICATION_ERROR, msg); } @@ -851,8 +844,8 @@ { URI uri = new URI(adminConnectorUrl); int port = uri.getPort(); secureArgsList.getPortArg().clearValues(); secureArgsList.getPortArg().addValue(String.valueOf(port)); portArg.clearValues(); portArg.addValue(String.valueOf(port)); ci.setPortNumber(port); } catch (Throwable t) @@ -862,9 +855,7 @@ updateTrustManager(userData, ci); info.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN); adminConnectorUrl = info.getAdminConnectorURL(); if (adminConnectorUrl == null) { logger.warn(LocalizableMessage.raw( @@ -948,13 +939,11 @@ boolean serverStarted = false; Application application = new Application() { /** {@inheritDoc} */ @Override public String getInstallationPath() { return Installation.getLocal().getRootDirectory().getAbsolutePath(); } /** {@inheritDoc} */ @Override public String getInstancePath() { @@ -964,75 +953,51 @@ String instancePathFileName = installPath + File.separator + "lib" + File.separator + "resource.loc"; File f = new File(instancePathFileName); if (! f.exists()) { return installPath; } BufferedReader reader; try { reader = new BufferedReader(new FileReader(instancePathFileName)); } catch (Exception e) { return installPath; } // Read the first line and close the file. String line; try try (BufferedReader reader = new BufferedReader(new FileReader(instancePathFileName))) { line = reader.readLine(); String line = reader.readLine(); return new File(line).getAbsolutePath(); } catch (Exception e) { return installPath; } finally { StaticUtils.close(reader); } } /** {@inheritDoc} */ @Override public ProgressStep getCurrentProgressStep() { return UninstallProgressStep.NOT_STARTED; } /** {@inheritDoc} */ @Override public Integer getRatio(ProgressStep step) { return 0; } /** {@inheritDoc} */ @Override public LocalizableMessage getSummary(ProgressStep step) { return null; } /** {@inheritDoc} */ @Override public boolean isFinished() { return false; } /** {@inheritDoc} */ @Override public boolean isCancellable() { return false; } /** {@inheritDoc} */ @Override public void cancel() { } /** {@inheritDoc} */ @Override public void run() { @@ -1055,13 +1020,14 @@ Installation.getLocal()); try { if (!suppressOutput) if (suppressOutput) { controller.startServer(true); } else { println(); } controller.startServer(suppressOutput); if (!suppressOutput) { controller.startServer(false); println(); } serverStarted = Installation.getLocal().getStatus().isServerRunning(); @@ -1192,8 +1158,7 @@ logger.error(LocalizableMessage.raw("Error parsing url: "+adminConnectorUrl)); } ctx = createAdministrativeContext(host, port, useSSL, useStartTLS, dn, pwd, getConnectTimeout(), userData.getTrustManager()); pwd, getConnectTimeout(), userData.getTrustManager()); ConnectionWrapper connWrapper = new ConnectionWrapper(ctx, getConnectTimeout(), userData.getTrustManager()); ADSContext adsContext = new ADSContext(connWrapper); @@ -1233,11 +1198,9 @@ { logger.warn(LocalizableMessage.raw("Error connecting to server: "+te, te)); exceptionMsg = Utils.getMessage(te); } catch (ClientException ce) { throw ce; } catch (Throwable t) { logger.warn(LocalizableMessage.raw("Error connecting to server: "+t, t)); @@ -1435,47 +1398,31 @@ return returnValue; } /** {@inheritDoc} */ @Override public boolean isAdvancedMode() { return false; } /** {@inheritDoc} */ @Override public boolean isInteractive() { return !forceNonInteractive && parser.isInteractive(); } /** {@inheritDoc} */ @Override public boolean isMenuDrivenMode() { return true; } /** {@inheritDoc} */ @Override public boolean isQuiet() { return false; } /** {@inheritDoc} */ @Override public boolean isScriptFriendly() { return false; } /** {@inheritDoc} */ @Override public boolean isVerbose() { return true; @@ -1507,12 +1454,7 @@ userData.setTrustManager(trust); } /** * Forces the initialization of the trust manager in the * LDAPConnectionInteraction object. */ /** Forces the initialization of the trust manager in the LDAPConnectionInteraction object. */ private void forceTrustManagerInitialization() { forceNonInteractive = true; opendj-server-legacy/src/main/java/org/opends/server/tools/status/StatusCli.java
@@ -86,7 +86,9 @@ import com.forgerock.opendj.cli.CliConstants; import com.forgerock.opendj.cli.ClientException; import com.forgerock.opendj.cli.ConsoleApplication; import com.forgerock.opendj.cli.IntegerArgument; import com.forgerock.opendj.cli.ReturnCode; import com.forgerock.opendj.cli.StringArgument; import com.forgerock.opendj.cli.TableBuilder; import com.forgerock.opendj.cli.TextTablePrinter; @@ -135,7 +137,6 @@ * * @param args The command-line arguments provided to this program. */ public static void main(String[] args) { int retCode = mainCLI(args, true, System.out, System.err, System.in); @@ -267,11 +268,9 @@ // parameters. We force their presence in the // LDAPConnectionConsoleInteraction, this done, it will not prompt // the user for them. final SecureConnectionCliArgs secureArgsList = argParser.getSecureArgsList(); controlInfo.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN); String ldapUrl = controlInfo.getAdminConnectorURL(); int port = CliConstants.DEFAULT_ADMINISTRATION_CONNECTOR_PORT; controlInfo.setConnectionPolicy(ConnectionProtocolPolicy.USE_ADMIN); String ldapUrl = controlInfo.getURLToConnect(); try { final URI uri = new URI(ldapUrl); @@ -281,16 +280,19 @@ { logger.error(LocalizableMessage.raw("Error parsing url: " + ldapUrl)); } secureArgsList.getHostNameArg().setPresent(true); secureArgsList.getPortArg().setPresent(true); secureArgsList.getHostNameArg().addValue(secureArgsList.getHostNameArg().getDefaultValue()); secureArgsList.getPortArg().addValue(Integer.toString(port)); final SecureConnectionCliArgs secureArgsList = argParser.getSecureArgsList(); final StringArgument hostNameArg = secureArgsList.getHostNameArg(); hostNameArg.setPresent(true); hostNameArg.addValue(hostNameArg.getDefaultValue()); final IntegerArgument portArg = secureArgsList.getPortArg(); portArg.setPresent(true); portArg.addValue(Integer.toString(port)); // We already know if SSL or StartTLS can be used. If we cannot // use them we will not propose them in the connection parameters // and if none of them can be used we will just not ask for the // protocol to be used. final LDAPConnectionConsoleInteraction ci = new LDAPConnectionConsoleInteraction(this, argParser.getSecureArgsList(), ALLOW_ANONYMOUS_IF_NON_INTERACTIVE); new LDAPConnectionConsoleInteraction(this, secureArgsList, ALLOW_ANONYMOUS_IF_NON_INTERACTIVE); try { ci.run(false); @@ -1108,38 +1110,32 @@ return argParser.getTrustManager(); } /** {@inheritDoc} */ @Override public boolean isAdvancedMode() { return false; } /** {@inheritDoc} */ @Override public boolean isInteractive() { return argParser.isInteractive(); } /** {@inheritDoc} */ @Override public boolean isMenuDrivenMode() { return true; } /** {@inheritDoc} */ @Override public boolean isQuiet() { return false; } /** {@inheritDoc} */ @Override public boolean isScriptFriendly() { return argParser.isScriptFriendly(); } /** {@inheritDoc} */ @Override public boolean isVerbose() { return true;