# -------------------------------------------------------------------
# $Id$
#
# This is a configuration property for running unit tests that expect a
# default setup of TR.properties.  Many different unit tests can share
# this same properties file.  If you are testing unusual TR.prop values
# then create another .properties file!
#
# Notes: 
# Currently the Scheduler and Security services are disabled due
# to frequent compile problems with the Torque objects.
#
# The templates are all loaded from src/templates/test.
#
# The module.packages also includes org.apache.turbine.services.template.modules
# -------------------------------------------------------------------


pipeline.default.descriptor = conf/turbine-classic-pipeline.xml
# -------------------------------------------------------------------
#
#  L O G 4 J - L O G G I N G
#
# -------------------------------------------------------------------

log4j.file = /conf/test/Log4j.properties

# -------------------------------------------------------------------
#
#  M A I L  S E R V E R
#
# -------------------------------------------------------------------
# Your mail server for outgoing email.
#
# Default: null
# -------------------------------------------------------------------

mail.server=

# -------------------------------------------------------------------
# SMTP-From header for your outgoing messages
#
# All failed delivery messages will be returned to this address.
# If unset, these messages will be sent to the address in the
# From header (standard behaviour)
#
# Default: null
# -------------------------------------------------------------------

mail.smtp.from=

# -------------------------------------------------------------------
#
#  M O D U L E  C A C H I N G
#
# -------------------------------------------------------------------
# This determines whether or not to cache the modules in memory.  For
# development, turn this off.  For production, turn this on.
#
# Default: false
# -------------------------------------------------------------------

module.cache=false

# If module.cache=true, then how large should we make the hashtables
# by default.

action.cache.size=20
layout.cache.size=10
navigation.cache.size=10
page.cache.size=5
screen.cache.size=50
scheduledjob.cache.size=10

# -------------------------------------------------------------------
#
#  M O D U L E  P A C K A G E S
#
# -------------------------------------------------------------------
# This is the "classpath" for Turbine.  In order to locate your own
# modules, you should add them to this path.  For example, if you have
# com.company.actions, com.company.screens, com.company.navigations,
# then this setting would be "com.company,org.apache.turbine.modules".
# This path is searched in order.  For example, Turbine comes with a
# screen module named "Login".  If you wanted to have your own screen
# module named "Login", then you would specify the path to your
# modules before the others.
#
# Note: org.apache.turbine.modules will always be added to the search
# path.  If it is not explictly added here, it will be added to the
# end.
#
# Default: org.apache.turbine.modules
# -------------------------------------------------------------------

module.packages=org.apache.turbine.modules, org.apache.turbine.services.template.modules, org.apache.turbine.services.template.modules.screens.existing.dflt

# -------------------------------------------------------------------
#
#  D A T A B A S E  S E T T I N G S
#
# -------------------------------------------------------------------
# Turbine uses the decoupled torque now!!
# The database settings are now in Torque.properties
# -------------------------------------------------------------------

# -------------------------------------------------------------------
#
#  F R A M E W O R K  S E T T I N G S
#
# -------------------------------------------------------------------
# These are settings that control the behaviour of the framework,
# such as determining whether a template system is in use, what
# the default templates and screens are and session handling settings.
# -------------------------------------------------------------------

# Used to set the template homepage if you are using a template
# layout.  This is the template that will be displayed to the user
# when no specific template is requested.  This is normally executed
# as the first template the user sees when they access the system.
#
# Default: Index.vm

template.homepage=Index.vm

# This is the default screen to show to people when they first access
# the system.  This is only used if there is no value for
# template.homepage.  This is for use when you are not using a
# templating system such as Velocity or JSP.
#
# Default: Login

screen.homepage=

# This is the template that is shown on an incorrect login attempt.
# Setting this property will override any value of screen.login specfied
# below.
#
# Default: Login.vm

template.login=Login.vm

# This is the page that is shown on an incorrect login attempt.  It is
# referenced in the LoginUser action. This is only used if there is no value
# for template.login.  This is for use when you are not using a
# templating system such as Velocity or JSP.
#
# Default: Login

screen.login=

# This is the template that is used by the respective Template based
# ErrorScreen for displaying the error. If you are not using a Template based
# ErrorScreen, then this is ignored.
#
# Default: Error.vm

template.error=Error.vm

# This is the default error screen.
#
# Default: VelocityErrorScreen

screen.error=VelocityErrorScreen

# This is the screen that is displayed when the user's web page is in
# an invalid state.
#
# Default: error.InvalidState

screen.invalidstate=error.InvalidState

# Set the default Doctype if you use the deprecated VelocityECSLayout.  The 
# default Doctype can be set by using the single strings: Html40Strict, 
# Html40Transitional, or Html40Frameset.  Additionally the default can be 
# supplied as two strings separated by a comma giving the DTD and URI.
#
# Default: ignored if not set to some value.

#default.doctype=Html40Transitional

# Set the components of the default Doctype for use in html documents.
#
# Defaults: There are no defaults - if default.html.doctype.root.element is not
#           set then no default doctype will be available.

default.html.doctype.root.element=HTML
default.html.doctype.identifier=-//W3C//DTD HTML 4.01 Transitional//EN
default.html.doctype.url=http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd

# This is the default action to log a user in.  If you write your own
# implementation of the login action, make sure that you change this
# to reflect the new name.

action.login=LoginUser

# This is the default action to log a user out. If you write your own
# implementation of the logout action, make sure that you change this
# to reflect the new name.

action.logout=LogoutUser

# This is the default action to validate whether or not a session is
# valid.  For example, if you want to make sure if a user has already
# logged in or not.
#
# Default: SessionValidator

action.sessionvalidator=sessionvalidator.TemplateSessionValidator

# This is the timeout in seconds for sessions. If left commented out, the
# servlet container's default timeout will be left as is.

# session.timeout=1800

# This is the default action that builds up the AccessControlList for
# the individual users session.

action.accesscontroller=AccessController

#
# Set this value to true if you want to be able to submit multiple 
# events to an Action by doing eventSubmit_do<action> and consider
# only events that have a non-empty, non-zero value. This is useful
# if you submit your form with JavaScript
# 
action.eventsubmit.needsvalue = false

# -------------------------------------------------------------------
#
#  J N D I  C O N T E X T S
#
# -------------------------------------------------------------------

# This indicates whether Turbine should try to create JNDI contexts.
#
# Default: false
#
# contexts=true

# These are the JNDI context properties.  Each context's properties
# are defined by the properties beginning with context.name.
#
# Default: none
#
# Example: The following will create a JNDI context named "name" in
# the data.contexts Hashtable.  It will point at the RMI registry on
# localhost running on port 1099, and will use
# com.sun.jndi.rmi.registry.RegistryContextFactory as the initial
# context factory:
#
# context.name.java.naming.provider.url=rmi://localhost:1099
# context.name.java.naming.factory.initial=com.sun.jndi.rmi.registry.RegistryContextFactory

# -------------------------------------------------------------------
#
#  P E E R S
#
# -------------------------------------------------------------------
# Supplies Turbine with information about the database schema, which
# can simplify any required Peer classes.
#
# Default: org.apache.turbine.util.db.map.TurbineMapBuilder
# -------------------------------------------------------------------

database.maps.builder=org.apache.turbine.util.db.map.TurbineMapBuilder

# -------------------------------------------------------------------
#
#  M E S S A G E S
#
# -------------------------------------------------------------------
# Note that strings containing "," (comma) characters must backslash
# escape the comma (i.e. '\,')

# The message that can be displayed before a user logs in.

login.message=Thank you for your visit. Please log into the system.

# The message that can be displayed when no screen is defined.

login.message.noscreen=There has been an error. Your session is valid but the screen variable is not defined.

# The message that can be displayed when a user enters an incorrect
# password or username.

login.error=Sorry your username or password is incorrect!

# The message that can be displayed when a user logs out.

logout.message=Thank you for using the system. Please come back soon.

# -------------------------------------------------------------------
#
#  S E C U R E  S O C K E T S  L A Y E R
#
# -------------------------------------------------------------------
# Whether the web server is able to use SSL.  Links in Turbine can
# check this property to determine if SSL can be used.
#
# Default: true
# -------------------------------------------------------------------

use.ssl=true

# -------------------------------------------------------------------
#
#  S E R V I C E S
#
# -------------------------------------------------------------------
# Classes for Turbine Services should be defined here.
# Format: services.[name].classname=[implementing class]
#
# To specify properties of a service use the following syntax:
# service.[name].[property]=[value]
#
# The order that these services is listed is important! The
# order that is stated here is the order in which the services
# will be initialized. Keep this is mind if you have services
# that depend on other services during initialization.
# -------------------------------------------------------------------
#services.AvalonComponentService.classname=org.apache.turbine.services.avaloncomponent.TurbineAvalonComponentService
services.CryptoService.classname=org.apache.turbine.services.crypto.TurbineCryptoService
services.ComponentService.classname=org.apache.turbine.services.component.TurbineComponentService
services.FactoryService.classname=org.apache.turbine.services.factory.TurbineFactoryService
services.PoolService.classname=org.apache.turbine.services.pool.TurbinePoolService
services.RunDataService.classname=org.apache.turbine.services.rundata.TurbineRunDataService
services.ServletService.classname=org.apache.turbine.services.servlet.TurbineServletService
services.AssemblerBrokerService.classname=org.apache.turbine.services.assemblerbroker.TurbineAssemblerBrokerService
services.LocalizationService.classname=org.apache.turbine.services.localization.TurbineLocalizationService
services.MimeTypeService.classname=org.apache.turbine.services.mimetype.TurbineMimeTypeService
services.GlobalCacheService.classname=org.apache.turbine.services.cache.TurbineGlobalCacheService
#services.SchedulerService.classname=org.apache.turbine.services.schedule.TurbineSchedulerService
services.XmlRpcService.classname=org.apache.turbine.services.xmlrpc.TurbineXmlRpcService
services.UniqueIdService.classname=org.apache.turbine.services.uniqueid.TurbineUniqueIdService
services.UploadService.classname=org.apache.turbine.services.upload.TurbineUploadService
# Default
#services.SecurityService.classname=org.apache.turbine.services.security.db.DBSecurityService
services.SecurityService.classname=org.apache.turbine.test.MockSecurityService
services.PullService.classname=org.apache.turbine.services.pull.TurbinePullService
#services.IntakeService.classname=org.apache.turbine.services.intake.TurbineIntakeService
services.TemplateService.classname=org.apache.turbine.services.template.TurbineTemplateService
services.XSLTService.classname=org.apache.turbine.services.xslt.TurbineXSLTService
#services.SessionService.classname=org.apache.turbine.services.session.TurbineSessionService

# Turn on the appropriate template service.
services.VelocityService.classname=org.apache.turbine.services.velocity.TurbineVelocityService

# -------------------------------------------------------------------
#
#  R U N   D A T A   S E R V I C E
#
# -------------------------------------------------------------------
# Default implementations of base interfaces for request processing.
# Additional configurations can be defined by using other keys
# in the place of the <default> key.
# -------------------------------------------------------------------

services.RunDataService.default.run.data=org.apache.turbine.services.rundata.DefaultTurbineRunData
services.RunDataService.default.parameter.parser=org.apache.turbine.util.parser.DefaultParameterParser
services.RunDataService.default.cookie.parser=org.apache.turbine.util.parser.DefaultCookieParser

# -------------------------------------------------------------------
#
#  C A C H E   S E R V I C E
#
# -------------------------------------------------------------------

# Interval at which the cache will be checked. The default is
# 5000ms or 5 seconds.

services.GlobalCacheService.cache.check.frequency = 5000

# -------------------------------------------------------------------
#
#  A S S E M B L E R  B R O K E R  S E R V I C E
#
# -------------------------------------------------------------------
# A list of AssemblerFactory classes that will be registered
# with TurbineAssemblerBrokerService
# -------------------------------------------------------------------

services.AssemblerBrokerService.screen=org.apache.turbine.services.assemblerbroker.util.java.JavaScreenFactory
#services.AssemblerBrokerService.screen=org.apache.turbine.services.assemblerbroker.util.python.PythonScreenFactory
services.AssemblerBrokerService.action=org.apache.turbine.services.assemblerbroker.util.java.JavaActionFactory
services.AssemblerBrokerService.layout=org.apache.turbine.services.assemblerbroker.util.java.JavaLayoutFactory
services.AssemblerBrokerService.page=org.apache.turbine.services.assemblerbroker.util.java.JavaPageFactory
services.AssemblerBrokerService.navigation=org.apache.turbine.services.assemblerbroker.util.java.JavaNavigationFactory
services.AssemblerBrokerService.scheduledjob=org.apache.turbine.services.assemblerbroker.util.java.JavaScheduledJobFactory

# -------------------------------------------------------------------
#
#  T E M P L A T E  S E R V I C E
#
# -------------------------------------------------------------------

# Roughly, the number of templates in each category.
#
# Defaults: layout=2, navigation=10, screen=50

services.TemplateService.layout.cache.size=2
services.TemplateService.navigation.cache.size=10
services.TemplateService.screen.cache.size=50

#
# These are the mapper classes responsible for the lookup of Page, Screen, Layout and Navigation classes according
# to the supplied template Name. They also map template names on the Layout and Screen file names to be used.
# 
#services.TemplateService.mapper.page.class            = org.apache.turbine.services.template.mapper.DirectTemplateMapper
#services.TemplateService.mapper.screen.class          = org.apache.turbine.services.template.mapper.ClassMapper
#services.TemplateService.mapper.layout.class          = org.apache.turbine.services.template.mapper.ClassMapper
#services.TemplateService.mapper.navigation.class      = org.apache.turbine.services.template.mapper.ClassMapper
#services.TemplateService.mapper.layout.template.class = org.apache.turbine.services.template.mapper.LayoutTemplateMapper
#services.TemplateService.mapper.screen.template.class = org.apache.turbine.services.template.mapper.ScreenTemplateMapper

# -------------------------------------------------------------------
#
#  P U L L  S E R V I C E
#
# -------------------------------------------------------------------
# These are the properties for the Pull Service, the service
# that works in conjuction with the Turbine Pull Model API.
# -------------------------------------------------------------------

services.PullService.earlyInit= true

# This determines whether the non-request tools are refreshed
# on each request (request tools aren't ever, because they're
# instantiated for the request only anyway).
services.PullService.tools.per.request.refresh=true

# These are tools that are placed in the context by the service
# These tools will be made available to all your
# templates. You list the tools in the following way:
#
# tool.<scope>.<id> = <classname>
#
# <scope>      is the tool scope: global, request, session
#              or persistent (see below for more details)
# <id>         is the name of the tool in the context
#
# You can configure the tools in this way:
# tool.<id>.<parameter> = <value>
#
# So if you find "global", "request", "session" or "persistent" as second
# part, it is a configuration to put a tool into the toolbox, else it is a
# tool specific configuration.
#
# For example:
#
# tool.global.ui    = org.apache.turbine.util.pull.UIManager
# tool.global.mm    = org.apache.turbine.util.pull.MessageManager
# tool.request.link = org.apache.turbine.services.pull.tools.TemplateLink
# tool.request.page = org.apache.turbine.util.template.TemplatePageAttributes
#
# Then:
#
# tool.ui.skin = default
#
# configures the value of "skin" for the "ui" tool.
#
# Tools are accessible in all templates by the <id> given
# to the tool. So for the above listings the UIManager would
# be available as $ui, the MessageManager as $mm, the TemplateLink
# as $link and the TemplatePageAttributes as $page.
#
# You should avoid using tool names called "global", "request",
# "session" or "persistent" because of clashes with the possible Scopes.
#
# Scopes:
#
#   global:     tool is instantiated once and that instance is available
#               to all templates for all requests. Tool must be threadsafe.
#
#   request:    tool is instantiated once for each request (although the
#               PoolService is used to recycle instances). Tool need not
#               be threadsafe.
#
#   session:    tool is instantiated once for each user session, and is
#               stored in the user's temporary hashtable. Tool should be
#               threadsafe.
#
#   authorized: tool is instantiated once for each user session once the
#               user logs in. After this, it is a normal session tool.
#
#   persistent: tool is instantitated once for each user session once
#               the user logs in and is is stored in the user's permanent
#               hashtable.
#               This means for a logged in user the tool will be persisted
#               in the user's objectdata. Tool should be threadsafe and
#               Serializable.
#
# Defaults: none

tool.request.link=org.apache.turbine.services.pull.tools.TemplateLink
tool.request.page=org.apache.turbine.util.template.HtmlPageAttributes
tool.request.content=org.apache.turbine.services.pull.tools.ContentTool
tool.request.l10n=org.apache.turbine.services.localization.LocalizationTool

#This pull tool is to allow for easy formatting of Date object into Strings
tool.request.dateFormatter=org.apache.turbine.services.pull.util.DateFormatter

# Use this tool if you need a place to store data that will persist between
# requests.  Any data stored using this tool will be stored in the session.
tool.session.sessionData=org.apache.turbine.services.pull.util.SessionData

# These are intake tools.
#tool.request.om=org.apache.turbine.om.OMTool
#tool.request.intake=org.apache.turbine.services.intake.IntakeTool

# This is a tool that allows access to the scheduler service.
#tool.request.scheduler=org.apache.turbine.services.SchedulerTool

tool.global.ui=org.apache.turbine.services.pull.util.UIManager

# The UI Manager will allow you to skin your Turbine
# application using simple properties files that are
# located in the WEBAPP/resources/ui/skins/ directory
# hierarchy.

tool.ui.skin=default

#
# The content tool can put its URIs through the Servlet container,
# which might attach things like the jsessionid even to URIs that
# are not servered by the container. 
#
# The default behaviour was not to put these through the container.
#
# Set this to true if you need things like jsessionid attached to all
# links generated from the $content pull tool.
#
tool.content.want.encoding = false

#
# Both the link and the content tool normally return absolute URIs
# You can change this by exchanging the tool classes but this is not
# really recommended. Setting these properties to true allow you
# to change the behaviour if you want only relative URIs (e.g. if you
# run behind a reverse proxy or a load balancer).
#
tool.content.want.relative = false
tool.link.want.relative = false

# -------------------------------------------------------------------
#
#  V E L O C I T Y  S E R V I C E
#
# -------------------------------------------------------------------


services.VelocityService.earlyInit = true
services.VelocityService.template.extension = vm

services.VelocityService.default.page            = VelocityPage
services.VelocityService.default.screen          = VelocityScreen
services.VelocityService.default.layout          = VelocityOnlyLayout
services.VelocityService.default.navigation      = VelocityNavigation
services.VelocityService.default.layout.template = Default.vm

services.VelocityService.resource.loader = file
services.VelocityService.file.resource.loader.description = Velocity File Resource Loader
services.VelocityService.file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
services.VelocityService.file.resource.loader.path  = src/templates/test
services.VelocityService.file.resource.loader.cache = false
services.VelocityService.file.resource.loader.modificationCheckInterval = 2

# -------------------------------------------------------------------
#
#  J S P  S E R V I C E
#
# -------------------------------------------------------------------

services.JspService.template.extension=jsp
services.JspService.default.page = JspPage
services.JspService.default.screen=BaseJspScreen
services.JspService.default.layout = JspLayout
services.JspService.default.navigation=BaseJspNavigation
services.JspService.default.error.screen = JspErrorScreen
services.JspService.default.layout.template = Default.jsp

services.JspService.templates = /templates/app
services.JspService.buffer.size = 8192

# -------------------------------------------------------------------
#
#  U P L O A D  S E R V I C E
#
# -------------------------------------------------------------------

# Whether the files should be automatically picked up by
# ParameterParser.

services.UploadService.automatic=true

#
# The directory where files will be temporarily stored.
#
services.UploadService.repository=.

#
# The maximum size of a request that will be processed.
#
services.UploadService.size.max=1048576

#
# The maximum size of a request that will have it's elements cached in
# memory by TurbineUploadService class.
#
services.UploadService.size.threshold=10240

# -------------------------------------------------------------------
#
#  L O C A L I Z A T I O N  S E R V I C E
#
# -------------------------------------------------------------------

# Default ResourceBundle and language/country codes used by the
# TurbineLocalizationService.
#
locale.default.bundle=MyBundle
locale.default.language=en
locale.default.country=US

#
# This will set the charset= portion of the ContentType: header.
# Leave commented out unless you want to return stuff as a different
# charset.
#
# locale.default.charset=

# -------------------------------------------------------------------
#
#  M I M E T Y P E  S E R V I C E
#
# -------------------------------------------------------------------

# This property specifies a file containing mappings between MIME
# content types and the corresponding file name extensions. The
# service itself contains a hardcoded set of most common mappings.
# The file must use the same syntax as the mime.types file of
# the Apache Server, i.e.
# <mimetype> <ext1> <ext2>...
#
#services.MimeTypeService.mime.types=/WEB-INF/conf/mime.types

# This property specifies a file containing mappings between locales
# and the corresponding character encodings. The service itself
# contains a hardcoded set of most common mappings.
# The file should use the Java property file syntax, i.e.
# <lang_country_variant>=<charset>
#
#services.MimeTypeService.charsets=/WEB-INF/conf/charset.properties

# -------------------------------------------------------------------
#
#  S C H E D U L E R  S E R V I C E
#
# -------------------------------------------------------------------

#
# Set enabled to true to start the scheduler.  The scheduler can be
# stopped and started after Turbine has been intialized.  See the
# javadocs for org.apache.turbine.services.schedule.TurbineScheduler
# for the methods calls.
#
# Default = false
#

services.SchedulerService.enabled=false

# Determines if the scheduler service should be initialized early.  This
# Should always be set to true!!!!

services.SchedulerService.earlyInit=true

# -------------------------------------------------------------------
#
#  C R Y P T O   S E R V I C E
#
# -------------------------------------------------------------------

#
# Standard Unix crypt(3) password encryption.
#
services.CryptoService.algorithm.unix  = org.apache.turbine.services.crypto.provider.UnixCrypt
#
# This providers allows access to the Java Message Digest encryption algorithms
#
services.CryptoService.algorithm.java  = org.apache.turbine.services.crypto.provider.JavaCrypt
#
# This is a simple, cleartext "encryption" provider.
#
services.CryptoService.algorithm.cleartext  = org.apache.turbine.services.crypto.provider.ClearCrypt
#
# Use this provider if you upgrade from Turbine 2.1 to current. It provides bug-to-bug
# compatibility for passwords created with the old Security Service. See the javadocs for
# OldJavaCrypt
#
services.CryptoService.algorithm.oldjava  = org.apache.turbine.services.crypto.provider.OldJavaCrypt
#
# This is the default crypto provider. It implements the normal Java MessageDigest ciphers
# You need not to have this, it is the default if no algorithms are given. The default
# provider gives you all the Java MessageDigest Ciphers
#
services.CryptoService.algorithm.default  = org.apache.turbine.services.crypto.provider.JavaCrypt

# -------------------------------------------------------------------
#
#  S E C U R I T Y  S E R V I C E
#
# -------------------------------------------------------------------

#
# This is the class that implements the UserManager interface to
# manage User objects. Default is the UserManager from the
# DBSecurityService.
# Override this setting if you want your User information stored
# on a different medium (LDAP directory is a good example).
#
# Adjust this setting if you change the Setting of the SecurityService class (see above).

# Default: org.apache.turbine.services.security.db.DBUserManager
# The MockUserManager is used in testing...
services.SecurityService.user.manager = org.apache.turbine.test.MockUserManager

#
# These are the default classes used by the Security Service to
# provide User, Group, Role and Permission objects.
# You want to override this setting only if you want your
# implementation to provide application specific addtional
# functionality.
#
# For LDAP use:
# services.SecurityService.user.class=org.apache.turbine.services.security.ldap.LDAPUser
# LDAP does not yet provide custom Group, User and Role objects so you
# must use it with the default TurbineGroup, TurbineRole and
# TurbinePermission objects.
#
# Class for User. Default: org.apache.turbine.om.security.TurbineUser
services.SecurityService.user.class=org.apache.turbine.om.security.TurbineUser
# Class for Group. Default: org.apache.turbine.om.security.TurbineGroup
services.SecurityService.group.class=org.apache.turbine.om.security.TurbineGroup
# Class for Role. Default: org.apache.turbine.om.security.TurbineRole
services.SecurityService.role.class=org.apache.turbine.om.security.TurbineRole
# Class for Permission. Default: org.apache.turbine.om.security.TurbinePermission
services.SecurityService.permission.class=org.apache.turbine.om.security.TurbinePermission

#
# This is the class that implements the ACL interface.
# You want to override this setting only if you want your ACL
# implementation to provide application specific addtional
# functionality.
#

# Default: org.apache.turbine.util.security.TurbineAccessControlList
services.SecurityService.acl.class = org.apache.turbine.util.security.TurbineAccessControlList

#
# This setting is DBSecurityService specific - this class is consulted for the names
# of the columns in the users' tables for the purpose of creating join queries.
# If you use your own User implementation in conjunction with DBSecurityService,
# it's peer class must implement org.apache.turbine.om.security.peer.UserPeer interface,
# and you need to specify the name of the peer class here.
#
# Default: org.apache.turbine.om.security.peer.TurbineUserPeer
#
services.SecurityService.userPeer.class=org.apache.turbine.om.security.peer.TurbineUserPeer

#
# This is used by the SecurityService to make the password checking
# secure. When enabled, passwords are transformed by a one-way
# function into a sequence of bytes that is base64 encoded.
# It is impossible to guess the plain-text form of the password
# from the representation. When user logs in, the entered password
# is transformed the same way and then compared with stored value.
#
# Default: false
#

services.SecurityService.secure.passwords=false

#
# This property lets you choose what digest algorithm will be used
# for encrypting passwords. Check documentation of your JRE for
# available algorithms.
#
# Default: SHA
#

services.SecurityService.secure.passwords.algorithm=SHA

# Configuration for the LDAP Security Service implementation

#services.SecurityService.ldap.security.athentication=simple
#services.SecurityService.ldap.port=<LDAP PORT>
#services.SecurityService.ldap.host=<LDAP HOST>
#services.SecurityService.ldap.admin.username=<ADMIN USERNAME>
#services.SecurityService.ldap.admin.password=<ADMIN PASSWORD>
#services.SecurityService.ldap.user.basesearch=<SEARCH PATTERN>
#services.SecurityService.ldap.user.search.filter=<SEARCH FILTER>
#services.SecurityService.ldap.dn.attribute=userPrincipalName
#services.SecurityService.ldap.provider=com.sun.jndi.ldap.LdapCtxFactory

#
# This property specifies the type of security authentication
#
# Default: simple
#

# services.SecurityService.ldap.security.authentication=simple

#
# The host name where the LDAP server is listenting.
#
# Default: localhost
#

# services.SecurityService.ldap.host=localhost

#
# The port number where the LDAP server is listenting.
#
# Default: 389
#

# services.SecurityService.ldap.port=389

#
# The user name of the admin user. The admin user should be able to
# read from the LDAP repository.
# Characteres '/' are replaced by '=' and '%' are replaced by ','.
#
# Default: none
#

# services.SecurityService.ldap.admin.username=turbineUserUniqueId/turbine%dc/example%dc/com

#
# The password of the admin user.
#
# Default: none
#

# services.SecurityService.ldap.admin.password=turbine

#
# The class name of the ldap provider.
#
# Default: com.sun.jndi.ldap.LdapCtxFactory
#

# services.SecurityService.ldap.provider=com.sun.jndi.ldap.LdapCtxFactory

#
# The directory base to search.
# '/' are replaced by '=' and '%' are replaced by ','.
#
# Default: none
#

# services.SecurityService.ldap.basesearch=dc/example%dc/com

#
# The unique id. It must be an integer field and it is required only when
# the users are in LDAP but the groups, roles and permissions are in the
# Database.
#
# services.SecurityService.ldap.user.userid=

#
# This property maps the username with an attribute in LDAP.
#
# Default: turbineUserUniqueId
#

# services.SecurityService.ldap.user.username=turbineUserUniqueId

#
# This property maps the firstname with an attribute in LDAP.
#
# Default: turbineUserFirstName
#

# services.SecurityService.ldap.user.firstname=turbineUserFirstName

#
# This property maps the lastname with an attribute in LDAP.
#
# Default: turbineUserLastName
#

# services.SecurityService.ldap.user.lastname=turbineUserLastName

#
# This property maps the email with an attribute in LDAP.
#
# Default: turbineUserMailAddress
#

# services.SecurityService.ldap.user.email=turbineUserMailAddress

#
# This property maps the userPassword with an attribute in LDAP.
#
# Default: none
#

# services.SecurityService.ldap.user.password=userPassword


# -------------------------------------------------------------------
#
#  X M L R P C  S E R V I C E
#
# -------------------------------------------------------------------
# This property specifies which class should be used to parse
# xml for XmlRpc functionality.
#
# Default: org.apache.xerces.parsers.SAXParser

services.XmlRpcService.parser=org.apache.xerces.parsers.SAXParser

# This property specifies which network interface the server part of
# XmlRpc should bind to (if it is active).  If not specified, the
# server will bind to all addresses configured for your host.
#
# Default: 127.0.0.1

#services.XmlRpcService.address=127.0.0.1

# This property specifies which TCP port the web server part of
# XmlRpc should listen on (if it is active).
#
# Default: 12345

services.XmlRpcService.port=12345

# If any classes are specified here, the Service will create an
# instance of them here and start up a listener on the specified
# port.
#
# Note that the handlers demonstrated are not very useful.  You
# will have to invent your own services.  They do however
# illustrate that any class with a default constructor can be
# added here
#
# The handler parameter without further extension determines
# the default handler for the service
#
# Default: no classes are specified by default

#services.XmlRpcService.handler.$default=java.util.Hashtable
#services.XmlRpcService.handler.stringhandler=java.lang.String

# The following properties allow the transfer of data between
# separate Turbine applications running on different servers.
# This allows B2B type behavior such as sending database
# updates in the form of XML or whatever type of data
# that needs to be shared between Turbine applications
# running on separate servers.

services.XmlRpcService.handler.file = org.apache.turbine.services.xmlrpc.util.FileHandler
services.XmlRpcService.paranoid = false
services.XmlRpcService.acceptClient = 192.168.1.*
services.XmlRpcService.denyClient =

# Do we want a secure server

services.XmlRpcService.secure.server = false

# Secure server options

services.XmlRpcService.secure.server.option.java.protocol.handler.pkgs = \
    com.sun.net.ssl.internal.www.protocol

services.XmlRpcService.secure.server.option.security.provider = \
    com.sun.net.ssl.internal.ssl.Provider

services.XmlRpcService.secure.server.option.security.protocol = TLS

# You probably want to keep your key stores and trust stores
# clear out of your webapp.

services.XmlRpcService.secure.server.option.javax.net.ssl.keyStore = /tmp/keystore
services.XmlRpcService.secure.server.option.javax.net.ssl.keyStoreType = jks
services.XmlRpcService.secure.server.option.javax.net.ssl.keyStorePassword = password
services.XmlRpcService.secure.server.option.javax.net.ssl.trustStore = /tmp/truststore
services.XmlRpcService.secure.server.option.javax.net.ssl.trustStoreType = jks
services.XmlRpcService.secure.server.option.javax.net.ssl.trustStorePassword = password

services.XmlRpcService.secure.server.option.sun.ssl.keymanager.type = SunX509
services.XmlRpcService.secure.server.option.sun.ssl.trust.manager.type = SunX509

# These values should be set to 'all' for debugging purposes.

services.XmlRpcService.secure.server.option.javax.net.debug = none
services.XmlRpcService.secure.server.option.java.security.debug = none

# -------------------------------------------------------------------
#
#  P O O L  S E R V I C E
#
# -------------------------------------------------------------------

# Default capacity of pools of the Object pooling service.
#
# Default: 128
services.PoolService.pool.capacity = 128

# Class specific capacities used instead of the default if specified.
#
#services.PoolService.pool.capacity.org.apache.turbine.services.rundata.DefaultTurbineRunData=512

# -------------------------------------------------------------------
#
#  F A C T O R Y  S E R V I C E
#
# -------------------------------------------------------------------

# A comma separated list of classloaders (very optional)
#
# Example: org.foo.bar.MyClassLoader, org.ack.joe.YourClassLoader
#
#services.FactoryService.class.loaders=

# Customized factories to be used instead of the default factory.
# E.g. to instantiate XML parsers, SSL sockets, etc., which require
# specific instantiation not supported by the default factory.
# The property name is prefixed with "factory" followed by the
# name of the production class. The value is the class name of
# the factory implementing the Factory interface. The factory
# will be instantiated by using the service itself.
#
# Examples:
#
# services.FactoryService.factory.javax.xml.parsers.DocumentBuilder=org.foo.xml.DomBuilderFactory
# services.FactoryService.factory.javax.xml.parsers.SAXParser=org.foo.xml.SaxParserFactory
# services.FactoryService.factory.java.net.ServerSocket=org.foo.net.SslServerSocketFactory

#--------------------------------------------------------------------
#
# X S L T  S E R V I C E
#
#--------------------------------------------------------------------

services.XSLTService.path = /path/to/stylesheets
services.XSLTService.cache = false

# -------------------------------------------------------------------
#
#  I N T A K E   S E R V I C E
#
# -------------------------------------------------------------------

# The location of the xml file specifying valid inputs
#
# If you need to define multiple definition files, you can should
# seperate them with commas.
#
# Default: WEB-INF/conf/intake.xml
#
services.IntakeService.xml.path=WEB-INF/conf/intake.xml

# This file is used to cache the XML definitions after they are
# parsed.  It provides for a small performance gain on startup.
#
# Note: Even if you have multiple XML definition files, you will
# only need one serialization file!
#
# Default: WEB-INF/appData.ser
#
services.IntakeService.serialize.path=WEB-INF/appData.ser

#--------------------------------------------------------------------
#
# P A R A M E T E R  P A R S E R
#
#--------------------------------------------------------------------
#
# This variable controls the case folding applied to URL variable
# names.
#
# Allowed values: none, lower, upper
# Default: lower
#

url.case.folding=lower

# -------------------------------------------------------------------
#
#  C O M P O N E N T   S E R V I C E
#
# -------------------------------------------------------------------
# Components implementing the lifecycle interfaces can be loaded,
# configured and initialized by Turbine
# -------------------------------------------------------------------
# THE COMPOINENTSERVICE IS DEPRECATED!!!!
# You should use the AvalonComponentService instead!
# -------------------------------------------------------------------

#
# Here you define the names of the various components to load. These
# names are used as identifiers later so you can choose them freely. It
# is, however, sensible to use the same names as the component projects
# that you want to load.
#
services.ComponentService.name = torque

#
# This is the class of the component to be loaded.
#
# It must implement the org.apache.stratum.lifecycle.Initializable and
# org.apache.stratum.lifecycle.Configurable interface to be loaded.
#
# It may implement the org.apache.stratum.lifecycle.Disposable interface.
# If it does, the Component is disposed at shutdown (Servlet destroy()) time.
#
services.ComponentService.torque.classname = org.apache.torque.Torque

#
# This is the path to the Config file of the Component. It is relative
# to the Root of the Application (either the Webroot given by the Servlet
# Container or the Root given to TurbineConfig at startup time)
#
services.ComponentService.torque.config = /WEB-INF/conf/Torque.properties

#
# Properties can be given directly to Components. This sets the "foo"
# property for torque to "bar".
#
#services.ComponentService.torque.property.foo = bar

#
# This is an example of how to load Fulcrum as a component
#
#services.ComponentService.name = fulcrum
#services.ComponentService.fulcrum.classname = org.apache.fulcrum.Fulcrum
#services.ComponentService.fulcrum.config = /WEB-INF/conf/Fulcrum.properties

# -------------------------------------------------------------------
#
#  A V A L O N   C O M P O N E N T   S E R V I C E
#
# -------------------------------------------------------------------
# Components implementing the Avalon lifecycle interfaces can be loaded,
# configured and initialized by Turbine
# -------------------------------------------------------------------

#
# Name and location to the configuration file for the components.
#
services.AvalonComponentService.componentConfiguration = WEB-INF/conf/componentConfiguration.xml

#
# Name and location to the configuration file for the component roles.
#
services.AvalonComponentService.componentRoles = WEB-INF/conf/roleConfiguration.xml

#
# If you want to run Torque from the Avalon Component Service, you must load it
# at startup time
services.AvalonComponentService.lookup = org.apache.torque.avalon.Torque


# -------------------------------------------------------------------
#
#  S E S S I O N   S E R V I C E
#
# -------------------------------------------------------------------

services.SessionService.earlyInit=true

# -------------------------------------------------------------------
#
#  A D D I T I O N A L  P R O P E R T I E S
#
# -------------------------------------------------------------------
# The full path name to an additional properties file. Properties in
# this file will be included in this property set. Duplicate name
# values will be replaced, so be careful.
#
# Default: none
# -------------------------------------------------------------------


