#
#  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.
#
# The feature for Apache Sling
[feature name=sling]

[variables]
    jackrabbit.version=2.20.0

[artifacts startLevel=4]
    org.apache.felix/org.apache.felix.scr/2.1.16
    org.apache.felix/org.apache.felix.metatype/1.2.2

[artifacts startLevel=5]
    org.apache.felix/org.apache.felix.http.whiteboard/4.0.0
    org.apache.sling/org.apache.sling.extensions.webconsolebranding/1.0.2
    org.apache.sling/org.apache.sling.extensions.webconsolesecurityprovider/1.2.4
    org.apache.felix/org.apache.felix.inventory/1.0.6
    org.apache.felix/org.apache.felix.prefs/1.1.0
    org.apache.felix/org.apache.felix.webconsole/4.3.16
    org.apache.felix/org.apache.felix.webconsole.plugins.ds/2.1.0
    org.apache.felix/org.apache.felix.webconsole.plugins.obr/1.0.4
    org.apache.felix/org.apache.felix.webconsole.plugins.packageadmin/1.0.4
    org.apache.felix/org.apache.felix.webconsole.plugins.event/1.1.8
    org.apache.felix/org.apache.felix.webconsole.plugins.memoryusage/1.0.10
    org.apache.sling/org.apache.sling.commons.johnzon/1.2.0
    org.apache.felix/org.apache.felix.bundlerepository/2.0.10
    org.apache.sling/org.apache.sling.extensions.threaddump/0.2.2
    org.apache.aries.jmx/org.apache.aries.jmx.api/1.1.5
    org.apache.aries.jmx/org.apache.aries.jmx.core/1.1.8
    org.apache.aries.jmx/org.apache.aries.jmx.whiteboard/1.2.0
    commons-io/commons-io/2.6
    commons-fileupload/commons-fileupload/1.3.3
    org.apache.sling/org.apache.sling.commons.log.webconsole/1.0.0
    org.apache.sling/org.apache.sling.api/2.22.0
    org.apache.sling/org.apache.sling.auth.core/1.4.4
    
[artifacts startLevel=10]
    org.apache.felix/org.apache.felix.http.sslfilter/1.2.6
    org.apache.pdfbox/pdfbox/2.0.17
    org.apache.pdfbox/fontbox/2.0.17
    org.apache.pdfbox/jempbox/1.8.16
    org.apache.tika/tika-core/1.24
    org.apache.tika/tika-parsers/1.24

[artifacts startLevel=15]
    org.apache.sling/org.apache.sling.jcr.jcr-wrapper/2.0.0
    org.apache.sling/org.apache.sling.jcr.api/2.4.0
    org.apache.sling/org.apache.sling.jcr.base/3.1.0
    org.apache.sling/org.apache.sling.jcr.registration/1.0.6
    org.apache.jackrabbit/jackrabbit-jcr-commons/${jackrabbit.version}
    org.apache.jackrabbit/jackrabbit-spi/${jackrabbit.version}
    org.apache.jackrabbit/jackrabbit-spi-commons/${jackrabbit.version}
    org.apache.jackrabbit/jackrabbit-webdav/${jackrabbit.version}
    org.apache.jackrabbit/jackrabbit-jcr-rmi/${jackrabbit.version}
    org.apache.jackrabbit/jackrabbit-data/${jackrabbit.version}
    org.apache.sling/org.apache.sling.jcr.webdav/2.3.8
    org.apache.sling/org.apache.sling.jcr.davex/1.3.10
    org.apache.sling/org.apache.sling.jcr.jackrabbit.usermanager/2.2.8
    org.apache.sling/org.apache.sling.jcr.jackrabbit.accessmanager/3.0.4
    org.apache.sling/org.apache.sling.jcr.webconsole/1.0.2
    io.dropwizard.metrics/metrics-core/3.2.6
    org.apache.sling/org.apache.sling.commons.metrics/1.2.8
    com.google.guava/guava/15.0
    org.apache.sling/org.apache.sling.resource.filter/1.0.0

[artifacts]
    # Add the Slingshot Sample provisioning model
    org.apache.sling/org.apache.sling.sample.slingshot/0.9.0/slingfeature/slingfeature
    # Default Starter content
    # Adjust responseTextFor503 in healthcheck.txt to "classpath:org.apache.sling.starter.content:startup/index.html" when updating org.apache.sling.starter.content, see SLING-8721
    org.apache.sling/org.apache.sling.starter.content/1.0.8
    commons-collections/commons-collections/3.2.2
    org.apache.commons/commons-collections4/4.4
    commons-codec/commons-codec/1.14
    org.apache.commons/commons-math/2.2
    org.apache.httpcomponents/httpcore-osgi/4.4.12
    org.apache.httpcomponents/httpclient-osgi/4.5.10
    org.apache.sling/org.apache.sling.adapter/2.1.10
    org.apache.sling/org.apache.sling.auth.form/1.0.16
    org.apache.sling/org.apache.sling.bundleresource.impl/2.3.2
    org.apache.sling/org.apache.sling.commons.classloader/1.4.4
    org.apache.sling/org.apache.sling.commons.compiler/2.3.6
    org.apache.sling/org.apache.sling.commons.fsclassloader/1.0.12
    org.apache.sling/org.apache.sling.commons.mime/2.2.2
    org.apache.sling/org.apache.sling.commons.scheduler/2.7.6
    org.apache.sling/org.apache.sling.commons.threads/3.2.20
    org.apache.sling/org.apache.sling.engine/2.6.22
    org.apache.sling/org.apache.sling.fsresource/2.1.16
    org.apache.sling/org.apache.sling.i18n/2.5.14
    org.apache.sling/org.apache.sling.installer.console/1.1.0
    org.apache.sling/org.apache.sling.installer.provider.jcr/3.2.1-SNAPSHOT
    org.apache.sling/org.apache.sling.installer.hc/2.0.2
    org.apache.jackrabbit.vault/org.apache.jackrabbit.vault/3.4.4
    org.apache.sling/org.apache.sling.installer.factory.packages/1.0.0
    org.apache.sling/org.apache.sling.jcr.contentloader/2.3.0
    org.apache.sling/org.apache.sling.jcr.resource/3.0.20
    org.apache.sling/org.apache.sling.models.api/1.3.8
    org.apache.sling/org.apache.sling.models.impl/1.4.12
    org.apache.sling/org.apache.sling.resourceresolver/1.6.16
    org.apache.sling/org.apache.sling.serviceusermapper/1.4.4
    org.apache.sling/org.apache.sling.serviceuser.webconsole/1.0.2
    org.apache.sling/org.apache.sling.servlets.get/2.1.40
    org.apache.sling/org.apache.sling.servlets.post/2.3.36
    org.apache.sling/org.apache.sling.servlets.resolver/2.6.4
    org.apache.sling/org.apache.sling.xss/2.2.2
    javax.mail/mail/1.5.0-b01
    org.apache.geronimo.bundles/jstl/1.2_1

[configurations]
  org.apache.sling.engine.impl.log.RequestLogger
    access.log.enabled=B"true"
    request.log.outputtype=I"0"
    access.log.output="log.access"
    request.log.output="log.request"
    request.log.enabled=B"true"
    access.log.outputtype=I"0"

  org.apache.sling.commons.log.LogManager
    org.apache.sling.commons.log.pattern="%d{dd.MM.yyyy HH:mm:ss.SSS}\ *%level*\ [%thread]\ %logger\ %msg%n"
    org.apache.sling.commons.log.file="logs/error.log"
    org.apache.sling.commons.log.level="info"
    org.apache.sling.commons.log.file.size="'.'yyyy-MM-dd"
    org.apache.sling.commons.log.file.number=I"7"
    org.apache.sling.commons.log.packagingDataEnabled=B"true"

  org.apache.sling.commons.log.LogManager.factory.config-access.log
    org.apache.sling.commons.log.pattern="%msg%n"
    org.apache.sling.commons.log.names=["log.access"]
    org.apache.sling.commons.log.file="logs/access.log"
    org.apache.sling.commons.log.level="info"

  org.apache.sling.commons.log.LogManager.factory.config-request.log
    org.apache.sling.commons.log.pattern="%msg%n"
    org.apache.sling.commons.log.names=["log.request"]
    org.apache.sling.commons.log.file="logs/request.log"
    org.apache.sling.commons.log.level="info"

  # TODO: remove bundles as their dependency on admin login is fixed, see SLING-5355 for linked issues
  # For these bundles, admin login is considered "ok":
  # org.apache.sling.jcr.contentloader
  org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-sling
    whitelist.name="sling"
    whitelist.bundles=[
      "org.apache.sling.discovery.commons",\
      "org.apache.sling.discovery.base",\
      "org.apache.sling.discovery.oak",\
      "org.apache.sling.extensions.webconsolesecurityprovider",\
      "org.apache.sling.i18n",\
      "org.apache.sling.jcr.base",\
      "org.apache.sling.jcr.contentloader",\
      "org.apache.sling.jcr.jackrabbit.usermanager",\
      "org.apache.sling.jcr.oak.server",\
      "org.apache.sling.jcr.repoinit",\
      "org.apache.sling.jcr.webconsole",\
      "org.apache.sling.servlets.post",\
      "org.apache.sling.serviceuser.webconsole"
    ]

  # WebDAV servlet requires config now
  org.apache.sling.jcr.webdav.impl.servlets.SimpleWebDavServlet
    dav.root="/dav"

  # DavEx servlet requires config now
  org.apache.sling.jcr.davex.impl.servlets.SlingDavExServlet
      alias="/server"

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-resourceresolver
    user.mapping=[
      "org.apache.sling.resourceresolver:mapping\=sling-mapping",
      "org.apache.sling.resourceresolver:hierarchy\=sling-readall",
      "org.apache.sling.resourceresolver:observation\=sling-readall",
      "org.apache.sling.resourceresolver:console\=sling-readall"
    ]

  # the user mapping for the servlet resolver, subservice "console" namely the user sling-scripting is created in scripting.txt
  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-servletsresolver
    user.mapping=[
      "org.apache.sling.servlets.resolver:console\=sling-readall",
      "org.apache.sling.servlets.resolver:scripts\=sling-scripting"
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-observation
    user.mapping=[
      "org.apache.sling.jcr.resource:observation\=sling-readall"
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-xss
    user.mapping=[
      "org.apache.sling.xss\=sling-xss"
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-i18n
    user.mapping=[
      "org.apache.sling.i18n\=sling-i18n"
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-jcr-install
    user.mapping=[
      "org.apache.sling.installer.provider.jcr\=sling-jcr-install"
    ]

  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-jcr-resource
    user.mapping=[
      "org.apache.sling.jcr.resource:validation\=sling-readall"
    ]

