#
#  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.
#

#
# This file contains localization strings for configuration labels and
# descriptions as used in the metatype.xml descriptor generated by the
# the SCR plugin
config.name=Apache Sling Resource-Based Discovery Service Configuration
config.description = The configuration of the resource based discovery service implementation.

heartbeatTimeout.name = Heartbeat timeout (seconds)
heartbeatTimeout.description = Configure the timeout (in seconds) after which an instance is \
 considered dead/crashed. Must be higher than the heartbeat interval! Default is 120 seconds.

heartbeatInterval.name = Heartbeat interval (seconds)
heartbeatInterval.description = Configure the interval (in seconds) according to which the \
 heartbeats are exchanged in the topology. Default is 30 seconds.

minEventDelay.name = Minimal Event Delay (seconds)
minEventDelay.description = Configure a minimal delay (in seconds) between TOPOLOGY_CHANGING \
 and TOPOLOGY_CHANGED. Any further changes happening during this delay are accumulated and \
 combined in the TOPOLOGY_CHANGED after this delay. This helps avoiding event-flooding. \
 Default is 3 seconds. A negative value or zero disables this delay.

topologyConnectorUrls.name = Topology Connector URLs
topologyConnectorUrls.description = URLs where to join a topology, e.g. \
 http://localhost:4502/libs/sling/topology/connector

topologyConnectorWhitelist.name = Topology Connector Whitelist
topologyConnectorWhitelist.description = List of IPs and/or hostnames which are allowed to \
 connect to the connector URL. There are four variants here: 1. provide a plain hostname. \
 2. provide an IP address. 3. provide a hostname or IP address with wildcards (* or ?). \
 4. provide an IP address with a subnet mask, either using the CIDR notation: 1.2.3.4/24 \
 or an IP address, space, subnet mask: 1.2.3.4 255.255.255.0)

discoveryResourcePath.name = Discovery Resource Path
discoveryResourcePath.description = Path of resource where to keep discovery information. \
 The default is /var/discovery/impl.

leaderElectionRepositoryDescriptor.name = Repository Descriptor Name
leaderElectionRepositoryDescriptor.description = Name of the repository descriptor to be taken \
 into account for leader election: those instances have preference to become leader which have \
 the corresponding descriptor value of 'false'.
 
invertRepositoryDescriptor.name = Invert Repository Descriptor
invertRepositoryDescriptor.description = Enabling this property allows to invert the \
 repository descriptor value that is obtained via the configured 'leaderElectionRepositoryDescriptor' \
 (thus only applies if that is configured). Default is 'false' (don't invert).

useSyncTokenService.name = Enable Use of SyncTokenService
useSyncTokenService.description = If enabled (and a SyncTokenService is available, which it \
 is in discovery.commons), then switching the view will first be going via that SyncTokenService. \
 This will ensure that all TopologyEventListeners will have received a \
 TOPOLOGY_CHANGING before a TOPOLOGY_CHANGED is sent - for all instances in the local cluster.

autoStopLocalLoopEnabled.name = Auto-Stop Local-Loops
autoStopLocalLoopEnabled.description = If true, and the discovery.impl detects a local-looping \
 topology connector, the corresponding topology connector will be automatically stopped. \
 This is useful to prevent unnecessary loops with eg pre-configured topology connectors.

gzipConnectorRequestsEnabled.name = gzip requests
gzipConnectorRequestsEnabled.description = If true, the payloads of topology connector requests \
 will be gzipped. This is advisable on certain connector structures, eg in a tree structure, where \
 a topology connector announces a large sub-topology. Note that this only works with \
 the server running discovery.impl 1.0.4 and onwards. Replies are gzipped automatically.

connectionTimeout.name = connector's connection timeout
connectionTimeout.description = Timeout (in seconds!) until the topology connector's connection \
 is established (ie socket.connect())
 
soTimeout.name = connector's read timeout
soTimeout.description = Topology connector's socket timeout (SO_TIMEOUT) (in seconds!) which is \
 the timeout for waiting for data

hmacEnabled.name = Enable Hmac message signatures
hmacEnabled.description = If true, and the Shared Key is set to the same value on all members of the \
 topology, the messages will be validated using a HMAC of a digest of the body of the message. \
 The hmac and message digest are in the HTTP request and response headers. Both requests and responses \
 are signed.

enableEncryption.name = Enable Message encryption
enableEncryption.description = If Message HMACs are enabled and there is a shared key set, setting this to \
 true will encrypt the body of the message using 128 bit AES encryption. Once encrypted you will not be able \
 debug the messages at the http level.

sharedKey.name = Message shared key.
sharedKey.description = If message signing and encryption is used, this should be set to the same value \
 on all members of the same topology. If any member of the topology has a different key it will effectively \
 be excluded from the topology even if it attempts to send messages to other members of the topology.

hmacSharedKeyTTL.name = Shared Key TTL
hmacSharedKeyTTL.description = Shared keys for message signatures are derived from the configured shared key. \
 Each derived key has a lifetime (TTL). Once that time has expired a new key is derived and used for hmac signatures. \
 This setting, sets the TTL in ms. Keys that are 2 lifetimes old are ignored. Set according to you level of paranoia, \
 but don't set to less than the greatest possible clock drift between members of the topology. The default is 4 hours. Setting \
 to a ridiculously low value will increase the turnover of keys. Generating a key takes about 2ms. There is no risk of \
 memory consumption with low values, only a risk of the topology falling apart due to incorrectly set clocks.

backoffStableFactor.name = Backoff factor for stable connectors
backoffStableFactor.description = When a topology connector is stable (ie no changes occuring in the announcements sent), \
 then the heartbeat frequency is lowered, ie the heartbeatInterval for this connector is steadily increased, at maximum by the \
 backoffStableFactor.

backoffStandbyFactor.name = Backoff factor for standby connectors
backoffStandbyFactor.description = When a topology connector is in standby mode (ie when it is redundant), the heartbeat \
 frequency is lowered, ie the heartbeatInterval for this connector is increased , at maximum by the backoffStandbyFactor
