AppProperty.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. /*
  2. * Password Management Servlets (PWM)
  3. * http://www.pwm-project.org
  4. *
  5. * Copyright (c) 2006-2009 Novell, Inc.
  6. * Copyright (c) 2009-2018 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. {
  31. ACTIVATE_USER_TOKEN_AUTO_SELECT_DEST ( "activateUser.token.autoSelectSingleDestination" ),
  32. APPLICATION_FILELOCK_FILENAME ( "application.fileLock.filename" ),
  33. APPLICATION_FILELOCK_WAIT_SECONDS ( "application.fileLock.waitSeconds" ),
  34. APPLICATION_WORDLIST_RETRY_SECONDS ( "application.wordlistRetryImportSeconds" ),
  35. AUDIT_EVENTS_EMAILFROM ( "audit.events.emailFrom" ),
  36. AUDIT_EVENTS_EMAILSUBJECT ( "audit.events.emailSubject" ),
  37. AUDIT_EVENTS_LOCALDB_MAX_BULK_REMOVALS ( "audit.events.localdb.maxBulkRemovals" ),
  38. AUDIT_SYSLOG_CEF_EXTENSIONS ( "audit.syslog.cef.extensions" ),
  39. AUDIT_SYSLOG_CEF_HEADER_PRODUCT ( "audit.syslog.cef.header.product" ),
  40. AUDIT_SYSLOG_CEF_HEADER_SEVERITY ( "audit.syslog.cef.header.severity" ),
  41. AUDIT_SYSLOG_CEF_HEADER_VENDOR ( "audit.syslog.cef.header.vendor" ),
  42. AUDIT_SYSLOG_MAX_MESSAGE_LENGTH ( "audit.syslog.message.length" ),
  43. AUDIT_SYSLOG_TRUNCATE_MESSAGE ( "audit.syslog.message.truncateMsg" ),
  44. BACKUP_LOCATION ( "backup.path" ),
  45. BACKUP_CONFIG_COUNT ( "backup.config.count" ),
  46. BACKUP_LOCALDB_COUNT ( "backup.localdb.count" ),
  47. CACHE_ENABLE ( "cache.enable" ),
  48. CACHE_MEMORY_MAX_ITEMS ( "cache.memory.maxItems" ),
  49. CACHE_PWRULECHECK_LIFETIME_MS ( "cache.pwRuleCheckLifetimeMS" ),
  50. CACHE_FORM_UNIQUE_VALUE_LIFETIME_MS ( "cache.uniqueFormValueLifetimeMS" ),
  51. CLIENT_ACTIVITY_MAX_EPS_RATE ( "client.ajax.activityMaxEpsRate" ),
  52. CLIENT_AJAX_PW_WAIT_CHECK_SECONDS ( "client.ajax.changePasswordWaitCheckSeconds" ),
  53. CLIENT_AJAX_TYPING_TIMEOUT ( "client.ajax.typingTimeout" ),
  54. CLIENT_AJAX_TYPING_WAIT ( "client.ajax.typingWait" ),
  55. CLIENT_FORM_NONCE_ENABLE ( "client.formNonce.enable" ),
  56. CLIENT_FORM_NONCE_LENGTH ( "client.formNonce.length" ),
  57. CLIENT_FORM_CLIENT_REGEX_ENABLED ( "client.form.clientRegexEnable" ),
  58. CLIENT_WARNING_HEADER_SHOW ( "client.warningHeader.show" ),
  59. CLIENT_PW_SHOW_REVERT_TIMEOUT ( "client.pwShowRevertTimeout" ),
  60. CLIENT_JS_ENABLE_HTML5DIALOG ( "client.js.enableHtml5Dialog" ),
  61. CLIENT_JSP_SHOW_ICONS ( "client.jsp.showIcons" ),
  62. CONFIG_MAX_JDBC_JAR_SIZE ( "config.maxJdbcJarSize" ),
  63. CONFIG_RELOAD_ON_CHANGE ( "config.reloadOnChange" ),
  64. CONFIG_MAX_PERSISTENT_LOGIN_SECONDS ( "config.maxPersistentLoginSeconds" ),
  65. CONFIG_HISTORY_MAX_ITEMS ( "config.login.history.maxEvents" ),
  66. CONFIG_FILE_SCAN_FREQUENCY ( "config.fileScanFrequencyMS" ),
  67. CONFIG_NEWUSER_PASSWORD_POLICY_CACHE_MS ( "config.newuser.passwordPolicyCacheMS" ),
  68. CONFIG_THEME ( "config.theme" ),
  69. CONFIG_JBCRYPT_PWLIB_ENABLE ( "config.enableJbCryptPwLibrary" ),
  70. CONFIG_EDITOR_BLOCK_OLD_IE ( "configEditor.blockOldIE" ),
  71. CONFIG_EDITOR_QUERY_FILTER_TEST_LIMIT ( "configEditor.queryFilter.testLimit" ),
  72. CONFIG_EDITOR_IDLE_TIMEOUT ( "configEditor.idleTimeoutSeconds" ),
  73. CONFIG_GUIDE_IDLE_TIMEOUT ( "configGuide.idleTimeoutSeconds" ),
  74. CONFIG_MANAGER_ZIPDEBUG_MAXLOGLINES ( "configManager.zipDebug.maxLogLines" ),
  75. CONFIG_MANAGER_ZIPDEBUG_MAXLOGSECONDS ( "configManager.zipDebug.maxLogSeconds" ),
  76. CLUSTER_DB_ENABLE ( "cluster.db.enable" ),
  77. CLUSTER_DB_HEARTBEAT_SECONDS ( "cluster.db.heartbeatSeconds" ),
  78. CLUSTER_DB_NODE_TIMEOUT_SECONDS ( "cluster.db.nodeTimeoutSeconds" ),
  79. CLUSTER_DB_NODE_PURGE_SECONDS ( "cluster.db.nodePurgeSeconds" ),
  80. DB_JDBC_LOAD_STRATEGY ( "db.jdbcLoadStrategy" ),
  81. DB_CONNECTIONS_MAX ( "db.connections.max" ),
  82. DB_CONNECTIONS_TIMEOUT_MS ( "db.connections.timeoutMs" ),
  83. DB_CONNECTIONS_WATCHDOG_FREQUENCY_SECONDS ( "db.connections.watchdogFrequencySeconds" ),
  84. DB_INIT_HALT_ON_INDEX_CREATE_ERROR ( "db.init.haltOnIndexCreateError" ),
  85. DB_SCHEMA_KEY_LENGTH ( "db.schema.keyLength" ),
  86. DOWNLOAD_FILENAME_STATISTICS_CSV ( "download.filename.statistics.csv" ),
  87. DOWNLOAD_FILENAME_USER_REPORT_SUMMARY_CSV ( "download.filename.reportSummary.csv" ),
  88. DOWNLOAD_FILENAME_USER_REPORT_RECORDS_CSV ( "download.filename.reportRecords.csv" ),
  89. DOWNLOAD_FILENAME_AUDIT_RECORDS_CSV ( "download.filename.auditRecords.csv" ),
  90. DOWNLOAD_FILENAME_LDAP_PERMISSION_CSV ( "download.filename.ldapPermission.csv" ),
  91. DOWNLOAD_FILENAME_USER_DEBUG_JSON ( "download.filename.userDebug.json" ),
  92. FORGOTTEN_PASSWORD_TOKEN_AUTO_SELECT_DEST ( "forgottenPassword.token.autoSelectSingleDestination" ),
  93. FORM_EMAIL_REGEX ( "form.email.regexTest" ),
  94. HTTP_RESOURCES_MAX_CACHE_ITEMS ( "http.resources.maxCacheItems" ),
  95. HTTP_RESOURCES_MAX_CACHE_BYTES ( "http.resources.maxCacheBytes" ),
  96. HTTP_RESOURCES_EXPIRATION_SECONDS ( "http.resources.expirationSeconds" ),
  97. HTTP_RESOURCES_ENABLE_GZIP ( "http.resources.gzip.enable" ),
  98. HTTP_RESOURCES_PATH_NONCE_LENGTH ( "http.resources.pathNonce.length" ),
  99. HTTP_RESOURCES_ENABLE_PATH_NONCE ( "http.resources.pathNonceEnable" ),
  100. HTTP_RESOURCES_NONCE_PATH_PREFIX ( "http.resources.pathNoncePrefix" ),
  101. HTTP_RESOURCES_ZIP_FILES ( "http.resources.zipFiles" ),
  102. HTTP_COOKIE_DEFAULT_SECURE_FLAG ( "http.cookie.default.secureFlag" ),
  103. HTTP_COOKIE_THEME_NAME ( "http.cookie.theme.name" ),
  104. HTTP_COOKIE_THEME_AGE ( "http.cookie.theme.age" ),
  105. HTTP_COOKIE_LOCALE_NAME ( "http.cookie.locale.name" ),
  106. HTTP_COOKIE_AUTHRECORD_NAME ( "http.cookie.authRecord.name" ),
  107. HTTP_COOKIE_AUTHRECORD_AGE ( "http.cookie.authRecord.age" ),
  108. HTTP_COOKIE_MAX_READ_LENGTH ( "http.cookie.maxReadLength" ),
  109. HTTP_COOKIE_CAPTCHA_SKIP_NAME ( "http.cookie.captchaSkip.name" ),
  110. HTTP_COOKIE_CAPTCHA_SKIP_AGE ( "http.cookie.captchaSkip.age" ),
  111. HTTP_COOKIE_LOGIN_NAME ( "http.cookie.login.name" ),
  112. HTTP_BASIC_AUTH_CHARSET ( "http.basicAuth.charset" ),
  113. HTTP_BODY_MAXREAD_LENGTH ( "http.body.maxReadLength" ),
  114. HTTP_CLIENT_ALWAYS_LOG_ENTITIES ( "http.client.alwaysLogEntities" ),
  115. HTTP_CLIENT_SOCKET_TIMEOUT_MS ( "http.client.socketTimeoutMs" ),
  116. HTTP_CLIENT_CONNECT_TIMEOUT_MS ( "http.client.connectTimeoutMs" ),
  117. HTTP_CLIENT_REQUEST_TIMEOUT_MS ( "http.client.requestTimeoutMs" ),
  118. HTTP_CLIENT_PROMISCUOUS_WORDLIST_ENABLE ( "http.client.promiscuous.wordlist.enable" ),
  119. HTTP_ENABLE_GZIP ( "http.gzip.enable" ),
  120. HTTP_ERRORS_ALLOW_HTML ( "http.errors.allowHtml" ),
  121. HTTP_HEADER_SERVER ( "http.header.server" ),
  122. HTTP_HEADER_SEND_CONTENT_LANGUAGE ( "http.header.sendContentLanguage" ),
  123. HTTP_HEADER_SEND_XAMB ( "http.header.sendXAmb" ),
  124. HTTP_HEADER_SEND_XINSTANCE ( "http.header.sendXInstance" ),
  125. HTTP_HEADER_SEND_XNOISE ( "http.header.sendXNoise" ),
  126. HTTP_HEADER_SEND_XSESSIONID ( "http.header.sendXSessionID" ),
  127. HTTP_HEADER_SEND_XVERSION ( "http.header.sendXVersion" ),
  128. HTTP_HEADER_SEND_XCONTENTTYPEOPTIONS ( "http.header.sendXContentTypeOptions" ),
  129. HTTP_HEADER_SEND_XXSSPROTECTION ( "http.header.sendXXSSProtection" ),
  130. HTTP_HEADER_NOISE_LENGTH ( "http.header.noise.length" ),
  131. HTTP_HEADER_CSP_NONCE_BYTES ( "http.header.csp.nonce.bytes" ),
  132. HTTP_PARAM_NAME_FORWARD_URL ( "http.parameter.forward" ),
  133. HTTP_PARAM_NAME_LOGOUT_URL ( "http.parameter.logout" ),
  134. HTTP_PARAM_NAME_THEME ( "http.parameter.theme" ),
  135. HTTP_PARAM_NAME_LOCALE ( "http.parameter.locale" ),
  136. HTTP_PARAM_NAME_PASSWORD_EXPIRED ( "http.parameter.passwordExpired" ),
  137. HTTP_PARAM_NAME_SSO_OVERRIDE ( "http.parameter.ssoOverride" ),
  138. HTTP_PARAM_MAX_READ_LENGTH ( "http.parameter.maxReadLength" ),
  139. HTTP_PARAM_SESSION_VERIFICATION ( "http.parameter.sessionVerification" ),
  140. HTTP_PARAM_OAUTH_ACCESS_TOKEN ( "http.parameter.oauth.accessToken" ),
  141. HTTP_PARAM_OAUTH_ATTRIBUTES ( "http.parameter.oauth.attributes" ),
  142. HTTP_PARAM_OAUTH_CLIENT_ID ( "http.parameter.oauth.clientID" ),
  143. HTTP_PARAM_OAUTH_CODE ( "http.parameter.oauth.code" ),
  144. HTTP_PARAM_OAUTH_EXPIRES ( "http.parameter.oauth.expires" ),
  145. HTTP_PARAM_OAUTH_RESPONSE_TYPE ( "http.parameter.oauth.responseType" ),
  146. HTTP_PARAM_OAUTH_REDIRECT_URI ( "http.parameter.oauth.redirectUri" ),
  147. HTTP_PARAM_OAUTH_REFRESH_TOKEN ( "http.parameter.oauth.refreshToken" ),
  148. HTTP_PARAM_OAUTH_STATE ( "http.parameter.oauth.state" ),
  149. HTTP_PARAM_OAUTH_GRANT_TYPE ( "http.parameter.oauth.grantType" ),
  150. HTTP_DOWNLOAD_BUFFER_SIZE ( "http.download.buffer.size" ),
  151. HTTP_SESSION_RECYCLE_AT_AUTH ( "http.session.recycleAtAuth" ),
  152. HTTP_SESSION_VALIDATION_KEY_LENGTH ( "http.session.validationKeyLength" ),
  153. HTTP_SERVLET_ENABLE_POST_REDIRECT_GET ( "http.servlet.enablePostRedirectGet" ),
  154. LOCALDB_AGGRESSIVE_COMPACT_ENABLED ( "localdb.aggressiveCompact.enabled" ),
  155. LOCALDB_IMPLEMENTATION ( "localdb.implementation" ),
  156. LOCALDB_INIT_STRING ( "localdb.initParameters" ),
  157. LOCALDB_LOCATION ( "localdb.location" ),
  158. LOCALDB_LOGWRITER_BUFFER_SIZE ( "localdb.logWriter.bufferSize" ),
  159. LOCALDB_LOGWRITER_MAX_BUFFER_WAIT_MS ( "localdb.logWriter.maxBufferWaitMs" ),
  160. LOCALDB_LOGWRITER_MAX_TRIM_SIZE ( "localdb.logWriter.maxTrimSize" ),
  161. MACRO_RANDOM_CHAR_MAX_LENGTH ( "macro.randomChar.maxLength" ),
  162. MACRO_LDAP_ATTR_CHAR_MAX_LENGTH ( "macro.ldapAttr.maxLength" ),
  163. /** Time intruder records exist in the intruder table before being deleted. */
  164. INTRUDER_RETENTION_TIME_MS ( "intruder.retentionTimeMS" ),
  165. /** How often to cleanup the intruder table. */
  166. INTRUDER_CLEANUP_FREQUENCY_MS ( "intruder.cleanupFrequencyMS" ),
  167. INTRUDER_MIN_DELAY_PENALTY_MS ( "intruder.minimumDelayPenaltyMS" ),
  168. INTRUDER_MAX_DELAY_PENALTY_MS ( "intruder.maximumDelayPenaltyMS" ),
  169. INTRUDER_DELAY_PER_COUNT_MS ( "intruder.delayPerCountMS" ),
  170. INTRUDER_DELAY_MAX_JITTER_MS ( "intruder.delayMaxJitterMS" ),
  171. HEALTHCHECK_ENABLED ( "healthCheck.enabled" ),
  172. HEALTHCHECK_NOMINAL_CHECK_INTERVAL ( "healthCheck.nominalCheckIntervalSeconds" ),
  173. HEALTHCHECK_MIN_CHECK_INTERVAL ( "healthCheck.minimumCheckIntervalSeconds" ),
  174. HEALTHCHECK_MAX_RECORD_AGE ( "healthCheck.maximumRecordAgeSeconds" ),
  175. HEALTHCHECK_MAX_FORCE_WAIT ( "healthCheck.maximumForceCheckWaitSeconds" ),
  176. HEALTH_CERTIFICATE_WARN_SECONDS ( "health.certificate.warnSeconds" ),
  177. HEALTH_LDAP_CAUTION_DURATION_MS ( "health.ldap.cautionDurationMS" ),
  178. HEALTH_JAVA_MAX_THREADS ( "health.java.maxThreads" ),
  179. HEALTH_JAVA_MIN_HEAP_BYTES ( "health.java.minHeapBytes" ),
  180. HELPDESK_TOKEN_MAX_AGE ( "helpdesk.token.maxAgeSeconds" ),
  181. HELPDESK_TOKEN_VALUE ( "helpdesk.token.value" ),
  182. HELPDESK_VERIFICATION_INVALID_DELAY_MS ( "helpdesk.verification.invalid.delayMs" ),
  183. HELPDESK_VERIFICATION_TIMEOUT_SECONDS ( "helpdesk.verification.timeoutSeconds" ),
  184. LDAP_RESOLVE_CANONICAL_DN ( "ldap.resolveCanonicalDN" ),
  185. LDAP_CACHE_CANONICAL_ENABLE ( "ldap.cache.canonical.enable" ),
  186. LDAP_CACHE_CANONICAL_SECONDS ( "ldap.cache.canonical.seconds" ),
  187. LDAP_CACHE_USER_GUID_ENABLE ( "ldap.cache.userGuid.enable" ),
  188. LDAP_CACHE_USER_GUID_SECONDS ( "ldap.cache.userGuid.seconds" ),
  189. LDAP_CHAI_SETTINGS ( "ldap.chaiSettings" ),
  190. LDAP_PROXY_CONNECTION_PER_PROFILE ( "ldap.proxy.connectionsPerProfile" ),
  191. LDAP_PROXY_MAX_CONNECTIONS ( "ldap.proxy.maxConnections" ),
  192. LDAP_PROXY_USE_THREAD_LOCAL ( "ldap.proxy.useThreadLocal" ),
  193. LDAP_EXTENSIONS_NMAS_ENABLE ( "ldap.extensions.nmas.enable" ),
  194. LDAP_CONNECTION_TIMEOUT ( "ldap.connection.timeoutMS" ),
  195. LDAP_PROFILE_RETRY_DELAY ( "ldap.profile.retryDelayMS" ),
  196. LDAP_PROMISCUOUS_ENABLE ( "ldap.promiscuousEnable" ),
  197. LDAP_PASSWORD_REPLICA_CHECK_INIT_DELAY_MS ( "ldap.password.replicaCheck.initialDelayMS" ),
  198. LDAP_PASSWORD_REPLICA_CHECK_CYCLE_DELAY_MS ( "ldap.password.replicaCheck.cycleDelayMS" ),
  199. LDAP_PASSWORD_CHANGE_SELF_ENABLE ( "ldap.password.change.self.enable" ),
  200. LDAP_PASSWORD_CHANGE_HELPDESK_ENABLE ( "ldap.password.change.helpdesk.enable" ),
  201. LDAP_GUID_PATTERN ( "ldap.guid.pattern" ),
  202. LDAP_BROWSER_MAX_ENTRIES ( "ldap.browser.maxEntries" ),
  203. LDAP_SEARCH_PAGING_ENABLE ( "ldap.search.paging.enable" ),
  204. LDAP_SEARCH_PAGING_SIZE ( "ldap.search.paging.size" ),
  205. LDAP_SEARCH_PARALLEL_ENABLE ( "ldap.search.parallel.enable" ),
  206. LDAP_SEARCH_PARALLEL_FACTOR ( "ldap.search.parallel.factor" ),
  207. LDAP_SEARCH_PARALLEL_THREAD_MAX ( "ldap.search.parallel.threadMax" ),
  208. LDAP_ORACLE_POST_TEMPPW_USE_CURRENT_TIME ( "ldap.oracle.postTempPasswordUseCurrentTime" ),
  209. LOGGING_PATTERN ( "logging.pattern" ),
  210. LOGGING_FILE_MAX_SIZE ( "logging.file.maxSize" ),
  211. LOGGING_FILE_MAX_ROLLOVER ( "logging.file.maxRollover" ),
  212. LOGGING_FILE_PATH ( "logging.file.path" ),
  213. LOGGING_DEV_OUTPUT ( "logging.devOutput.enable" ),
  214. NEWUSER_LDAP_USE_TEMP_PW ( "newUser.ldap.useTempPassword" ),
  215. NEWUSER_TOKEN_ALLOW_PLAIN_PW ( "newUser.token.allowPlainPassword" ),
  216. NMAS_THREADS_MAX_COUNT ( "nmas.threads.maxCount" ),
  217. NMAS_THREADS_MIN_SECONDS ( "nmas.threads.minSeconds" ),
  218. NMAS_THREADS_MAX_SECONDS ( "nmas.threads.maxSeconds" ),
  219. NMAS_THREADS_WATCHDOG_FREQUENCY ( "nmas.threads.watchdogFrequencyMs" ),
  220. NMAS_THREADS_WATCHDOG_DEBUG ( "nmas.threads.watchdogDebug" ),
  221. NMAS_IGNORE_NMASCR_DURING_FORCECHECK ( "nmas.ignoreNmasCrDuringForceSetupCheck" ),
  222. NMAS_USE_LOCAL_SASL_FACTORY ( "nmas.useLocalSaslFactory" ),
  223. NMAS_FORCE_SASL_FACTORY_REGISTRATION ( "nmas.forceSaslFactoryRegistration" ),
  224. OAUTH_ID_REQUEST_TYPE ( "oauth.id.requestType" ),
  225. OAUTH_ID_ACCESS_GRANT_TYPE ( "oauth.id.accessGrantType" ),
  226. OAUTH_ID_REFRESH_GRANT_TYPE ( "oauth.id.refreshGrantType" ),
  227. OAUTH_ENABLE_TOKEN_REFRESH ( "oauth.enableTokenRefresh" ),
  228. OAUTH_RETURN_URL_OVERRIDE ( "oauth.returnUrlOverride" ),
  229. /* Allows one older TOTP token - compensate for clock out of sync */
  230. TOTP_PAST_INTERVALS ( "otp.totp.pastIntervals" ),
  231. /* Allows one newer TOTP token - compensate for clock out of sync */
  232. TOTP_FUTURE_INTERVALS ( "otp.totp.futureIntervals" ),
  233. TOTP_INTERVAL ( "otp.totp.intervalSeconds" ),
  234. OTP_TOKEN_LENGTH ( "otp.token.length" ),
  235. OTP_SALT_CHARLENGTH ( "otp.salt.charLength" ),
  236. OTP_RECOVERY_TOKEN_MACRO ( "otp.recovery.macro" ),
  237. OTP_RECOVERY_HASH_COUNT ( "otp.recoveryHash.iterations" ),
  238. OTP_RECOVERY_HASH_METHOD ( "otp.recoveryHash.method" ),
  239. OTP_QR_IMAGE_HEIGHT ( "otp.qrImage.height" ),
  240. OTP_QR_IMAGE_WIDTH ( "otp.qrImage.width" ),
  241. OTP_ENCRYPTION_ALG ( "otp.encryptionAlg" ),
  242. PASSWORD_RANDOMGEN_MAX_ATTEMPTS ( "password.randomGenerator.maxAttempts" ),
  243. PASSWORD_RANDOMGEN_MAX_LENGTH ( "password.randomGenerator.maxLength" ),
  244. PASSWORD_RANDOMGEN_JITTER_COUNT ( "password.randomGenerator.jitter.count" ),
  245. /* Strength thresholds, introduced by the addition of the zxcvbn strength meter library (since it has 5 levels) */
  246. PASSWORD_STRENGTH_THRESHOLD_VERY_STRONG ( "password.strength.threshold.veryStrong" ),
  247. PASSWORD_STRENGTH_THRESHOLD_STRONG ( "password.strength.threshold.strong" ),
  248. PASSWORD_STRENGTH_THRESHOLD_GOOD ( "password.strength.threshold.good" ),
  249. PASSWORD_STRENGTH_THRESHOLD_WEAK ( "password.strength.threshold.weak" ),
  250. PASSWORD_STRENGTH_THRESHOLD_VERY_WEAK ( "password.strength.threshold.veryWeak" ),
  251. PWNOTIFY_BATCH_COUNT ( "pwNotify.batch.count" ),
  252. PWNOTIFY_BATCH_DELAY_TIME_MULTIPLIER ( "pwNotify.batch.delayTimeMultiplier" ),
  253. PWNOTIFY_MAX_LDAP_SEARCH_SIZE ( "pwNotify.maxLdapSearchSize" ),
  254. PWNOTIFY_MAX_SKIP_RERUN_WINDOW_SECONDS ( "pwNotify.maxSkipRerunWindowSeconds" ),
  255. PEOPLESEARCH_MAX_VALUE_VERIFYUSERDN ( "peoplesearch.values.verifyUserDN" ),
  256. PEOPLESEARCH_VALUE_MAXCOUNT ( "peoplesearch.values.maxCount" ),
  257. PEOPLESEARCH_VIEW_DETAIL_LINKS ( "peoplesearch.view.detail.links" ),
  258. PEOPLESEARCH_ORGCHART_ENABLE_CHILD_COUNT ( "peoplesearch.orgChart.enableChildCount" ),
  259. PEOPLESEARCH_ORGCHART_MAX_PARENTS ( "peoplesearch.orgChart.maxParents" ),
  260. QUEUE_EMAIL_RETRY_TIMEOUT_MS ( "queue.email.retryTimeoutMs" ),
  261. QUEUE_EMAIL_MAX_COUNT ( "queue.email.maxCount" ),
  262. QUEUE_EMAIL_MAX_THREADS ( "queue.email.maxThreads" ),
  263. QUEUE_SMS_RETRY_TIMEOUT_MS ( "queue.sms.retryTimeoutMs" ),
  264. QUEUE_SMS_MAX_COUNT ( "queue.sms.maxCount" ),
  265. QUEUE_SYSLOG_RETRY_TIMEOUT_MS ( "queue.syslog.retryTimeoutMs" ),
  266. QUEUE_SYSLOG_MAX_AGE_MS ( "queue.syslog.maxAgeMs" ),
  267. QUEUE_SYSLOG_MAX_COUNT ( "queue.syslog.maxCount" ),
  268. RECAPTCHA_CLIENT_JS_URL ( "recaptcha.clientJsUrl" ),
  269. RECAPTCHA_CLIENT_IFRAME_URL ( "recaptcha.clientIframeUrl" ),
  270. RECAPTCHA_VALIDATE_URL ( "recaptcha.validateUrl" ),
  271. REPORTING_LDAP_SEARCH_TIMEOUT ( "reporting.ldap.searchTimeoutMs" ),
  272. REPORTING_LDAP_SEARCH_THREADS ( "reporting.ldap.searchThreads" ),
  273. SECURITY_STRIP_INLINE_JAVASCRIPT ( "security.html.stripInlineJavascript" ),
  274. SECURITY_HTTP_FORCE_REQUEST_SEQUENCING ( "security.http.forceRequestSequencing" ),
  275. SECURITY_HTTP_STRIP_HEADER_REGEX ( "security.http.stripHeaderRegex" ),
  276. SECURITY_HTTP_PERFORM_CSRF_HEADER_CHECKS ( "security.http.performCsrfHeaderChecks" ),
  277. SECURITY_HTTP_PROMISCUOUS_ENABLE ( "security.http.promiscuousEnable" ),
  278. SECURITY_HTTP_CONFIG_CSP_HEADER ( "security.http.config.cspHeader" ),
  279. SECURITY_HTTPSSERVER_SELF_FUTURESECONDS ( "security.httpsServer.selfCert.futureSeconds" ),
  280. SECURITY_HTTPSSERVER_SELF_ALG ( "security.httpsServer.selfCert.alg" ),
  281. SECURITY_HTTPSSERVER_SELF_KEY_SIZE ( "security.httpsServer.selfCert.keySize" ),
  282. SECURITY_LOGIN_HIDDEN_ERROR_TYPES ( "security.login.hiddenErrorTypes" ),
  283. SECURITY_RESPONSES_HASH_ITERATIONS ( "security.responses.hashIterations" ),
  284. SECURITY_INPUT_TRIM ( "security.input.trim" ),
  285. SECURITY_INPUT_PASSWORD_TRIM ( "security.input.password.trim" ),
  286. SECURITY_INPUT_THEME_MATCH_REGEX ( "security.input.themeMatchRegex" ),
  287. SECURITY_WS_REST_SERVER_SECRET_HEADER ( "security.ws.rest.server.secretKeyHeader" ),
  288. SECURITY_SHAREDHISTORY_HASH_ITERATIONS ( "security.sharedHistory.hashIterations" ),
  289. SECURITY_SHAREDHISTORY_HASH_NAME ( "security.sharedHistory.hashName" ),
  290. SECURITY_SHAREDHISTORY_CASE_INSENSITIVE ( "security.sharedHistory.caseInsensitive" ),
  291. SECURITY_SHAREDHISTORY_SALT_LENGTH ( "security.sharedHistory.saltLength" ),
  292. SECURITY_CERTIFICATES_VALIDATE_TIMESTAMPS ( "security.certs.validateTimestamps" ),
  293. SECURITY_CONFIG_MIN_SECURITY_KEY_LENGTH ( "security.config.minSecurityKeyLength" ),
  294. SECURITY_DEFAULT_EPHEMERAL_BLOCK_ALG ( "security.defaultEphemeralBlockAlg" ),
  295. SECURITY_DEFAULT_EPHEMERAL_HASH_ALG ( "security.defaultEphemeralHashAlg" ),
  296. SEEDLIST_BUILTIN_PATH ( "seedlist.builtin.path" ),
  297. SMTP_SUBJECT_ENCODING_CHARSET ( "smtp.subjectEncodingCharset" ),
  298. TOKEN_CLEANER_INTERVAL_SECONDS ( "token.cleaner.intervalSeconds" ),
  299. TOKEN_MASK_EMAIL_REGEX ( "token.mask.email.regex" ),
  300. TOKEN_MASK_EMAIL_REPLACE ( "token.mask.email.replace" ),
  301. TOKEN_MASK_SHOW_SELECTION ( "token.mask.showSelection" ),
  302. TOKEN_MASK_SMS_REGEX ( "token.mask.sms.regex" ),
  303. TOKEN_MASK_SMS_REPLACE ( "token.mask.sms.replace" ),
  304. TOKEN_MAX_UNIQUE_CREATE_ATTEMPTS ( "token.maxUniqueCreateAttempts" ),
  305. TOKEN_RESEND_DELAY_MS ( "token.resend.delayMS" ),
  306. TOKEN_REMOVE_ON_CLAIM ( "token.removeOnClaim" ),
  307. TOKEN_VERIFY_PW_MODIFY_TIME ( "token.verifyPwModifyTime" ),
  308. TOKEN_STORAGE_MAX_KEY_LENGTH ( "token.storage.maxKeyLength" ),
  309. TELEMETRY_SENDER_IMPLEMENTATION ( "telemetry.senderImplementation" ),
  310. TELEMETRY_SENDER_SETTINGS ( "telemetry.senderSettings" ),
  311. TELEMETRY_SEND_FREQUENCY_SECONDS ( "telemetry.sendFrequencySeconds" ),
  312. TELEMETRY_MIN_AUTHENTICATIONS ( "telemetry.minimumAuthentications" ),
  313. /** Regular expression to be used for matching URLs to be shortened by the URL Shortening Service Class. */
  314. URL_SHORTNER_URL_REGEX ( "urlshortener.url.regex" ),
  315. WORDLIST_BUILTIN_PATH ( "wordlist.builtin.path" ),
  316. WORDLIST_CHAR_LENGTH_MAX ( "wordlist.maxCharLength" ),
  317. WORDLIST_CHAR_LENGTH_MIN ( "wordlist.minCharLength" ),
  318. WS_REST_CLIENT_PWRULE_HALTONERROR ( "ws.restClient.pwRule.haltOnError" ),
  319. WS_REST_SERVER_SIGNING_FORM_TIMEOUT_SECONDS ( "ws.restServer.signing.form.timeoutSeconds" ),
  320. ALLOW_MACRO_IN_REGEX_SETTING ( "password.policy.allowMacroInRegexSetting" ),;
  321. public static final String VALUE_SEPARATOR = ";;;";
  322. private static final String DESCRIPTION_SUFFIX = "_description";
  323. private final String key;
  324. private String defaultValue;
  325. AppProperty( final String key )
  326. {
  327. this.key = key;
  328. }
  329. public String getKey( )
  330. {
  331. return key;
  332. }
  333. public static AppProperty forKey( final String key )
  334. {
  335. for ( final AppProperty appProperty : AppProperty.values() )
  336. {
  337. if ( appProperty.getKey().equals( key ) )
  338. {
  339. return appProperty;
  340. }
  341. }
  342. return null;
  343. }
  344. public String getDefaultValue( )
  345. {
  346. if ( defaultValue == null )
  347. {
  348. defaultValue = readAppPropertiesBundle( this.getKey() );
  349. }
  350. return defaultValue;
  351. }
  352. public String getDescription( )
  353. {
  354. return readAppPropertiesBundle( this.getKey() + DESCRIPTION_SUFFIX );
  355. }
  356. private static String readAppPropertiesBundle( final String key )
  357. {
  358. return ResourceBundle.getBundle( AppProperty.class.getName() ).getString( key );
  359. }
  360. }