AppProperty.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. /*
  2. * Password Management Servlets (PWM)
  3. * http://www.pwm-project.org
  4. *
  5. * Copyright (c) 2006-2009 Novell, Inc.
  6. * Copyright (c) 2009-2016 The PWM Project
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; either version 2 of the License, or
  11. * (at your option) any later version.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU General Public License
  19. * along with this program; if not, write to the Free Software
  20. * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  21. */
  22. package password.pwm;
  23. import java.util.ResourceBundle;
  24. /**
  25. * Definition of available PWM application properties. All {@link AppProperty} entries have a default value that is backed
  26. * by an associated {@code AppProperty.properties} file. Properties can be overridden by the application administrator in
  27. * the configuration using the setting {@link password.pwm.config.PwmSetting#APP_PROPERTY_OVERRIDES}.
  28. */
  29. public enum AppProperty {
  30. APPLICATION_FILELOCK_FILENAME ("application.fileLock.filename"),
  31. APPLICATION_FILELOCK_WAIT_SECONDS ("application.fileLock.waitSeconds"),
  32. APPLICATION_WORDLIST_RETRY_SECONDS ("application.wordlistRetryImportSeconds"),
  33. AUDIT_EVENTS_EMAILFROM ("audit.events.emailFrom"),
  34. AUDIT_EVENTS_EMAILSUBJECT ("audit.events.emailSubject"),
  35. AUDIT_SYSLOG_MAX_MESSAGE_LENGTH ("audit.syslog.message.length"),
  36. AUDIT_SYSLOG_TRUNCATE_MESSAGE ("audit.syslog.message.truncateMsg"),
  37. BACKUP_LOCATION ("backup.path"),
  38. BACKUP_CONFIG_COUNT ("backup.config.count"),
  39. BACKUP_LOCALDB_COUNT ("backup.localdb.count"),
  40. CACHE_ENABLE ("cache.enable"),
  41. CACHE_MEMORY_MAX_ITEMS ("cache.memory.maxItems"),
  42. CACHE_PWRULECHECK_LIFETIME_MS ("cache.pwRuleCheckLifetimeMS"),
  43. CACHE_FORM_UNIQUE_VALUE_LIFETIME_MS ("cache.uniqueFormValueLifetimeMS"),
  44. CLIENT_ACTIVITY_MAX_EPS_RATE ("client.ajax.activityMaxEpsRate"),
  45. CLIENT_AJAX_PW_WAIT_CHECK_SECONDS ("client.ajax.changePasswordWaitCheckSeconds"),
  46. CLIENT_AJAX_TYPING_TIMEOUT ("client.ajax.typingTimeout"),
  47. CLIENT_AJAX_TYPING_WAIT ("client.ajax.typingWait"),
  48. CLIENT_FORM_NONCE_ENABLE ("client.formNonce.enable"),
  49. CLIENT_FORM_NONCE_LENGTH ("client.formNonce.length"),
  50. CLIENT_WARNING_HEADER_SHOW ("client.warningHeader.show"),
  51. CLIENT_PW_SHOW_REVERT_TIMEOUT ("client.pwShowRevertTimeout"),
  52. CLIENT_JS_ENABLE_HTML5DIALOG ("client.js.enableHtml5Dialog"),
  53. CLIENT_JSP_SHOW_ICONS ("client.jsp.showIcons"),
  54. CONFIG_MAX_JDBC_JAR_SIZE ("config.maxJdbcJarSize"),
  55. CONFIG_RELOAD_ON_CHANGE ("config.reloadOnChange"),
  56. CONFIG_MAX_PERSISTENT_LOGIN_SECONDS ("config.maxPersistentLoginSeconds"),
  57. CONFIG_HISTORY_MAX_ITEMS ("config.login.history.maxEvents"),
  58. CONFIG_FILE_SCAN_FREQUENCY ("config.fileScanFrequencyMS"),
  59. CONFIG_NEWUSER_PASSWORD_POLICY_CACHE_MS ("config.newuser.passwordPolicyCacheMS"),
  60. CONFIG_THEME ("config.theme"),
  61. CONFIG_EDITOR_QUERY_FILTER_TEST_LIMIT ("configEditor.queryFilter.testLimit"),
  62. CONFIG_EDITOR_IDLE_TIMEOUT ("configEditor.idleTimeoutSeconds"),
  63. CONFIG_GUIDE_IDLE_TIMEOUT ("configGuide.idleTimeoutSeconds"),
  64. CONFIG_MANAGER_ZIPDEBUG_MAXLOGLINES ("configManager.zipDebug.maxLogLines"),
  65. CONFIG_MANAGER_ZIPDEBUG_MAXLOGSECONDS ("configManager.zipDebug.maxLogSeconds"),
  66. FORM_EMAIL_REGEX ("form.email.regexTest"),
  67. HTTP_RESOURCES_MAX_CACHE_ITEMS ("http.resources.maxCacheItems"),
  68. HTTP_RESOURCES_MAX_CACHE_BYTES ("http.resources.maxCacheBytes"),
  69. HTTP_RESOURCES_EXPIRATION_SECONDS ("http.resources.expirationSeconds"),
  70. HTTP_RESOURCES_ENABLE_GZIP ("http.resources.gzip.enable"),
  71. HTTP_RESOURCES_ENABLE_PATH_NONCE ("http.resources.pathNonceEnable"),
  72. HTTP_RESOURCES_NONCE_PATH_PREFIX ("http.resources.pathNoncePrefix"),
  73. HTTP_RESOURCES_WEBJAR_MAPPINGS ("http.resources.webjarMappings"),
  74. HTTP_RESOURCES_ZIP_FILES ("http.resources.zipFiles"),
  75. HTTP_COOKIE_DEFAULT_SECURE_FLAG ("http.cookie.default.secureFlag"),
  76. HTTP_COOKIE_THEME_NAME ("http.cookie.theme.name"),
  77. HTTP_COOKIE_THEME_AGE ("http.cookie.theme.age"),
  78. HTTP_COOKIE_LOCALE_NAME ("http.cookie.locale.name"),
  79. HTTP_COOKIE_AUTHRECORD_NAME ("http.cookie.authRecord.name"),
  80. HTTP_COOKIE_AUTHRECORD_AGE ("http.cookie.authRecord.age"),
  81. HTTP_COOKIE_MAX_READ_LENGTH ("http.cookie.maxReadLength"),
  82. HTTP_COOKIE_CAPTCHA_SKIP_NAME ("http.cookie.captchaSkip.name"),
  83. HTTP_COOKIE_CAPTCHA_SKIP_AGE ("http.cookie.captchaSkip.age"),
  84. HTTP_COOKIE_LOGIN_NAME ("http.cookie.login.name"),
  85. HTTP_BASIC_AUTH_CHARSET ("http.basicAuth.charset"),
  86. HTTP_BODY_MAXREAD_LENGTH ("http.body.maxReadLength"),
  87. HTTP_CLIENT_SOCKET_TIMEOUT_MS ("http.client.socketTimeoutMs"),
  88. HTTP_CLIENT_CONNECT_TIMEOUT_MS ("http.client.connectTimeoutMs"),
  89. HTTP_CLIENT_REQUEST_TIMEOUT_MS ("http.client.requestTimeoutMs"),
  90. HTTP_CLIENT_PROMISCUOUS_WORDLIST_ENABLE ("http.client.promiscuous.wordlist.enable"),
  91. HTTP_ENABLE_GZIP ("http.gzip.enable"),
  92. HTTP_ERRORS_ALLOW_HTML ("http.errors.allowHtml"),
  93. HTTP_HEADER_SERVER ("http.header.server"),
  94. HTTP_HEADER_SEND_CONTENT_LANGUAGE ("http.header.sendContentLanguage"),
  95. HTTP_HEADER_SEND_XAMB ("http.header.sendXAmb"),
  96. HTTP_HEADER_SEND_XINSTANCE ("http.header.sendXInstance"),
  97. HTTP_HEADER_SEND_XNOISE ("http.header.sendXNoise"),
  98. HTTP_HEADER_SEND_XSESSIONID ("http.header.sendXSessionID"),
  99. HTTP_HEADER_SEND_XVERSION ("http.header.sendXVersion"),
  100. HTTP_HEADER_SEND_XCONTENTTYPEOPTIONS ("http.header.sendXContentTypeOptions"),
  101. HTTP_HEADER_SEND_XXSSPROTECTION ("http.header.sendXXSSProtection"),
  102. HTTP_HEADER_NOISE_LENGTH ("http.header.noise.length"),
  103. HTTP_HEADER_CSP_NONCE_BYTES ("http.header.csp.nonce.bytes"),
  104. HTTP_PARAM_NAME_FORWARD_URL ("http.parameter.forward"),
  105. HTTP_PARAM_NAME_LOGOUT_URL ("http.parameter.logout"),
  106. HTTP_PARAM_NAME_THEME ("http.parameter.theme"),
  107. HTTP_PARAM_NAME_LOCALE ("http.parameter.locale"),
  108. HTTP_PARAM_NAME_PASSWORD_EXPIRED ("http.parameter.passwordExpired"),
  109. HTTP_PARAM_NAME_SSO_OVERRIDE ("http.parameter.ssoOverride"),
  110. HTTP_PARAM_MAX_READ_LENGTH ("http.parameter.maxReadLength"),
  111. HTTP_PARAM_SESSION_VERIFICATION ("http.parameter.sessionVerification"),
  112. HTTP_PARAM_OAUTH_ACCESS_TOKEN ("http.parameter.oauth.accessToken"),
  113. HTTP_PARAM_OAUTH_ATTRIBUTES ("http.parameter.oauth.attributes"),
  114. HTTP_PARAM_OAUTH_CLIENT_ID ("http.parameter.oauth.clientID"),
  115. HTTP_PARAM_OAUTH_CODE ("http.parameter.oauth.code"),
  116. HTTP_PARAM_OAUTH_EXPIRES ("http.parameter.oauth.expires"),
  117. HTTP_PARAM_OAUTH_RESPONSE_TYPE ("http.parameter.oauth.responseType"),
  118. HTTP_PARAM_OAUTH_REDIRECT_URI ("http.parameter.oauth.redirectUri"),
  119. HTTP_PARAM_OAUTH_REFRESH_TOKEN ("http.parameter.oauth.refreshToken"),
  120. HTTP_PARAM_OAUTH_STATE ("http.parameter.oauth.state"),
  121. HTTP_PARAM_OAUTH_GRANT_TYPE ("http.parameter.oauth.grantType"),
  122. HTTP_DOWNLOAD_BUFFER_SIZE ("http.download.buffer.size"),
  123. HTTP_SESSION_RECYCLE_AT_AUTH ("http.session.recycleAtAuth"),
  124. HTTP_SESSION_VALIDATION_KEY_LENGTH ("http.session.validationKeyLength"),
  125. LOCALDB_AGGRESSIVE_COMPACT_ENABLED ("localdb.aggressiveCompact.enabled"),
  126. LOCALDB_COMPRESSION_ENABLED ("localdb.compression.enabled"),
  127. LOCALDB_DECOMPRESSION_ENABLED ("localdb.decompression.enabled"),
  128. LOCALDB_COMPRESSION_MINSIZE ("localdb.compression.minSize"),
  129. LOCALDB_IMPLEMENTATION ("localdb.implementation"),
  130. LOCALDB_INIT_STRING ("localdb.initParameters"),
  131. LOCALDB_LOGWRITER_BUFFER_SIZE ("localdb.logWriter.bufferSize"),
  132. LOCALDB_LOGWRITER_MAX_BUFFER_WAIT_MS ("localdb.logWriter.maxBufferWaitMs"),
  133. LOCALDB_LOGWRITER_MAX_TRIM_SIZE ("localdb.logWriter.maxTrimSize"),
  134. MACRO_RANDOM_CHAR_MAX_LENGTH ("macro.randomChar.maxLength"),
  135. MACRO_LDAP_ATTR_CHAR_MAX_LENGTH ("macro.ldapAttr.maxLength"),
  136. NAAF_ID ("naaf.id"),
  137. NAAF_SECRET ("naaf.secret"),
  138. NAAF_SALT_LENGTH ("naaf.salt.length"),
  139. /** Time intruder records exist in the intruder table before being deleted. */
  140. INTRUDER_RETENTION_TIME_MS ("intruder.retentionTimeMS"),
  141. /** How often to cleanup the intruder table. */
  142. INTRUDER_CLEANUP_FREQUENCY_MS ("intruder.cleanupFrequencyMS"),
  143. INTRUDER_MIN_DELAY_PENALTY_MS ("intruder.minimumDelayPenaltyMS"),
  144. INTRUDER_MAX_DELAY_PENALTY_MS ("intruder.maximumDelayPenaltyMS"),
  145. INTRUDER_DELAY_PER_COUNT_MS ("intruder.delayPerCountMS"),
  146. INTRUDER_DELAY_MAX_JITTER_MS ("intruder.delayMaxJitterMS"),
  147. HEALTHCHECK_NOMINAL_CHECK_INTERVAL ("healthCheck.nominalCheckIntervalSeconds"),
  148. HEALTHCHECK_MIN_CHECK_INTERVAL ("healthCheck.minimumCheckIntervalSeconds"),
  149. HEALTHCHECK_MAX_RECORD_AGE ("healthCheck.maximumRecordAgeSeconds"),
  150. HEALTHCHECK_MAX_FORCE_WAIT ("healthCheck.maximumForceCheckWaitSeconds"),
  151. HEALTH_CERTIFICATE_WARN_SECONDS ("health.certificate.warnSeconds"),
  152. HEALTH_LDAP_CAUTION_DURATION_MS ("health.ldap.cautionDurationMS"),
  153. HEALTH_JAVA_MAX_THREADS ("health.java.maxThreads"),
  154. HEALTH_JAVA_MIN_HEAP_BYTES ("health.java.minHeapBytes"),
  155. HELPDESK_TOKEN_MAX_AGE ("helpdesk.token.maxAgeSeconds"),
  156. HELPDESK_TOKEN_VALUE ("helpdesk.token.value"),
  157. HELPDESK_VERIFICATION_INVALID_DELAY_MS ("helpdesk.verification.invalid.delayMs"),
  158. HELPDESK_VERIFICATION_TIMEOUT_SECONDS ("helpdesk.verification.timeoutSeconds"),
  159. LDAP_CHAI_SETTINGS ("ldap.chaiSettings"),
  160. LDAP_EXTENSIONS_NMAS_ENABLE ("ldap.extensions.nmas.enable"),
  161. LDAP_CONNECTION_TIMEOUT ("ldap.connection.timeoutMS"),
  162. LDAP_PROFILE_RETRY_DELAY ("ldap.profile.retryDelayMS"),
  163. LDAP_PROMISCUOUS_ENABLE ("ldap.promiscuousEnable"),
  164. LDAP_PASSWORD_REPLICA_CHECK_INIT_DELAY_MS ("ldap.password.replicaCheck.initialDelayMS"),
  165. LDAP_PASSWORD_REPLICA_CHECK_CYCLE_DELAY_MS ("ldap.password.replicaCheck.cycleDelayMS"),
  166. LDAP_PASSWORD_CHANGE_SELF_ENABLE ("ldap.password.change.self.enable"),
  167. LDAP_PASSWORD_CHANGE_HELPDESK_ENABLE ("ldap.password.change.helpdesk.enable"),
  168. LDAP_GUID_PATTERN ("ldap.guid.pattern"),
  169. LDAP_BROWSER_MAX_ENTRIES ("ldap.browser.maxEntries"),
  170. LDAP_SEARCH_PAGING_ENABLE ("ldap.search.paging.enable"),
  171. LDAP_SEARCH_PAGING_SIZE ("ldap.search.paging.size"),
  172. LOGGING_PATTERN ("logging.pattern"),
  173. LOGGING_FILE_MAX_SIZE ("logging.file.maxSize"),
  174. LOGGING_FILE_MAX_ROLLOVER ("logging.file.maxRollover"),
  175. LOGGING_FILE_PATH ("logging.file.path"),
  176. LOGGING_DEV_OUTPUT ("logging.devOutput.enable"),
  177. NEWUSER_LDAP_USE_TEMP_PW ("newUser.ldap.useTempPassword"),
  178. NEWUSER_TOKEN_ALLOW_PLAIN_PW ("newUser.token.allowPlainPassword"),
  179. NMAS_THREADS_MAX_COUNT ("nmas.threads.maxCount"),
  180. NMAS_THREADS_MIN_SECONDS ("nmas.threads.minSeconds"),
  181. NMAS_THREADS_MAX_SECONDS ("nmas.threads.maxSeconds"),
  182. NMAS_THREADS_WATCHDOG_FREQUENCY ("nmas.threads.watchdogFrequencyMs"),
  183. NMAS_IGNORE_NMASCR_DURING_FORCECHECK ("nmas.ignoreNmasCrDuringForceSetupCheck"),
  184. NMAS_USE_LOCAL_SASL_FACTORY ("nmas.useLocalSaslFactory"),
  185. NMAS_FORCE_SASL_FACTORY_REGISTRATION ("nmas.forceSaslFactoryRegistration"),
  186. OAUTH_ID_REQUEST_TYPE ("oauth.id.requestType"),
  187. OAUTH_ID_ACCESS_GRANT_TYPE ("oauth.id.accessGrantType"),
  188. OAUTH_ID_REFRESH_GRANT_TYPE ("oauth.id.refreshGrantType"),
  189. OAUTH_ENABLE_TOKEN_REFRESH ("oauth.enableTokenRefresh"),
  190. OAUTH_RETURN_URL_OVERRIDE ("oauth.returnUrlOverride"),
  191. /* Allows one older TOTP token - compensate for clock out of sync */
  192. TOTP_PAST_INTERVALS ("otp.totp.pastIntervals"),
  193. /* Allows one newer TOTP token - compensate for clock out of sync */
  194. TOTP_FUTURE_INTERVALS ("otp.totp.futureIntervals"),
  195. TOTP_INTERVAL ("otp.totp.intervalSeconds"),
  196. OTP_TOKEN_LENGTH ("otp.token.length"),
  197. OTP_SALT_CHARLENGTH ("otp.salt.charLength"),
  198. OTP_RECOVERY_TOKEN_MACRO ("otp.recovery.macro"),
  199. OTP_RECOVERY_HASH_COUNT ("otp.recoveryHash.iterations"),
  200. OTP_RECOVERY_HASH_METHOD ("otp.recoveryHash.method"),
  201. OTP_QR_IMAGE_HEIGHT ("otp.qrImage.height"),
  202. OTP_QR_IMAGE_WIDTH ("otp.qrImage.width"),
  203. OTP_ENCRYPTION_ALG ("otp.encryptionAlg"),
  204. PASSWORD_RANDOMGEN_MAX_ATTEMPTS ("password.randomGenerator.maxAttempts"),
  205. PASSWORD_RANDOMGEN_MAX_LENGTH ("password.randomGenerator.maxLength"),
  206. PASSWORD_RANDOMGEN_JITTER_COUNT ("password.randomGenerator.jitter.count"),
  207. PEOPLESEARCH_DISPLAYNAME_USEALLMACROS ("peoplesearch.displayName.enableAllMacros"),
  208. PEOPLESEARCH_MAX_VALUE_VERIFYUSERDN ("peoplesearch.values.verifyUserDN"),
  209. PEOPLESEARCH_VALUE_MAXCOUNT ("peoplesearch.values.maxCount"),
  210. QUEUE_EMAIL_RETRY_TIMEOUT_MS ("queue.email.retryTimeoutMs"),
  211. QUEUE_EMAIL_MAX_AGE_MS ("queue.email.maxAgeMs"),
  212. QUEUE_EMAIL_MAX_COUNT ("queue.email.maxCount"),
  213. QUEUE_SMS_RETRY_TIMEOUT_MS ("queue.sms.retryTimeoutMs"),
  214. QUEUE_SMS_MAX_AGE_MS ("queue.sms.maxAgeMs"),
  215. QUEUE_SMS_MAX_COUNT ("queue.sms.maxCount"),
  216. QUEUE_SYSLOG_RETRY_TIMEOUT_MS ("queue.syslog.retryTimeoutMs"),
  217. QUEUE_SYSLOG_MAX_AGE_MS ("queue.syslog.maxAgeMs"),
  218. QUEUE_SYSLOG_MAX_COUNT ("queue.syslog.maxCount"),
  219. QUEUE_MAX_CLOSE_TIMEOUT_MS ("queue.maxCloseTimeoutMs"),
  220. RECAPTCHA_CLIENT_JS_URL ("recaptcha.clientJsUrl"),
  221. RECAPTCHA_CLIENT_IFRAME_URL ("recaptcha.clientIframeUrl"),
  222. RECAPTCHA_VALIDATE_URL ("recaptcha.validateUrl"),
  223. REPORTING_LDAP_SEARCH_TIMEOUT ("reporting.ldap.searchTimeoutMs"),
  224. SECURITY_STRIP_INLINE_JAVASCRIPT ("security.html.stripInlineJavascript"),
  225. SECURITY_HTTP_STRIP_HEADER_REGEX ("security.http.stripHeaderRegex"),
  226. SECURITY_HTTP_PROMISCUOUS_ENABLE ("security.http.promiscuousEnable"),
  227. SECURITY_HTTPSSERVER_SELF_FUTURESECONDS ("security.httpsServer.selfCert.futureSeconds"),
  228. SECURITY_HTTPSSERVER_SELF_ALG ("security.httpsServer.selfCert.alg"),
  229. SECURITY_HTTPSSERVER_SELF_KEY_SIZE ("security.httpsServer.selfCert.keySize"),
  230. SECURITY_RESPONSES_HASH_ITERATIONS ("security.responses.hashIterations"),
  231. SECURITY_INPUT_TRIM ("security.input.trim"),
  232. SECURITY_INPUT_PASSWORD_TRIM ("security.input.password.trim"),
  233. SECURITY_INPUT_THEME_MATCH_REGEX ("security.input.themeMatchRegex"),
  234. SECURITY_WS_REST_CLIENT_KEY_LENGTH ("security.ws.rest.clientKeyLength"),
  235. SECURITY_WS_REST_SERVER_SECRET_HEADER ("security.ws.rest.server.secretKeyHeader"),
  236. SECURITY_SHAREDHISTORY_HASH_ITERATIONS ("security.sharedHistory.hashIterations"),
  237. SECURITY_SHAREDHISTORY_HASH_NAME ("security.sharedHistory.hashName"),
  238. SECURITY_SHAREDHISTORY_CASE_INSENSITIVE ("security.sharedHistory.caseInsensitive"),
  239. SECURITY_SHAREDHISTORY_SALT_LENGTH ("security.sharedHistory.saltLength"),
  240. SECURITY_CERTIFICATES_VALIDATE_TIMESTAMPS ("security.certs.validateTimestamps"),
  241. SECURITY_LDAP_BASEDN_RESOLVE_CANONICAL_DN ("security.ldap.resolveCanonicalDN"),
  242. SECURITY_LDAP_BASEDN_CANONICAL_CACHE_SECONDS ("security.ldap.canonicalCacheSeconds"),
  243. SECURITY_CONFIG_MIN_SECURITY_KEY_LENGTH ("security.config.minSecurityKeyLength"),
  244. SECURITY_DEFAULT_EPHEMERAL_BLOCK_ALG ("security.defaultEphemeralBlockAlg"),
  245. SECURITY_DEFAULT_EPHEMERAL_HASH_ALG ("security.defaultEphemeralHashAlg"),
  246. SEEDLIST_BUILTIN_PATH ("seedlist.builtin.path"),
  247. SMTP_SUBJECT_ENCODING_CHARSET ("smtp.subjectEncodingCharset"),
  248. TOKEN_REMOVAL_DELAY_MS ("token.removalDelayMS"),
  249. TOKEN_PURGE_BATCH_SIZE ("token.purgeBatchSize"),
  250. TOKEN_MAX_UNIQUE_CREATE_ATTEMPTS ("token.maxUniqueCreateAttempts"),
  251. /** Regular expression to be used for matching URLs to be shortened by the URL Shortening Service Class. */
  252. URL_SHORTNER_URL_REGEX ("urlshortener.url.regex"),
  253. WORDLIST_BUILTIN_PATH ("wordlist.builtin.path"),
  254. WS_REST_CLIENT_PWRULE_HALTONERROR ("ws.restClient.pwRule.haltOnError"),
  255. ALLOW_MACRO_IN_REGEX_SETTING ("password.policy.allowMacroInRegexSetting"),
  256. ;
  257. public static final String VALUE_SEPARATOR = ";;;";
  258. private static final String DESCRIPTION_SUFFIX = "_description";
  259. private final String key;
  260. private String defaultValue;
  261. AppProperty(String key) {
  262. this.key = key;
  263. }
  264. public String getKey() {
  265. return key;
  266. }
  267. public static AppProperty forKey(final String key) {
  268. for (final AppProperty appProperty : AppProperty.values()) {
  269. if (appProperty.getKey().equals(key)) {
  270. return appProperty;
  271. }
  272. }
  273. return null;
  274. }
  275. public String getDefaultValue() {
  276. if (defaultValue == null) {
  277. defaultValue = readAppPropertiesBundle(this.getKey());
  278. }
  279. return defaultValue;
  280. }
  281. public String getDescription() {
  282. return readAppPropertiesBundle(this.getKey() + DESCRIPTION_SUFFIX);
  283. }
  284. private static String readAppPropertiesBundle(final String key) {
  285. return ResourceBundle.getBundle(AppProperty.class.getName()).getString(key);
  286. }
  287. }