in ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java [286:387]
public Configuration(Properties properties) {
this.properties = properties;
configsMap = new HashMap<String, String>();
configsMap.put(SRVR_TWO_WAY_SSL_KEY, properties.getProperty(
SRVR_TWO_WAY_SSL_KEY, SRVR_TWO_WAY_SSL_DEFAULT));
configsMap.put(SRVR_TWO_WAY_SSL_PORT_KEY, properties.getProperty(
SRVR_TWO_WAY_SSL_PORT_KEY, SRVR_TWO_WAY_SSL_PORT_DEFAULT));
configsMap.put(SRVR_ONE_WAY_SSL_PORT_KEY, properties.getProperty(
SRVR_ONE_WAY_SSL_PORT_KEY, SRVR_ONE_WAY_SSL_PORT_DEFAULT));
configsMap.put(SRVR_KSTR_DIR_KEY, properties.getProperty(
SRVR_KSTR_DIR_KEY, SRVR_KSTR_DIR_DEFAULT));
configsMap.put(SRVR_CRT_NAME_KEY, properties.getProperty(
SRVR_CRT_NAME_KEY, SRVR_CRT_NAME_DEFAULT));
configsMap.put(SRVR_KEY_NAME_KEY, properties.getProperty(
SRVR_KEY_NAME_KEY, SRVR_KEY_NAME_DEFAULT));
configsMap.put(KSTR_NAME_KEY, properties.getProperty(
KSTR_NAME_KEY, KSTR_NAME_DEFAULT));
configsMap.put(SRVR_CRT_PASS_FILE_KEY, properties.getProperty(
SRVR_CRT_PASS_FILE_KEY, SRVR_CRT_PASS_FILE_DEFAULT));
configsMap.put(PASSPHRASE_ENV_KEY, properties.getProperty(
PASSPHRASE_ENV_KEY, PASSPHRASE_ENV_DEFAULT));
configsMap.put(PASSPHRASE_KEY, System.getenv(configsMap.get(
PASSPHRASE_ENV_KEY)));
configsMap.put(USER_ROLE_NAME_KEY, properties.getProperty(
USER_ROLE_NAME_KEY, USER_ROLE_NAME_DEFAULT));
configsMap.put(ADMIN_ROLE_NAME_KEY, properties.getProperty(
ADMIN_ROLE_NAME_KEY, ADMIN_ROLE_NAME_DEFAULT));
configsMap.put(RESOURCES_DIR_KEY, properties.getProperty(
RESOURCES_DIR_KEY, RESOURCES_DIR_DEFAULT));
configsMap.put(SRVR_CRT_PASS_LEN_KEY, properties.getProperty(
SRVR_CRT_PASS_LEN_KEY, SRVR_CRT_PASS_LEN_DEFAULT));
configsMap.put(CLIENT_API_SSL_KSTR_DIR_NAME_KEY, properties.getProperty(
CLIENT_API_SSL_KSTR_DIR_NAME_KEY, configsMap.get(SRVR_KSTR_DIR_KEY)));
configsMap.put(CLIENT_API_SSL_KSTR_NAME_KEY, properties.getProperty(
CLIENT_API_SSL_KSTR_NAME_KEY, CLIENT_API_SSL_KSTR_NAME_DEFAULT));
configsMap.put(CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY, properties.getProperty(
CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY, CLIENT_API_SSL_CRT_PASS_FILE_NAME_DEFAULT));
configsMap.put(CLIENT_API_SSL_KEY_NAME_KEY, properties.getProperty(
CLIENT_API_SSL_KEY_NAME_KEY, CLIENT_API_SSL_KEY_NAME_DEFAULT));
configsMap.put(CLIENT_API_SSL_CRT_NAME_KEY, properties.getProperty(
CLIENT_API_SSL_CRT_NAME_KEY, CLIENT_API_SSL_CRT_NAME_DEFAULT));
configsMap.put(JAVA_HOME_KEY, properties.getProperty(
JAVA_HOME_KEY, JAVA_HOME_DEFAULT));
File passFile = new File(configsMap.get(SRVR_KSTR_DIR_KEY) + File.separator
+ configsMap.get(SRVR_CRT_PASS_FILE_KEY));
String password = null;
if (!passFile.exists()) {
LOG.info("Generation of file with password");
try {
password = RandomStringUtils.randomAlphanumeric(Integer
.parseInt(configsMap.get(SRVR_CRT_PASS_LEN_KEY)));
FileUtils.writeStringToFile(passFile, password);
ShellCommandUtil.setUnixFilePermissions(
ShellCommandUtil.MASK_OWNER_ONLY_RW, passFile.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(
"Error reading certificate password from file");
}
} else {
LOG.info("Reading password from existing file");
try {
password = FileUtils.readFileToString(passFile);
password = password.replaceAll("\\p{Cntrl}", "");
} catch (IOException e) {
e.printStackTrace();
}
}
configsMap.put(SRVR_CRT_PASS_KEY, password);
if (this.getApiSSLAuthentication()) {
LOG.info("API SSL Authentication is turned on.");
File httpsPassFile = new File(configsMap.get(CLIENT_API_SSL_KSTR_DIR_NAME_KEY)
+ File.separator + configsMap.get(CLIENT_API_SSL_CRT_PASS_FILE_NAME_KEY));
if (httpsPassFile.exists()) {
LOG.info("Reading password from existing file");
try {
password = FileUtils.readFileToString(httpsPassFile);
password = password.replaceAll("\\p{Cntrl}", "");
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("Error reading certificate password from" +
" file " + httpsPassFile.getAbsolutePath());
}
} else {
LOG.error("There is no keystore for https UI connection.");
LOG.error("Run \"ambari-server setup-https\" or set " + Configuration.API_USE_SSL + " = false.");
throw new RuntimeException("Error reading certificate password from " +
"file " + httpsPassFile.getAbsolutePath());
}
configsMap.put(CLIENT_API_SSL_CRT_PASS_KEY, password);
}
loadSSLParams();
}