#
#  This file contains defaults for development.  If you are cross-
#  developing in multiple environments, just change the defaults
#  in this file.
#
#  Any changes in this file will be reflected in the default
#  jspwiki.properties-file when it is run.
#
@appname@=JSPWiki
@pagedir@=/p/web/www-data/jspwiki/
@logfile@=/tmp/jspwiki.log
@securitylog@=/tmp/security.log
@spamlog@=/tmp/spamlog.log

@tests.pagedir@=/tmp/testrepository
@tests.workdir@=/tmp/testworkdir
@tests.logfile@=/tmp/jspwikitests.log

@tests.auth.filename=/tmp/testrepository/auth.txt
@tests.filter@=tests/etc/filters.xml

# JavaMail configuration
@mail.smtp.host@=127.0.0.1
@mail.smtp.port@=25
@mail.from@=JSPWiki <JSPWiki@localhost>
#@mail.smtp.account@=foo
#@mail.smtp.password@=foopassword

#  Enable these if you wish to create a static content tarball
#  for use with Apache or another front-end web server.
#  You should specify user and group names that make sense for
#  your environment.

static.user = apache
static.group = daemon
jks.password = jspwiki

#
#  If you are running web tests, these need to be set to your
#  Tomcat admin name and password.
#
tomcat.admin = admin
tomcat.password = greyroot
tomcat.host = localhost
tomcat.port = 8080
tomcat.protocol = http

#
#  JDBC testing properties
#
jdbc.driver.id=hsql
jdbc.driver.jar=tests/lib/hsqldb.jar
jdbc.driver.class=org.hsqldb.jdbcDriver
jdbc.driver.url=jdbc:hsqldb:hsql://localhost/jspwiki
jdbc.admin.id=SA
jdbc.admin.password=
jdbc.user.id=jspwiki
jdbc.user.password=password

#
#  Running webtests
#

#  Which browser to use?
webtests.browser=*firefox
