use of password.pwm.http.bean.ConfigManagerBean in project pwm by pwm-project.
the class ConfigEditorServlet method restReadSetting.
@ActionHandler(action = "readSetting")
private ProcessStatus restReadSetting(final PwmRequest pwmRequest) throws IOException, PwmUnrecoverableException {
final ConfigManagerBean configManagerBean = getBean(pwmRequest);
final StoredConfigurationImpl storedConfig = configManagerBean.getStoredConfiguration();
final String key = pwmRequest.readParameterAsString("key");
final Object returnValue;
final LinkedHashMap<String, Object> returnMap = new LinkedHashMap<>();
final PwmSetting theSetting = PwmSetting.forKey(key);
if (key.startsWith("localeBundle")) {
final StringTokenizer st = new StringTokenizer(key, "-");
st.nextToken();
final PwmLocaleBundle bundleName = PwmLocaleBundle.valueOf(st.nextToken());
final String keyName = st.nextToken();
final Map<String, String> bundleMap = storedConfig.readLocaleBundleMap(bundleName.getTheClass().getName(), keyName);
if (bundleMap == null || bundleMap.isEmpty()) {
final Map<String, String> defaultValueMap = new LinkedHashMap<>();
final String defaultLocaleValue = ResourceBundle.getBundle(bundleName.getTheClass().getName(), PwmConstants.DEFAULT_LOCALE).getString(keyName);
for (final Locale locale : pwmRequest.getConfig().getKnownLocales()) {
final ResourceBundle localeBundle = ResourceBundle.getBundle(bundleName.getTheClass().getName(), locale);
if (locale.toString().equalsIgnoreCase(PwmConstants.DEFAULT_LOCALE.toString())) {
defaultValueMap.put("", defaultLocaleValue);
} else {
final String valueStr = localeBundle.getString(keyName);
if (!defaultLocaleValue.equals(valueStr)) {
final String localeStr = locale.toString();
defaultValueMap.put(localeStr, localeBundle.getString(keyName));
}
}
}
returnValue = defaultValueMap;
returnMap.put("isDefault", true);
} else {
returnValue = bundleMap;
returnMap.put("isDefault", false);
}
returnMap.put("key", key);
} else if (theSetting == null) {
final String errorStr = "readSettingAsString request for unknown key: " + key;
LOGGER.warn(errorStr);
pwmRequest.outputJsonResult(RestResultBean.fromError(new ErrorInformation(PwmError.ERROR_UNKNOWN, errorStr)));
return ProcessStatus.Halt;
} else {
final String profile = theSetting.getCategory().hasProfiles() ? pwmRequest.readParameterAsString("profile") : null;
switch(theSetting.getSyntax()) {
case PASSWORD:
returnValue = Collections.singletonMap("isDefault", storedConfig.isDefaultValue(theSetting, profile));
break;
case X509CERT:
returnValue = ((X509CertificateValue) storedConfig.readSetting(theSetting, profile)).toInfoMap(true);
break;
case PRIVATE_KEY:
returnValue = ((PrivateKeyValue) storedConfig.readSetting(theSetting, profile)).toInfoMap(true);
break;
case ACTION:
returnValue = ((ActionValue) storedConfig.readSetting(theSetting, profile)).toInfoMap();
break;
case REMOTE_WEB_SERVICE:
returnValue = ((RemoteWebServiceValue) storedConfig.readSetting(theSetting, profile)).toInfoMap();
break;
case FILE:
returnValue = ((FileValue) storedConfig.readSetting(theSetting, profile)).toInfoMap();
break;
default:
returnValue = storedConfig.readSetting(theSetting, profile).toNativeObject();
}
returnMap.put("isDefault", storedConfig.isDefaultValue(theSetting, profile));
if (theSetting.getSyntax() == PwmSettingSyntax.SELECT) {
returnMap.put("options", theSetting.getOptions());
}
{
final ValueMetaData settingMetaData = storedConfig.readSettingMetadata(theSetting, profile);
if (settingMetaData != null) {
if (settingMetaData.getModifyDate() != null) {
returnMap.put("modifyTime", settingMetaData.getModifyDate());
}
if (settingMetaData.getUserIdentity() != null) {
returnMap.put("modifyUser", settingMetaData.getUserIdentity());
}
}
}
returnMap.put("key", key);
returnMap.put("category", theSetting.getCategory().toString());
returnMap.put("syntax", theSetting.getSyntax().toString());
}
returnMap.put("value", returnValue);
pwmRequest.outputJsonResult(RestResultBean.withData(returnMap));
return ProcessStatus.Halt;
}
use of password.pwm.http.bean.ConfigManagerBean in project pwm by pwm-project.
the class ConfigEditorServlet method restReadChangeLog.
@ActionHandler(action = "readChangeLog")
private ProcessStatus restReadChangeLog(final PwmRequest pwmRequest) throws IOException, PwmUnrecoverableException {
final ConfigManagerBean configManagerBean = getBean(pwmRequest);
final Locale locale = pwmRequest.getLocale();
final HashMap<String, Object> returnObj = new HashMap<>();
returnObj.put("html", configManagerBean.getStoredConfiguration().changeLogAsDebugString(locale, true));
returnObj.put("modified", configManagerBean.getStoredConfiguration().isModified());
try {
final ConfigurationChecker configurationChecker = new ConfigurationChecker();
final Configuration config = new Configuration(configManagerBean.getStoredConfiguration());
final List<HealthRecord> healthRecords = configurationChecker.doHealthCheck(config, pwmRequest.getLocale());
final HealthData healthData = new HealthData();
healthData.setOverall("CONFIG");
healthData.setRecords(password.pwm.ws.server.rest.bean.HealthRecord.fromHealthRecords(healthRecords, locale, config));
returnObj.put("health", healthData);
} catch (Exception e) {
LOGGER.error(pwmRequest, "error generating health records: " + e.getMessage());
}
final RestResultBean restResultBean = RestResultBean.withData(returnObj);
pwmRequest.outputJsonResult(restResultBean);
return ProcessStatus.Halt;
}
use of password.pwm.http.bean.ConfigManagerBean in project pwm by pwm-project.
the class ConfigEditorServlet method doUploadFile.
@ActionHandler(action = "uploadFile")
private ProcessStatus doUploadFile(final PwmRequest pwmRequest) throws PwmUnrecoverableException, IOException, ServletException {
final ConfigManagerBean configManagerBean = getBean(pwmRequest);
final String key = pwmRequest.readParameterAsString("key");
final PwmSetting setting = PwmSetting.forKey(key);
final int maxFileSize = Integer.parseInt(pwmRequest.getConfig().readAppProperty(AppProperty.CONFIG_MAX_JDBC_JAR_SIZE));
if (setting == PwmSetting.HTTPS_CERT) {
try {
final PasswordData passwordData = pwmRequest.readParameterAsPassword("password");
final String alias = pwmRequest.readParameterAsString("alias");
final HttpsServerCertificateManager.KeyStoreFormat keyStoreFormat;
try {
keyStoreFormat = HttpsServerCertificateManager.KeyStoreFormat.valueOf(pwmRequest.readParameterAsString("format"));
} catch (IllegalArgumentException e) {
throw new PwmUnrecoverableException(new ErrorInformation(PwmError.ERROR_MISSING_PARAMETER, "unknown format type: " + e.getMessage(), new String[] { "format" }));
}
final Map<String, PwmRequest.FileUploadItem> fileUploads = pwmRequest.readFileUploads(maxFileSize, 1);
final ByteArrayInputStream fileIs = new ByteArrayInputStream(fileUploads.get(PwmConstants.PARAM_FILE_UPLOAD).getContent().getBytes());
HttpsServerCertificateManager.importKey(configManagerBean.getStoredConfiguration(), keyStoreFormat, fileIs, passwordData, alias);
pwmRequest.outputJsonResult(RestResultBean.forSuccessMessage(pwmRequest, Message.Success_Unknown));
return ProcessStatus.Halt;
} catch (PwmException e) {
LOGGER.error(pwmRequest, "error during https certificate upload: " + e.getMessage());
pwmRequest.respondWithError(e.getErrorInformation(), false);
return ProcessStatus.Halt;
}
}
final FileValue fileValue = ConfigEditorServletUtils.readFileUploadToSettingValue(pwmRequest, maxFileSize);
if (fileValue != null) {
final UserIdentity userIdentity = pwmRequest.isAuthenticated() ? pwmRequest.getPwmSession().getUserInfo().getUserIdentity() : null;
configManagerBean.getStoredConfiguration().writeSetting(setting, fileValue, userIdentity);
pwmRequest.outputJsonResult(RestResultBean.forSuccessMessage(pwmRequest, Message.Success_Unknown));
}
return ProcessStatus.Halt;
}
use of password.pwm.http.bean.ConfigManagerBean in project pwm by pwm-project.
the class ConfigEditorServlet method restDatabaseHealthCheck.
@ActionHandler(action = "databaseHealthCheck")
private ProcessStatus restDatabaseHealthCheck(final PwmRequest pwmRequest) throws IOException, PwmUnrecoverableException {
final Instant startTime = Instant.now();
final ConfigManagerBean configManagerBean = getBean(pwmRequest);
LOGGER.debug(pwmRequest, "beginning restDatabaseHealthCheck");
final Configuration config = new Configuration(configManagerBean.getStoredConfiguration());
final List<HealthRecord> healthRecords = DatabaseStatusChecker.checkNewDatabaseStatus(pwmRequest.getPwmApplication(), config);
final HealthData healthData = HealthRecord.asHealthDataBean(config, pwmRequest.getLocale(), healthRecords);
final RestResultBean restResultBean = RestResultBean.withData(healthData);
pwmRequest.outputJsonResult(restResultBean);
LOGGER.debug(pwmRequest, "completed restDatabaseHealthCheck in " + TimeDuration.fromCurrent(startTime).asCompactString());
return ProcessStatus.Halt;
}
use of password.pwm.http.bean.ConfigManagerBean in project pwm by pwm-project.
the class ConfigEditorServlet method restConfigSettingData.
@ActionHandler(action = "settingData")
private ProcessStatus restConfigSettingData(final PwmRequest pwmRequest) throws IOException, PwmUnrecoverableException {
final ConfigManagerBean configManagerBean = getBean(pwmRequest);
final LinkedHashMap<String, Object> returnMap = new LinkedHashMap<>(generateSettingData(pwmRequest.getPwmApplication(), configManagerBean.getStoredConfiguration(), pwmRequest.getSessionLabel(), pwmRequest.getLocale()));
if (pwmRequest.getPwmApplication().getApplicationMode() == PwmApplicationMode.CONFIGURATION && !PwmConstants.TRIAL_MODE) {
if (!configManagerBean.isConfigUnlockedWarningShown()) {
returnMap.put("configUnlocked", true);
configManagerBean.setConfigUnlockedWarningShown(true);
}
}
final RestResultBean restResultBean = RestResultBean.withData(new LinkedHashMap<>(returnMap));
pwmRequest.outputJsonResult(restResultBean);
return ProcessStatus.Halt;
}
Aggregations