#
#  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 Felix SCR plugin

org.apache.felix.http.jetty.internal.JettyConfig.name = Apache Felix Jetty Based Http Service
org.apache.felix.http.jetty.internal.JettyConfig.description = Configuration for \
 the embedded Jetty Servlet Container.

org.osgi.service.http.port.name = HTTP Port
org.osgi.service.http.port.description = Port to listen on for HTTP requests. \
 Defaults to 8080.
        
org.osgi.service.http.port.secure.name = HTTPS Port
org.osgi.service.http.port.secure.description = Port to listen on for HTTPS \
 requests. Defaults to 433.

org.apache.felix.http.debug.name = Debug Logging
org.apache.felix.http.debug.description = Whether to write DEBUG level \
 messages or not. Defaults to false.
 
org.apache.felix.https.keystore.name = Keystore
org.apache.felix.https.keystore.description = Absolute Path to the Keystore to \
 use for HTTPS. Only used if HTTPS is enabled in which case this property is \
 required.
 
org.apache.felix.https.keystore.password.name = Keystore Password
org.apache.felix.https.keystore.password.description = Password to access the \
 Keystore. Only used if HTTPS is enabled.
 
org.apache.felix.https.keystore.key.password.name = Key Password
org.apache.felix.https.keystore.key.password.description = Password to unlock \
 the secret key from the Keystore. Only used if HTTPS is enabled.
 
org.apache.felix.http.enable.name = Enable HTTP
org.apache.felix.http.enable.description =  Whether or not HTTP is enabled. \
 Defaults to true thus HTTP enabled.

org.apache.felix.https.enable.name = Enable HTTPS
org.apache.felix.https.enable.description = Whether or not HTTPS is enabled. \
 Defaults to false thus HTTPS disabled.
 
org.apache.felix.https.truststore.name = Truststore
org.apache.felix.https.truststore.description = Absolute Path to the Truststore \
 to use for HTTPS. Only used if HTTPS is enabled.
 
 org.apache.felix.https.truststore.password.name = Truststore Password
 org.apache.felix.https.truststore.password.description = Password to access the \
 Truststore. Only used if HTTPS is enabled.

org.apache.felix.https.clientcertificate.name = Client Certificate
org.apache.felix.https.clientcertificate.description = Requirement for the \
 Client to provide a valid certifcate. Defaults to none.
 
clientcertificate.none = No Client Certificate
clientcertificate.wants = Client Certficate Wanted
clientcertificate.needs = Client Certificate Needed

org.apache.felix.http.nio.name = NIO for HTTP
org.apache.felix.http.nio.description = Wether or not to use NIO for HTTP. \
 Defaults to true. Only used if HTTP is enabled.

org.apache.felix.https.nio.name = NIO for HTTPS
org.apache.felix.https.nio.description = Wether or not to use NIO for HTTP. \
 Defaults to the value of the NIO for HTTP property. Only used if HTTPS is \
 enabled.

org.apache.felix.http.mbeans.name = Register MBeans
org.apache.felix.http.mbeans.description = Whether or not to use register \
 JMX MBeans from the servlet container (Jetty).