/*
* 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 legal-notices/CDDLv1_0.txt
* or http://forgerock.org/license/CDDLv1.0.html.
* 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 legal-notices/CDDLv1_0.txt.
* 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
*
*
* Copyright 2014-2015 ForgeRock AS.
*/
package org.forgerock.opendj.server.setup.model;
import java.util.ArrayList;
/**
* This class contains utilities for the OpenDJ3 setup.
*/
final class ModelUtils {
static final String OBFUSCATED_VALUE = "******";
ArrayList<String> getSetupEquivalentCommandLine(final Model configuration) {
final ArrayList<String> cmdLines = new ArrayList<>();
final ListenerSettings settings = configuration.getListenerSettings();
// Starts the server ?
if (configuration.getType() == Model.Type.STANDALONE
&& !configuration.isStartingServerAfterSetup()) {
cmdLines.add("--doNotStart");
}
if (configuration.isSecure()) {
if (settings.isTLSEnabled()) {
cmdLines.add("--enableStartTLS");
}
if (settings.isSSLEnabled()) {
cmdLines.add("--ldapsPort");
cmdLines.add(String.valueOf(settings.getSSLPortNumber()));
}
final Certificate certificate = settings.getCertificate();
switch (certificate.getType()) {
case SELF_SIGNED:
cmdLines.add("--generateSelfSignedCertificate");
cmdLines.add("--hostName");
cmdLines.add(settings.getHostName());
break;
case JKS:
appendKeystoreCliOptionsWithPath(cmdLines, "--useJavaKeystore", certificate);
break;
case JCEKS:
appendKeystoreCliOptionsWithPath(cmdLines, "--useJCEKS", certificate);
break;
case PKCS12:
appendKeystoreCliOptionsWithPath(cmdLines, "--usePkcs12keyStore", certificate);
break;
case PKCS11:
cmdLines.add("--usePkcs11Keystore");
// do not add a file path because this is a hardware store
appendKeystoreCliOptions(cmdLines, certificate);
break;
}
}
cmdLines.add("--no-prompt");
cmdLines.add("--noPropertiesFile");
return cmdLines;
}
private void appendKeystoreCliOptionsWithPath(final ArrayList<String> cmdLines, final String cliOption,
final Certificate certificate) {
cmdLines.add(cliOption);
cmdLines.add(certificate.getKeyStoreFile().getAbsolutePath());
appendKeystoreCliOptions(cmdLines, certificate);
}
private void appendKeystoreCliOptions(final ArrayList<String> cmdLines, final Certificate certificate) {
if (certificate.getKeyStorePin() != null) {
cmdLines.add("--keyStorePassword");
cmdLines.add(OBFUSCATED_VALUE);
}
if (!certificate.getCertNickName().isEmpty()) {
cmdLines.add("--certNickname");
cmdLines.add(certificate.getCertNickName());
}
}
}