# ============LICENSE_START===================================================
#  Copyright (C) 2019-2021 Nordix Foundation.
# ============================================================================
# Licensed 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.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=====================================================
#
#    Configuration parameters set at startup for the DataRouter node
#
#    URL to retrieve dynamic configuration
ProvisioningURL = https://dmaap-dr-prov:8443/internal/prov
#
#    URL to upload PUB/DEL/EXP logs
LogUploadURL = https://dmaap-dr-prov:8443/internal/logs
#
#    The port number for http as seen within the server
IntHttpPort = 8080
#
#    The port number for https as seen within the server
IntHttpsPort = 8443
#
#    The external port number for https taking port mapping into account
ExtHttpsPort = 443
#
#    The minimum interval between fetches of the dynamic configuration from the provisioning server
MinProvFetchInterval = 10000
#
#    The minimum interval between saves of the redirection data file
MinRedirSaveInterval = 10000
#
#    The path to the directory where log files are stored
LogDir = /opt/app/datartr/logs
#
#    The retention interval (in days) for log files
LogRetention = 30
#
#    The path to the directories where data and meta data files are stored
SpoolDir = /opt/app/datartr/spool
#
#    The path to the redirection data file
RedirectionFile = etc/redirections.dat
#
#    The type of keystore for https
KeyStoreType = PKCS12
#
#    The type of truststore for https
TrustStoreType = jks
#
#    The path to the file used to trigger an orderly shutdown
QuiesceFile = etc/SHUTDOWN
#
#    The key used to generate passwords for node to node transfers
NodeAuthKey = Node123!
#
#    DR_NODE DEFAULT ENABLED TLS PROTOCOLS
NodeHttpsProtocols = TLSv1.1|TLSv1.2
#
#    AAF type to generate permission string
AAFType = org.onap.dmaap-dr.feed
#
#    AAF default instance to generate permission string - default should be legacy
AAFInstance = legacy
#
#    AAF action to generate permission string - default should be publish
AAFAction = publish
#
#    AAF CADI enabled flag
CadiEnabled = false
#
#    AAF Props file path
AAFPropsFilePath = /opt/app/osaaf/local/org.onap.dmaap-dr.props
