#
# This work is part of OpenLDAP Software <http://www.openldap.org/>.
#
# Copyright 1998-2014 The OpenLDAP Foundation.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted only as authorized by the OpenLDAP
# Public License.
#
# A copy of this license is available in the file LICENSE in the
# top-level directory of the distribution or, alternatively, at
# <http://www.OpenLDAP.org/license.html>.
#
# Fortress slapd.conf default settings.
# Note: Directives that begin with '@' are substitution parms for Fortress' build.xml 'init-slapd' target.

#Use this property file to specify environment specific settings.
version=1.0-RC39

# Enable this property if computer does not have external connection to Internet:
#local.mode=true

tomcat-realm.conf=<Realm className="us.jts.sentry.tomcat.Tc7AccessMgrProxy" debug="0" resourceName="UserDatabase" containerType="Tomcat7" realmClasspath="${user.dir}/conf:${user.dir}/dist/fortressSentry-${version}.jar"/>
tomcat.dir=../apache-tomcat

# Host name and port of LDAP DIT:
ldap.host=localhost
ldap.port=389

# These are for setting up SSL with OpenLDAP Server:
#enable.ldap.ssl=true
#enable.ldap.ssl.debug=true
#trust.store=/fully/qualified/path/and/file/name /to/truststore
#trust.store.password=changeit
#trust.store.set.prop=true

# example suffix, dc=example,dc=com:
suffix.name=openldap
suffix.dc=org
suffix=dc=${suffix.name},dc=${suffix.dc}

# Admin Pool:
root.dn=cn=Manager,${suffix}
# This OpenLDAP admin root password is bound for slapd.conf and was encrypted using 'slappasswd' command:
root.pw={SSHA}pSOV2TpCxj2NMACijkcMko4fGrFopctU
# This OpenLDAP admin root pass is bound for fortress.properties and was encrypted using 'encrypt' target in build.xml:
cfg.root.pw=secret
admin.min.conn=1
admin.max.conn=10

# User Pool:
user.min.conn=1
user.max.conn=10

# Setting properties for jars files overrides (if need to use different versions than in build.xml)
#junit.jar=${lib.dir}/junit-4.9.jar
#log4j.jar=${lib.dir}/log4j-1.2.16.jar
#commons-config.jar=${lib.dir}/commons-configuration-1.6.jar
#commons-lang.jar=${lib.dir}/commons-lang-2.4.jar
#commons-collections.jar=${lib.dir}/commons-collections-3.2.1.jar
#commons-pool.jar=${lib.dir}/commons-pool-1.5.2.jar
#commons-logging.jar=${lib.dir}/commons-logging-1.1.1.jar
#unboundsdk.jar=${lib.dir}/unboundid-ldapsdk-se.jar
#jgraph.jar=${lib.dir}/jgrapht-jdk1.6.jar
