/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2007 Sun Microsystems, Inc. */ package org.opends.quicksetup; import java.util.HashSet; import org.opends.admin.ads.SuffixDescriptor; import org.opends.quicksetup.installer.AuthenticationData; import org.opends.quicksetup.installer.DataReplicationOptions; import org.opends.quicksetup.installer.NewSuffixOptions; import org.opends.quicksetup.installer.SuffixesToReplicateOptions; import org.opends.quicksetup.util.Utils; /** * This class is used to provide a data model for the different parameters * that the user can provide in the installation wizard. * * @see org.opends.quicksetup.DataOptions * */ public class UserData { private String serverLocation; private int serverPort; private String directoryManagerDn; private String directoryManagerPwd; private String globalAdministratorUID; private String globalAdministratorPassword; private SecurityOptions securityOptions; private int serverJMXPort; private boolean startServer; private boolean stopServer; private NewSuffixOptions newSuffixOptions; private DataReplicationOptions replicationOptions; private boolean createAdministrator; private SuffixesToReplicateOptions suffixesToReplicateOptions; /** * Creates a user data object with default values. */ public UserData() { startServer = true; NewSuffixOptions defaultNewSuffixOptions = new NewSuffixOptions( NewSuffixOptions.Type.CREATE_BASE_ENTRY, "dc=example,dc=com"); setNewSuffixOptions(defaultNewSuffixOptions); // See what we can propose as port int defaultPort = getDefaultPort(); if (defaultPort != -1) { setServerPort(defaultPort); } setDirectoryManagerDn("cn=Directory Manager"); setNewSuffixOptions(defaultNewSuffixOptions); AuthenticationData data = new AuthenticationData(); data.setDn("cn=Directory Manager"); data.setPort(389); DataReplicationOptions repl = new DataReplicationOptions( DataReplicationOptions.Type.STANDALONE, data); setReplicationOptions(repl); setGlobalAdministratorUID("admin"); SuffixesToReplicateOptions suffixes = new SuffixesToReplicateOptions( SuffixesToReplicateOptions.Type.REPLICATE_WITH_EXISTING_SUFFIXES, new HashSet(), new HashSet()); setSuffixesToReplicateOptions(suffixes); SecurityOptions sec = SecurityOptions.createNoCertificateOptions(); sec.setSslPort(getDefaultSslPort()); sec.setCertificateUserName(getDefaultSelfSignedName()); setSecurityOptions(sec); } /** * Sets the location of the server (installation path). * @param serverLocation the new server location (installation path). */ public void setServerLocation(String serverLocation) { this.serverLocation = serverLocation; } /** * Returns the location of the server (installation path). * @return the location of the server (installation path). */ public String getServerLocation() { return serverLocation; } /** * Sets the server LDAP port. * @param serverPort the new server LDAP port. */ public void setServerPort(int serverPort) { this.serverPort = serverPort; } /** * Returns the server LDAP port. * @return the server LDAP port. */ public int getServerPort() { return serverPort; } /** * Sets the server JMX port. * @param serverJMXPort the new server JMX port. */ public void setServerJMXPort(int serverJMXPort) { this.serverJMXPort = serverJMXPort; } /** * Returns the server JMX port. * @return the server JMX port. */ public int getServerJMXPort() { return serverJMXPort; } /** * Returns the Directory Manager DN. * @return the Directory Manager DN. */ public String getDirectoryManagerDn() { return directoryManagerDn; } /** * Sets the new Directory Manager DN. * @param directoryManagerDn the new Directory Manager DN. */ public void setDirectoryManagerDn(String directoryManagerDn) { this.directoryManagerDn = directoryManagerDn; } /** * Returns the Directory Manager password. * @return the Directory Manager password. */ public String getDirectoryManagerPwd() { return directoryManagerPwd; } /** * Sets the new Directory Manager password. * @param directoryManagerPwd the new Directory Manager password. */ public void setDirectoryManagerPwd(String directoryManagerPwd) { this.directoryManagerPwd = directoryManagerPwd; } /** * Returns true if the server must be started once the * installation is finished, false if not. * @return true if the server must be started once the * installation is finished, false if not. */ public boolean getStartServer() { return startServer; } /** * Sets whether we want to start the server once the installation is finished * or not. * @param startServer the boolean indicating whether to start the server or * not. */ public void setStartServer(boolean startServer) { this.startServer = startServer; } /** * Sets whether to stop the server or not. * @param stopServer stop the server or not. */ public void setStopServer(boolean stopServer) { this.stopServer = stopServer; } /** * Returns whether the user wants to stop the server or not. * @return true if the user wants to stop the server and \ * false otherwise. */ public boolean getStopServer() { return stopServer; } /** * Returns the NewSuffixOptions object representing the data in the New Suffix * Data Options panel. * @return the NewSuffixOptions object representing the data in the New Suffix * Data Options panel. */ public NewSuffixOptions getNewSuffixOptions() { return newSuffixOptions; } /** * Sets the NewSuffixOptions object representing the data in the New Suffix * Data Options panel. * @param newSuffixOptions the NewSuffixOptions object representing the data * in the New Suffix Data Options panel. */ public void setNewSuffixOptions(NewSuffixOptions newSuffixOptions) { this.newSuffixOptions = newSuffixOptions; } /** * Returns the DataReplicationOptions object representing the data in the * Data Replication panel. * @return the DataReplicationOptions object representing the data in the * Data Replication panel. */ public DataReplicationOptions getReplicationOptions() { return replicationOptions; } /** * Sets the DataReplicationOptions object representing the data in the * Data Replication panel. * @param replicationOptions the DataReplicationOptions object * representing the data in the Data Replication panel. */ public void setReplicationOptions( DataReplicationOptions replicationOptions) { this.replicationOptions = replicationOptions; } /** * Returns whether must create a global administrator or not. * @return true if we must create a global administrator and * false otherwise. */ public boolean mustCreateAdministrator() { return createAdministrator; } /** * Sets whether must create a global administrator or not. * @param createAdministrator whether we must create a global administrator or * not. */ public void createAdministrator(boolean createAdministrator) { this.createAdministrator = createAdministrator; } /** * Returns the UID of the global administrator. * @return the UID of the global administrator. */ public String getGlobalAdministratorUID() { return globalAdministratorUID; } /** * Sets the UID of the global administrator. * @param globalAdministratorUID the UID of the global administrator. */ public void setGlobalAdministratorUID(String globalAdministratorUID) { this.globalAdministratorUID = globalAdministratorUID; } /** * Returns the password of the global administrator. * @return the password of the global administrator. */ public String getGlobalAdministratorPassword() { return globalAdministratorPassword; } /** * Sets the password of the global administrator. * @param globalAdministratorPwd the password of the global administrator. */ public void setGlobalAdministratorPassword(String globalAdministratorPwd) { this.globalAdministratorPassword = globalAdministratorPwd; } /** * Sets the suffixes to replicate options. * @param suffixesToReplicateOptions the suffixes to replicate options * object. */ public void setSuffixesToReplicateOptions( SuffixesToReplicateOptions suffixesToReplicateOptions) { this.suffixesToReplicateOptions = suffixesToReplicateOptions; } /** * Returns the suffixes to replicate options. * @return the suffixes to replicate options. */ public SuffixesToReplicateOptions getSuffixesToReplicateOptions() { return suffixesToReplicateOptions; } /** * Returns the SecurityOptions representing the SSL/StartTLS configuration * chosen by the user. * @return the SecurityOptions representing the SSL/StartTLS configuration * chosen by the user. */ public SecurityOptions getSecurityOptions() { return securityOptions; } /** * Sets the SecurityOptions representing the SSL/StartTLS configuration * chosen by the user. * @param securityOptions the SecurityOptions representing the SSL/StartTLS * configuration chosen by the user. */ public void setSecurityOptions(SecurityOptions securityOptions) { this.securityOptions = securityOptions; } /** * Provides the port that will be proposed to the user in the second page of * the installation wizard. It will check whether we can use ports of type * X389 and if not it will return -1. * * @return the free port of type x389 if it is available and we can use and -1 * if not. */ static public int getDefaultPort() { int defaultPort = -1; for (int i=0;i<10000 && (defaultPort == -1);i+=1000) { int port = i + 389; if (Utils.canUseAsPort(port)) { defaultPort = port; } } return defaultPort; } /** * Provides the port that will be proposed to the user in the security dialog * of the installation wizard. It will check whether we can use ports of type * X636 and if not it will return -1. * * @return the free port of type X636 if it is available and we can use and -1 * if not. */ static int getDefaultSslPort() { int defaultPort = -1; for (int i=0;i<10000 && (defaultPort == -1);i+=1000) { int port = i + 636; if (Utils.canUseAsPort(port)) { defaultPort = port; } } return defaultPort; } /** * Provides the port that will be used by default for JMX. * * @param forbiddenPorts an array of ports that we cannot use. * @return the port X689 if it is available and we can use and -1 if not. */ static public int getDefaultJMXPort(int[] forbiddenPorts) { int defaultJMXPort = -1; for (int i=0;i<65000 && (defaultJMXPort == -1);i+=1000) { int port = i + org.opends.server.util.SetupUtils.getDefaultJMXPort(); boolean isForbidden = false; if (forbiddenPorts != null) { for (int j=0; j