#
# Copyright (c) 2009-2013. JoshuaTree. All Rights Reserved.
#

########################################################################
# 0. About the fortress build.properties file
########################################################################

# Use this property file to specify environment settings specific to your environment and fortress runtime components.
# These parameters will be loaded into the following locations by the Fortress during the init targets within the build.xml ant management utility:
# a. fortress.properties - Fortress' configuration file tells fortress runtime how to connect to remote resources
# b. refreshLDAPData.xml - Used by fortress to initialize and base load the LDAP DIT data structures.  Fortress also stores runtime params inside 'ou=Config' container on remote server.
# c. slapd.conf - This will be used to configure the runtime OpenLDAP server (slapd) if applicable.

########################################################################
# 1. BEGIN BASIC CONFIGURATION SECTION
########################################################################

# Use this Fortress Core version:
version=1.0-RC31

# Enable local.mode property if your machine does not have connection to Internet and runtime dependencies have already downloaded to FORTRESS_HOME/lib folder on this machine:
#local.mode=true

# Set sudo.pw if running 'init-slapd' on Linux machine and sudo access required, otherwise leave this value blank
# The sudo.pw variable must be uncommented and left empty iff installing Symas-OpenLDAP package onto Redhat Linux platform:
sudo.pw=

# If encryption of LDAP &/or HTTP service account passwords (e.g. cfg.root.pw, cfg.log.root.pw and http.pw params) is required, this field must be set.
# If encryption of service accounts not needed, leave this value blank, and set the password values for cfg.root.pw, cfg.log.root.pw and http.pw to be their clear text value.
# Use any arbitrary value here but whatever used must also be key used to encrypt.
crypto.prop=abcd12345

########################################################################
# 2. BEGIN HTTP CONFIGURATION SECTION (Ignore if using LDAPv3):
########################################################################

# The following optional HTTP parameters are needed when Fortress client communicates though EnMasse HTTP proxy (rather than LDAP) server:
# Setting the enable.mgr.impl.rest to 'true' sets Fortress instance to use HTTP services rather than LDAPv3 protocol. Default value is 'false':
# Using REST/HTTP allows Fortress communications to pass through firewalls and other non-LDAP network intermediaries.
enable.mgr.impl.rest=false
#enable.mgr.impl.rest=true

# This user account is added automatically during init-slapd or init-apacheds target via 'FortressDemoUsers.xml' policy file:
http.user=demouser4
http.pw=gX9JbCTxJW5RiH+otQEX0Ja0RIAoPBQf
http.host=localhost
http.port=8080

########################################################################
# 3. BEGIN MULTITNENACY SECTION (Set tenant=HOME if not multitenant):
########################################################################
# The tenant property is used by Ant targets 'admin', 'cli', 'console', 'test-full', and 'test-samples':
tenant=HOME
#tenant=Client123
#tenant=Client456
#tenant=Client789

########################################################################
# 4. BEGIN LDAP SERVER CONFIGURATION SECTION: (Ignore if using HTTP):
########################################################################

# This param tells fortress what type of ldap server in use:
ldap.server.type=openldap
#ldap.server.type=apacheds
# This is the default:
#ldap.client.type=unboundid
# To override and use apache ldap API uncomment this:
#ldap.client.type=apache

# These parameters point fortress to LDAP host:
ldap.host=localhost
ldap.port=389
#ldap.host=192.168.1.102
#ldap.port=10389

# These are used to construct suffix for DIT, i.e. dc=example,dc=com.
suffix.name=jts
suffix.dc=us
#suffix.name=example
#suffix.dc=com
# Do not change suffix param unless you know what you are doing:
suffix=dc=${suffix.name},dc=${suffix.dc}

# These are the connection parameters used for LDAP service account:
root.dn=cn=Manager,${suffix}
#root.dn=uid=admin,ou=system
# Used to load OpenLDAP admin root password in 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=W7T0G9hylKZQ4K+DF8gfgA==

# This specifies the number of default LDAP connections to maintain in the pool:
admin.min.conn=1
admin.max.conn=10
# This speicifes the number of user LDAP connections (used for user authentication operations only) to maintain in the pool:
# User Pool:
user.min.conn=1
user.max.conn=10

####################################################################################
# 5. BEGIN OPENLDAP SERVER CONFIGURATION SECTION: (Ignore if using HTTP or ApacheDS):
####################################################################################

# This speicifes the number of audit logging LDAP connections (used for audit logging operations only) to maintain in the pool:
# Audit Pool:
log.min.conn=1
log.max.conn=3

#These are passwords used for LDAP audit log service accounts:
# Audit Pool:
log.root.dn=cn=Manager,${log.suffix}
# This OpenLDAP slapd logger password is bound for slapd.conf and was encrypted using 'slappasswd' command:
log.root.pw={SSHA}pSOV2TpCxj2NMACijkcMko4fGrFopctU
# This OpenLDAP slapd logger password will be stored using fortress' remote configuration utility and was encrypted using 'encrypt' target in build.xml:
cfg.log.root.pw=W7T0G9hylKZQ4K+DF8gfgA==
# More Audit Config:
log.suffix=cn=log
log.ops=logops bind writes compare
#log.ops=###AuditDisabled

# OpenLDAP MDB Backend config is default setting for Fortress::
db.type=mdb
dflt.rdrs=maxreaders 64
dflt.size=maxsize 1000000000
log.rdrs=maxreaders 64
log.size=maxsize 1000000000
dflt.bdb.cache.size=
dflt.bdb.cache.idle.size=
log.bdb.cache.size=

#base.load.script=FortressDemoUsers.xml

# Do not change any params below this line unless you know what you are doing:

## If using Symas OpenLDAP on NIX, uncomment this section:
db.root=/var/openldap
openldap.root=/opt/symas
slapd.dir=${openldap.root}/etc/openldap
# to start debug mode:
#slapd.start=${openldap.root}/lib/slapd -h ldap://${ldap.host}:${ldap.port} -f ${openldap.root}/etc/openldap/slapd.conf -F ${openldap.root}/etc/openldap -d -1
pid.dir=/var/symas

db.dir=${db.root}/dflt
db.hist.dir=${db.root}/hist
db.bak.dir=${db.root}/backup/dflt
db.bak.hist.dir=${db.root}/backup/hist

# unless you know what you're doing, take the default:
log.dbnosynch=dbnosync
#log.dbnosynch=
dflt.dbnosynch=dbnosync
#dflt.dbnosynch=
log.checkpoint=checkpoint   64 5
dflt.checkpoint=checkpoint	64 5

## If using Debian/Ubuntu OpenLDAP, uncomment this section:
#unless you know what you're doing, take the default:
#db.dir=/var/lib/ldap
#db.hist.dir=${db.dir}/hist
#db.bak.dir=/var/lib/ldap-backup/db
#db.bak.hist.dir=/var/lib/ldap-backup/hist
#slapd.dir=/etc/ldap
#pid.dir=/var/run/slapd
#slapd.module.dir=/usr/lib/ldap
#slapd.start=slapd -h ldap://${ldap.host}:${ldap.port} -f /etc/ldap/slapd.conf


###########################################################################################
# 6. BEGIN SYMAS-OPENLDAP INSTALL CONFIGURATION SECTION (Ignore if using ApacheDS or HTTP):
###########################################################################################

## If using Symas OpenLDAP, uncomment single option from #1 - 8 below:
# Each of the options are used for a particular Symas-OpenLDAP platform.

# Option 1 - Debian i386 Silver:
platform=Debian-Silver-i386
#slapd.install=dpkg -i symas-openldap-silver.32_2.4.35-1_i386.deb
#slapd.uninstall=dpkg -r symas-openldap-silver
install.image.dir=/home/smckinn/archives/debian32
slapd.module.dir=${openldap.root}/lib/openldap
slapd.start=${openldap.root}/lib/slapd -h ldap://${ldap.host}:${ldap.port} -f ${openldap.root}/etc/openldap/slapd.conf -F ${openldap.root}/etc/openldap

# Option 2 - Debian 64-bit Silver:
#platform=Debian-Silver-x86-64
#slapd.install=dpkg -i symas-openldap-silver.64_2.4.35-1_amd64.deb
#slapd.uninstall=dpkg -r symas-openldap-silver
#install.image.dir=/home/smckinn/archives/debian64
#slapd.module.dir=${openldap.root}/lib64/openldap
#slapd.start=${openldap.root}/lib64/slapd -h ldap://${ldap.host}:${ldap.port} -f ${openldap.root}/etc/openldap/slapd.conf -F ${openldap.root}/etc/openldap

# Option 3 - Debian i386 Gold:
#platform=Debian-Gold-i386
#slapd.install=dpkg -i symas-openldap-gold.32_2.4.29-1_i386.deb
#slapd.uninstall=dpkg -r symas-openldap-gold.32

# Option 4 - Redhat i386 Silver:
#platform=Redhat-Silver-i386
#slapd.install=rpm -Uvv symas-openldap-silver.i386-2.4.35-1.rpm
#slapd.uninstall=rpm -e symas-openldap-silver
#install.image.dir=/home/smckinn/archives/redhat32
#slapd.module.dir=${openldap.root}/lib/openldap
#slapd.start=${openldap.root}/lib/slapd -h ldap://${ldap.host}:${ldap.port} -f ${openldap.root}/etc/openldap/slapd.conf -F ${openldap.root}/etc/openldap

# Option 5 - Redhat i386 Gold:
#platform=Redhat-Gold-i386
#slapd.install=rpm -Uvv symas-openldap-gold.i386-2.4.28-1.rpm
#slapd.uninstall=rpm -e symas-openldap-gold

# Option 6 - Redhat 64-bit Silver:
#platform=Redhat-Silver-x86-64
#slapd.install=rpm -Uvv symas-openldap-silver.x86_64-2.4.35-1.rpm
#slapd.uninstall=rpm -e symas-openldap-silver
#install.image.dir=/home/smckinn/archives/redhat64
#slapd.module.dir=${openldap.root}/lib64/openldap
#slapd.start=${openldap.root}/lib64/slapd -h ldap://${ldap.host}:${ldap.port} -f ${openldap.root}/etc/openldap/slapd.conf -F ${openldap.root}/etc/openldap

# Option 7 - Windows 32-bit Silver:
#platform=Windows-Silver-i686
#slapd.exe.drive=C
#slapd.exe.dir=OpenLDAP
#fortress.home.drive=C
#windows=true
#install.image.dir=/home/smckinn/archives/win32
#install.image.loc=symas-openldap
#install.image.exe=symas-openldap-silver-win.NT_i686-2.4.32.2
#uninstall.image.exe=uninstall-symas-openldap-silver-win
#pid.dir=.
#slapd.exe.location=${slapd.exe.drive}:\\${slapd.exe.dir}
#slapd.exe.location2=${slapd.exe.drive}:/${slapd.exe.dir}
#db.root=${slapd.exe.location2}/db
#slapd.dir=${slapd.exe.location2}/etc/openldap
#slapd.module.dir=${slapd.exe.location2}/openldap
#dflt.size=maxsize 100000000
#log.size=maxsize 100000000

# Option 8 - Windows 32-bit Gold
#platform=Windows-Gold-i686
#windows=true
#slapd.exe.dir=/JavaTools/symas-openldap-gold-win
#db.dir=/JavaTools/symas-openldap-gold-win/ldap
#db.hist.dir=${db.dir}/hist
#db.bak.dir=/JavaTools/symas-openldap-gold-win/ldap-backup/db
#db.bak.hist.dir=/JavaTools/symas-openldap-gold-win/ldap-backup/hist
#slapd.dir=/JavaTools/symas-openldap-gold-win/etc/ldap
#pid.dir=.
#slapd.module.dir=/JavaTools/symas-openldap-gold-win/openldap
#slapd.start=slapd.exe -f \JavaTools\symas-openldap-gold-win\etc\openldap\slapd.conf

## If Fortress Builder used to install OpenLDAP, uncomment and set value to point for Fortress Builder home folder:
#builder.home=/home/smckinn/tmp/fortress/8/fortressBuilder-Debian-Silver-i386-1.0.0-rc6

########################################################################################
# 7. BEGIN BUILDER INSTALL CONFIGURATION SECTION (Do not modify):
########################################################################################

# Only needed for EnMasse setup:
M2_HOME=./apache-maven
#M2_HOME=/usr/share/maven2

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

#These props are for 'Builder' target and have been moved here: "${user.home}/build.properties"
openldap.install.artifact.dir=${basedir}
#openldap.install.artifact.dir=${basedir}/symas-openldap
#tomcat.image.dir=/home/smckinn/archives/tomcat/apache-tomcat-7.0.27
#maven.image.dir=/home/smckinn/archives/java/apache-maven-3.0.4