# 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

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

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.reconciliationReportKey=c3520ad9-179f-49e7-b315-d684d216dd97

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.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
#console.security-headers.Content-Security-Policy=default-src https:

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