# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
spring.application.name=Apache Syncope ${syncope.version} Console
spring.groovy.template.check-template-location=false
spring.main.banner-mode=log
spring.main.allow-circular-references=true

server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true

server.servlet.contextPath=/syncope-console

spring.web.resources.static-locations=classpath:/syncope/static,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

management.endpoints.web.exposure.include=info,health,loggers
management.endpoint.health.show-details=ALWAYS
management.endpoint.env.show-values=WHEN_AUTHORIZED

service.discovery.address=http://localhost:8080/syncope-console/

server.shutdown=graceful
spring.lifecycle.timeout-per-shutdown-phase=30s

wicket.core.csrf.enabled=false

logging.config=classpath:/log4j2.xml

console.anonymousUser=${anonymousUser}
console.anonymousKey=${anonymousKey}

console.useGZIPCompression=true
console.maxUploadFileSizeMB=5

# Max wait time on apply changes from modals/wizards (given in seconds)
console.maxWaitTimeOnApplyChanges=30

console.adminUser=${adminUser}

console.page.dashboard=org.apache.syncope.client.console.pages.Dashboard
console.page.realms=org.apache.syncope.client.console.pages.Realms
console.page.reports=org.apache.syncope.client.console.pages.Reports
console.page.audit=org.apache.syncope.client.console.pages.Audit
console.page.implementations=org.apache.syncope.client.console.pages.Implementations
console.page.logs=org.apache.syncope.client.console.pages.Logs
console.page.security=org.apache.syncope.client.console.pages.Security
console.page.types=org.apache.syncope.client.console.pages.Types
console.page.policies=org.apache.syncope.client.console.pages.Policies
console.page.notifications=org.apache.syncope.client.console.pages.Notifications
console.page.parameters=org.apache.syncope.client.console.pages.Parameters
console.page.topology=org.apache.syncope.client.console.topology.Topology

console.default-any-panel-class=org.apache.syncope.client.console.panels.AnyPanel

console.realms-full-tree-threshold=20

console.topology.corePoolSize=10
console.topology.maxPoolSize=20
console.topology.queueCapacity=50

console.x-forward=true
console.csrf=true

console.security-headers.X-XSS-Protection=1; mode=block
console.security-headers.Strict-Transport-Security=max-age=31536000; includeSubDomains; preload
console.security-headers.X-Content-Type-Options=nosniff
console.security-headers.X-Frame-Options=sameorigin

##
# Disable CGLib Proxies
spring.aop.auto=true
spring.aop.proxy-target-class=false
