/* * 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 org.opends.quicksetup.util.Utils; import org.opends.server.util.SetupUtils; /** * Represents user specified input data to an application. */ public class UserData { private String serverLocation; private int serverPort; private String directoryManagerDn; private String directoryManagerPwd; private DataOptions dataOptions; private SecurityOptions securityOptions; private int serverJMXPort; private boolean startServer; private boolean stopServer; /** * Creates a user data object with default values. */ public UserData() { startServer = true; DataOptions defaultDataOptions = new DefaultDataOptions(); setServerLocation(Utils.getDefaultServerLocation()); // See what we can propose as port int defaultPort = getDefaultPort(); if (defaultPort != -1) { setServerPort(defaultPort); } setDirectoryManagerDn("cn=Directory Manager"); setDataOptions(defaultDataOptions); 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; } /** * 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 the DataOptions object representing the data in the Data Options * panel. * @return the DataOptions object representing the data in the Data Options * panel. */ public DataOptions getDataOptions() { return dataOptions; } /** * Sets the DataOptions object representing the data in the Data Options * panel. * @param dataOptions the DataOptions object representing the data in the Data * Options panel. */ public void setDataOptions(DataOptions dataOptions) { this.dataOptions = dataOptions; } /** * 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 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 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 + SetupUtils.getDefaultJMXPort(); boolean isForbidden = false; if (forbiddenPorts != null) { for (int j=0; j