#
# Items in this section will be available from the configuration
# object's root, at least for the time being

[Global]
DEBUG                 = 0
no_promotion          = 0
ConfigurationRevision = $Revision: 1.20 $

#
# Information about how to send email and some system email addresses

[mail]
smtp_host     = 127.0.0.1
admin_email   = admin@mycompany.com
content_email = content@mycompany.com


#
# Define the default datasource names to use when an SPOPS object
# doesn't specify one

[datasource]
default_connection_db   = main
default_connection_ldap = main


#
# Enter your database connection parameters in the 'main' entry
# -- see 'OpenInteract::DBI' for more information about
# them). Briefly:
#
#   driver_name
#     name of driver -- second part of the DBI DSN
#   dsn
#     last part of the DBI DSN
#   username  
#     who do we login as?
#   password
#     what password do we login with?
#   db_name (optional)
#     name of database -- you normally specify this in 'dsn' and you
#     only need this if you're sharing connections among multiple
#     databases. Most people can leave it empty.
#   db_owner  (optional)
#     who owns the db? This should only be set if your
#     database requires it -- most people can leave it empty.
#   sql_install  (optional)
#     if name of driver and name of SQL installer to use differ,
#     put the SQL installer here. For instance, if you use
#     DBD::ODBC and Sybase, you'd put 'ODBC' under the
#     'driver_name' and 'Sybase' under 'sql_install'
#   long_read_len
#     length of longest TEXT/LOB to read (see DBI docs under
#     'LongReadLen')
#   long_trunc_ok
#     whether it's okay to truncate TEXT/LOB values that exceed
#     long_read_len (see DBI docs under 'LongTruncOk')

[db_info main]
driver_name   =
dsn           =
username      =
password      =
db_name       =
db_owner      =
sql_install   =
long_read_len = 65536
long_trunc_ok = 0


#
# Enter your LDAP connection information if you're using
# LDAP. Briefly:
#
#   host
#     The IP address/hostname with the LDAP server
#   port
#     The port the LDAP server is running on (usually 389)
#   bind_dn
#     The distinguished name of the record to bind as. If left
#     blank you will be doing an anonymous bind and the value for
#     'bind_password' will not be used.
#   bind_password
#     Password to use with 'bind_dn' to bind to the server.
#   base_dn
#     Can be used by modules to determine the Base DN where
#     objects should be stored. This might be something like
#     'dc=MyCompany,dc=com'
#   timeout
#     Value (in seconds) to wait for a timed out connection
#   version
#     LDAP protocol version. Use '3' if you're using SASL
#   sasl
#     Set to a true value to use SASL authentication
#   debug
#     See entry in Net::LDAP->new() for possible values

[ldap_info main]
host          = 
port          =
bind_dn       =
bind_password =
base_dn       =
timeout       = 120
version       = 2
sasl          = 0
debug         = 0


#
# If you're using a database-backed session store, you just need
# to change 'class' to the relevant storage module (e.g.,
# 'Apache::Session::Postgres')
#
# If you're not using a database-backed session store, you should be
# able to change 'class' to something like 'Apache::Session::File' and
# then create relevant entries in 'session_info.params' below (e.g.,
# 'Directory' and 'LockDirectory' for 'Apache::Session::File').
# 
# Note that you can also set the expiration for the session
# cookie -- if you set it to be 'undef' the cookie will be
# 'short-lived', meaning it will expire when the user shuts
# down the browser. Otherwise, pass something like the
# following: '+3d' (3 days); '+3M' (3 months); '+480s' (480
# seconds); '+15h' (15 hours); '+1y' (1 year)
#
# The setting for 'expires_in' is in minutes. If set to 0 or undefined
# the sessions will never be time-expired.
#
# The 'cache_*' settings determine whether the user, group and theme
# objects should be stored in the session. If set to 0 we fetch this
# information every request. If set to a positive number, we store the
# objects in the session and refresh it every x minutes.


[session_info]
class       = Apache::Session::MySQL
expiration  = +3M
expires_in  = 0
cache_user  = 30
cache_group = 30
cache_theme = 30


# Add whatever key/value parameters are necessary for your session
# implementation

[session_info params]


#
# Unless you're using LDAP for authentication, you probably don't
# want to change these in the beginning. However, you might want
# to change them (particularly the 'theme' value) as your site
# grows.

[default_objects]
superuser        = 1
supergroup       = 1
theme            = 1
public_group     = 2
site_admin_group = 3


#
# Define the box handler and the handler to take care of the
# default system boxes. The 'custom_box_handler' entry is for you
# to fill in if you'd like -- you can add other boxes to every
# page, add them depending on the request type, etc.

[box]
handler            = %%WEBSITE_NAME%%::Handler::Box
default_template   = base_box::main_box_shell
default_separator  =
default_method     = 
system_box_handler = %%WEBSITE_NAME%%::Handler::SystemBoxes
system_box_method  =
custom_box_handler =
custom_box_method  =


#
# Define login information. In the future you'll be able to define
# the object(s) used for logging in and possibly more.
#
# crypt_password: Set whether you want to store encrypted passwords in
# the database (set by default and recommended). Note that if you're
# using LDAP or some SMB authentication you want to set this to '0'
# since the backend will take care of that for you.
#
# *_field: These are the fields used to read in the username and
# password from the user and are used in the 'login_box' component
# shipped with OpenInteract and found in the 'base_box' package. Note
# that if 'remember_field' is not defined then we don't display the
# checkbox in the login box.
#
# custom_*: Class and method that specify an code that executes after
# the authentication process is complete (Optional)
#
# always_remember: if true then we always remember the login (and
# don't display the checkbox)
#
# required: if set a login is always required; if the user isn't
# logged in she'll be sent to the URL in 'required_url'
#
# required_skip: zero or more regular expressions indicating the areas
# of the site that don't require a login even if 'required' is true

[login]
crypt_password       = 1
login_field          = login_login_name
password_field       = login_password
remember_field       = login_remember
custom_handler       = 
custom_method        = 
custom_fail_method   = 
always_remember      = 0
required             = 0
required_url         = /login.html
required_skip        = ^/$
required_skip        = ^/index.html$
required_skip        = ^/Login.*
required_skip        = ^/help.*

#
# Various simple miscellaneous display items can go here:
#
# use_meta_redirect: if set to 1 we'll create a redirect using META
# tags (old way)
#
# use_http_redirect: if set to 1 we'll perform a redirect using HTTP
# headers (new way); overrides 'use_header_redirect' if set
#
# show_redirect_message: if using 'use_meta_redirect' controls whether
# we display a message in the page using META tags

[display_info]
use_meta_redirect     = 1
use_http_redirect     = 0
show_redirect_message = 0

#
# Page directives come before the rest of the URL and
# control some fundamental aspect of display. For instance,
# 'NoTmpl' before a URL will not put the content in a
# template, and 'Popup' before a URL will put the content
# into the template used for popup windows (usually a really
# simple one that you set in your theme). For all directives
# except the 'No' ones the key  should be found as the value
# in 'template_names' below which matches up to a key in the
# theme. (Slightly confusing.)

[page_directives]
Popup      = simple_template
NoTemplate = 1
NoTmpl     = 1


#
# Define the keys under which we store our important
# template names in a theme. This way we can use simple
# keywords to refer to the page definition templates. (NOTE:
# This is not used quite yet but should be implemented
# shortly.)

[template_names]
main   = main_template
simple = simple_template

#
# Define information used by the template processing modules. 
#
# template_ext: Default extension for template files. We also check
# for files with a given name and no extension
#
# cache_size: How many templates the Template Toolkit should cache in
# memory
#
# compile_cleanup: If true, will remove all compiled files on server
# restart (production boxes can set this to false so that startup
# costs aren't so heavy)
#
# compile_ext: Extension for compiled TT files. Most people won't (or
# shouldn't) care about this.
#
# custom_init_*: Class and method specifying an action that's called
# before the template object is initialized. Here you can define a
# PRE_PROCESS template (for instance, with BLOCKs having all your
# common widgets) or set any of the other configuration information
# specified in 'perldoc Template::Manual::Config'. If you use this,
# set 'custom_init_class' to a class that has a method specified in
# 'custom_init_method' or use the default ('handler')
#
# custom_variable_*: Class and method specifying an action that's
# called before every template is processed. If you have common
# BLOCKs, formatting elements or other items that are not full-blown
# OI components, you can add them to the template variable hash. If
# you use this, set 'custom_variable_class' to a class that has a
# method specified in 'custom_variable_method' or use the default
# ('handler').

[template_info]
template_ext           = tmpl
cache_size             = 75
compile_cleanup        = 1
compile_ext            = .ttc
custom_init_class      =
custom_init_method     =
custom_variable_class  =
custom_variable_method =


#
# Override filenames. Set thse to the filename(s) with your override
# rules. (If the files aren't defined nothing bad will happen.) You
# probably do not need to change them.

[override]
spops_file            = conf/override_spops.ini
action_file           = conf/override_action.ini


#
# Information about errors - you shouldn't need to change any items

[error]
error_object_class    = %%WEBSITE_NAME%%::ErrorObject
default_error_handler = OpenInteract::Error::System


#
# Setup aliases so that you can retrieve a class name from $R;
# for instance: $R->cookies will return
# 'OpenInteract::Cookies::Apache' by default.. Generally the only
# one you might possibly want to change is the first one, to
# refer to a different cookie get/set scheme (Win32 users may
# need to use 'OpenInteract::Cookies::CGI')

[system_alias]
site_template   = OpenInteract::SiteTemplate
sitetemplate   = OpenInteract::SiteTemplate
cookies         = OpenInteract::Cookies::Apache
session         = OpenInteract::Session::DBI
template        = OpenInteract::Template::Process
repository      = OpenInteract::PackageRepository
package         = OpenInteract::Package
error           = OpenInteract::Error
auth            = OpenInteract::Auth
auth_user       = OpenInteract::Auth
auth_group      = OpenInteract::Auth
security_object = %%WEBSITE_NAME%%::Security
object_security = %%WEBSITE_NAME%%::Security
security        = %%WEBSITE_NAME%%::Security
secure          = SPOPS::Secure
error_handler   = OpenInteract::Error::Main
component       = OpenInteract::Component

#
# Define what your system uses for certain IDs. Defaults are fine
# for 95% of users -- the most common need for changing these is
# if you're using LDAP to store user and group objects.
#
# Currently accepted values: 'int', 'char'

[id]
user_type  = int
group_type = int


#
# Directories used by OpenInteract. Only change these if you know
# what you're doing. Note that 'base' and 'interact' are replaced
# when the server starts up, so any values you set there will
# just be overwritten.

[dir]
base          = 
interact      = 
error         = $BASE/error
html          = $BASE/html
log           = $BASE/logs
cache_content = $BASE/cache/content
cache_tt      = $BASE/cache/tt
config        = $BASE/conf
data          = $BASE/data
mail          = $BASE/mail
help          = $HTML/help
overflow      = $BASE/overflow
download      = $HTML/downloads
upload        = $BASE/uploads
template      = $BASE/template


#
# These are overwritten at server startup

[server_info]
stash_class   = 
request_class = 
website_name  =


#
# Define information used by the SPOPS/content cache
#
# use: If true, caching is on; otherwise caching is disabled 
#
# use_spops: If true, caching for SPOPS objects is on; otherwise it is
# disabled
#
# default_expire: Each caching call can set its own expiration, but
# if not this is used. (In seconds)
#
# class: Cache implementation to use. File-based caching is the only
# implementation so far.
#
# max_size: Max size of the cache. (In bytes)
#
# directory_depth: Cache::FileCache will divide cached items into
# subdirectories so too many don't clog a single directory. This
# describes the depth. (Default is usually fine.)


[cache_info data]
use             = 0
use_spops       = 0
default_expire  = 600
class           = OpenInteract::Cache::File
max_size        = 2000000
cleanup         = 1
directory_depth = 3

[cache_info template]
expire   = 900


#
# Define the main conductor; if you create additional
# interfaces for your website(s) (e.g. SOAP) then you
# can add another conductor here.

[conductor main]
class  = OpenInteract::UI::Main
method = handler


# The action table defines how OpenInteract responds to URLs; the only
# information we hold here is for default information ('action_info
# default) -- information that does not need to be specified in the
# individual package's 'conf/action.perl' file; we also define how
# OpenInteract should respond to a null action (under 'action_info
# none') and how it should respond to an action that is not found
# (under 'action_info not_found')

[action_info default]
template_processor = OpenInteract::Template::Process
conductor          = main
method             = handler    

[action_info none]
redir = page

[action_info not_found]
redir = page
