#
# config-reference.tcl.txt --
#
#      Annotated AOLserver Configuration Reference
#
#      Nearly every AOLserver configuration variable is represented
#      here.  This file is provided as a reference -- please do not load
#      this into your server.
#

#
# $Header: /cvsroot/aolserver/aolserver.com/docs/admin/config-reference.tcl.txt,v 1.4 2002/03/20 22:10:33 kriston Exp $
#

#
# Global parameters
#
ns_section "ns/parameters"
ns_param   home            $home     ;# Server's home directory

# Data structures
ns_param   dstringcachemaxentries 10 ;# Max no. of Dstrings to put on cache
ns_param   dstringcachemaxsize [expr 3*1024]
ns_param   iobufsize       16000     ;# Buffer size suitable for I/O

# Limits
ns_param   keepalivetimeout 30       ;# Max time conn is kept alive (keepalive)
                                     ;#   (set to 0 to disable keepalive)
ns_param   listenbacklog   32        ;# Max length of pending conn queue
ns_param   maxkeepalive    100       ;# Max no. of conns in keepalive state
ns_param   schedmaxelapsed 2         ;# Warn when waiting on really long procs
ns_param   shutdowntimeout 20        ;# Secs to wait on shutdown if open conns

# Server logging
ns_param   dev             true      ;# Display logging with "Dev" severity
ns_param   debug           false     ;# Display logging with "Debug" severity
ns_param   logexpanded     false     ;# true = double-spaced server.log
ns_param   logroll         false     ;# Roll server.log every 24 hours.
ns_param   maxbackup       10        ;# Max number of old server.log files
ns_param   pidfile         "nspid"   ;# PID of server (named "nspid.PORT")
ns_param   serverlog       "server.log" ;# Filename of server.log

# DNS tuning
ns_param   dnscache        true      ;# In-memory cache of DNS lookups
ns_param   dnscachetimeout 60        ;# How long to keep hostnames in cache

# Miscellaneous
ns_param   checkexitcode   false     ;# Check exit code on forked process
ns_param   crashcmd        ns_crash  ;# A Tcl command that dumps core.
ns_param   mailhost        smtp.yourcompany.com ;# SMTP host for ns_sendmail


#
# Thread library (nsthread) parameters
#
ns_section "ns/threads"
ns_param   mutexmeter      true      ;# measure lock contention
ns_param   stacksize       [expr 128*1024]  ;# stack size per thread (in bytes)


#
# MIME types.
#
# Note: AOLserver already has an exhaustive list of MIME types, but in
# case something is missing you can add it here.
#
ns_section "ns/mimetypes"
ns_param   ".xls"          "application/vnd.ms-excel"
ns_param   default         "*/*"     ;# MIME type for unknown extension
ns_param   noextension     "*/*"     ;# MIME type for missing extension


############################################################
#
# Server-level configuration
#
#  There is only one server in AOLserver, but this is helpful when multiple
#  servers share the same configuration file.  This file assumes that only
#  one server is in use so it is set at the top.
#

ns_section "ns/servers"
ns_param   $server         $servername ;# Name of virtual server.

#
# Server parameters
#
ns_section "ns/server/${servername}"
ns_param   directoryfile   $directoryfile ;# List of files to use (index.html)
ns_param   pageroot        $pageroot ;# Directory under which all pages live

# Tuning options
ns_param   connsperthread  0         ;# Normally there's one conn per thread
ns_param   flushcontent    false     ;# Flush all data before returning
ns_param   maxconnections  100       ;# Max connections to put on queue
ns_param   maxdropped      0         ;# Shut down if dropping too many conns
ns_param   maxthreads      20        ;# Tune this to scale your server
ns_param   minthreads      0         ;# Tune this to scale your server
ns_param   threadtimeout   120       ;# Idle threads die at this rate

# Limits
ns_param   maxheaders      16384     ;# Max no. of headers from client
ns_param   maxline         8192      ;# Max line length from client
ns_param   maxpost         65536     ;# Max bytes on a POST
ns_param   sendfdthreshold 2048      ;# Min size of file descriptor to send

# Performance statistics gathering
ns_param   globalstats     true      ;# Enable built-in statistics
ns_param   urlstats        true      ;# Enable URL statistics
ns_param   maxurlstats     1000      ;# Max number of URL's to do stats on

# Directory listings can be generated with an ADP or a Tcl proc.
ns_param   directoryadp    $home/dirlist.adp  ;# Choose one or the other
ns_param   directoryproc   _ns_dirlist        ;#  ...but not both!
ns_param   directorylisting simple   ;# Can be simple or fancy (for ns_dirlist)

# Miscellaneous
ns_param   checkmodifiedsince true   ;# Check url if no If-Modified-Since?
ns_param   enableaolpress  false     ;# Enable extra features used by AOLpress
ns_param   headercase      preserve  ;# tolower, toupper, preserve

#
# Internal redirects
#
ns_section "ns/server/${servername}/redirects"
ns_param   404 "/notfound.html"      ;# Not Found error page
ns_param   500 "/servererror.html"   ;# Server Error page

#
# Fastpath serves HTML
#
ns_section "ns/server/${servername}/fastpath"
ns_param   cache           true      ;# Enable cache for normal URLs
ns_param   cachemaxentry   8192      ;# Largest file size allowable in cache
ns_param   cachemaxsize    [expr 5000*1024] ;# Size of fastpath cache
ns_param   mmap            false     ;# Use mmap() for cache

#
# Tcl interpreter
#
ns_section "ns/server/${servername}/tcl"
ns_param   autoclose       true      ;# Close files the Tcl interp opened
ns_param   debug           false     ;# Names of files sourced is logged
ns_param   nsvbuckets      8         ;# No. of buckets to hold nsv's
ns_param   statlevel       0         ;# How many levels deep to run tclstats
ns_param   statmaxbuf      100       ;# Maximum entries in tclstats table
ns_param   library \
    "$home/servers/${servername}/modules/tcl" ;# Private tcl library for the server

#
# ADP (AOLserver Dynamic Page) configuration
#
ns_section "ns/server/${servername}/adp"

# ADP features
ns_param   map             "/*.adp"  ;# Extensions to parse as ADP's
ns_param   map             "/*.html" ;# Any extension can be mapped
ns_param   enableexpire    true      ;# Set "Expires: now" on all ADP's
ns_param   enabledebug     true      ;# Turn on Tclpro debugging with "?debug"
ns_param   debuginit "ns_adp_debuginit" ;# Debug procedure

# ADP tuning
ns_param   cache           true      ;# In-memory cache of ADP's
ns_param   cachesize       [expr 5000*1024]
ns_param   taglocks        false     ;# Enable post-ini creation of ADP tags
ns_param   threadcache     false     ;# default for Tcl 7.6 (nsd76)
ns_param   threadcache     true      ;# default for Tcl 8.2 (nsd82)

# ADP special pages
ns_param   errorpage \
    ${pageroot}/errorpage.adp        ;# Pretty-print ADP errors with an ADP
ns_param   startpage \
    ${pageroot}/startpage.inc        ;# Page to include for all ADP's


#
# ADP custom parsers -- see adp.c
#
ns_section "ns/server/${servername}/adp/parsers"
ns_param   adp             ".adp"   ;# The simple parser looks for <\% ... \%>
ns_param   fancy           ".adp"   ;# The fancy parser does a lot more.


#
# Socket driver module (HTTP)  -- nssock
#
ns_section "ns/server/${servername}/module/nssock"
ns_param   port            $httpport ;# Port for HTTP (typically 80)
ns_param   hostname        $host     ;# This is not the same as your hostname
ns_param   address         $address  ;# This is not the same as your host addr
ns_param   location        "url"     ;# URL for auto-redirects (trailing slash)

#
# Socket driver module (HTTPS) -- nsssl
#
ns_section "ns/server/${servername}/module/nsssl"
ns_param   port            $httpsport ;# Port for HTTPS (typically 443)
ns_param   hostname        $host     ;# This is not the same as your hostname
ns_param   address         $address  ;# This is not the same as your host addr
ns_param   keyfile         ${home}/servers/${servername}/modules/nsssl/keyfile.pem
ns_param   certfile        ${home}/servers/${servername}/modules/nsssl/certfile.pem


#
# Control port -- nscp
#
ns_section "ns/server/${servername}/module/nscp"
ns_param   port            9999      ;# Control port listens on port 9999
ns_param   address         "127.0.0.1" ;# For security, use 127.0.0.1 only

# Control port users
ns_section "ns/server/${servername}/module/nscp/users"
# The default password for nsadmin is "x". You should change it.
# type "ns_crypt newpassword salt" and put the encrypted string below.
ns_param user "nsadmin:t2GqvvaiIUbF2:" ;# sample user="nsadmin", pw="x".

#
# Access log -- nslog
#
ns_section "ns/server/${servername}/module/nslog"
ns_param   file            "access.log"
ns_param   formattedtime   true      ;# true=common log format
ns_param   logcombined     false     ;# true==NCSA combined format
ns_param   maxbackup       5         ;# Max number to keep around when rolling
ns_param   rollhour        0         ;# Time to roll log
ns_param   rolllog         true      ;# Should we roll log?
ns_param   rollonsignal    true      ;# Roll log on SIGHUP

#
# CGI interface -- nscgi
#
# Note: CGI is *vastly* inferior to ADP's or even built-in Tcl libraries.
#
ns_section "ns/server/${servername}/module/nscgi"
ns_param   debug           false     ;# Be chatty in log
ns_param   gethostbyaddr   false     ;# Whether to do reverse DNS lookups
ns_param   limit           0         ;# Max number of concurrent CGI processes
ns_param   maxoutput       10240     ;# Max bytes allowed from external process
ns_param   buffersize      8192      ;# Buffer output from external process
ns_param   map \
    "GET /cgi /usr/local/cgi"        ;# Where your CGI executables live (GET)
ns_param   map \
    "POST /cgi /usr/local/cgi"       ;# Where your CGI executables live (POST)

# CGI environment variable handling -- See admin guide
ns_param   systemenvironment false   ;# Copies environment from nsd start shell


#
# Access control (permissions) -- nsperm
#
ns_section "ns/server/${servername}/module/nsperm"

#
# Unix domain socket driver -- nsunix
#
ns_section "ns/server/${servername}/module/nsunix"
ns_param   hostname        "host"    ;# Hostname used in response to client
ns_param   port            "port"    ;# Port to listen on
ns_param   socketfile      "path.name" ;# UNIX domain socket driver

#
# Virtual Hosting redirector -- nsvhr
#
ns_section "ns/server/${servername}/module/nsvhr"
ns_param   busyurl         "url"     ;# Redirect here if back-end times out
ns_param   errorurl        "url"     ;# Redirect here on proxy errors
ns_param   method          "GET"     ;# Methods allowed to proxy
ns_param   method          "POST"    ;# Methods allowed to proxy (can have >1)
ns_param   timeout         30        ;# Timeout waiting for back-end

# Register hosts to proxy
ns_section "ns/server/${servername}/module/nsvhr/maps"
ns_param   "www.tcpsocket.com"    "http://127.0.0.0:2000" ;# HTTP proxy
ns_param   "www.domainsocket.com" "unix://somehost"       ;# Domain socket

#
# Database drivers
#
# Two pools are given here.  Sybase uses the Sybase client libraries,
# obtained from Sybase.  Postgres is freely available at
# www.postgresql.org.  Sybase uses an external proxy daemon while
# Postgres uses an internal driver.  The Sybase driver requires some
# configuration in ns/db/driver/sybase_driver to tell th "nsext.so"
# driver where to find the nssybpd executable and some other things.
# The Postgres driver doesn't need any of that because it's internal
# and does not use nsext.so.
#
ns_section "ns/db/drivers"
ns_param   sybase_driver   nsext.so       ;# Use nsext.so for a proxy daemon
ns_param   postgres_driver nspostgres.so  ;# An internal driver

ns_section "ns/db/driver/sybase_driver"
ns_param   localdaemon     nssybpd        ;# Name of the proxy daemon executable
ns_param   param           path_to_sybase ;# Usually the $SYBASE env var

ns_section "ns/db/pools"
ns_param   sybase_pool    "Sybase Pool"
ns_param   postgres_pool  "Postgres Pool"

ns_section "ns/db/pool/sybase_pool"
ns_param   driver          sybase_driver
ns_param   datasource      SERVER_NAME:database_name
ns_param   user            user_name
ns_param   password        password
ns_param   connections     1
ns_param   logsqlerrors    true      ;# Verbose SQL query error logging
ns_param   verbose         false     ;# Verbose error logging
ns_param   maxidle         600       ;# Max time to keep idle db conn open
ns_param   maxopen         3600      ;# Max time to keep active db conn open

ns_section "ns/db/pool/postgres_pool"
ns_param   driver          postgres_driver
ns_param   datasource      HOSTNAME:PORT:database_name
ns_param   user            user_name
ns_param   password        password
ns_param   connections     1
ns_param   logsqlerrors    true      ;# Verbose SQL query error logging
ns_param   verbose         false     ;# Verbose error logging
ns_param   maxidle         600       ;# Max time to keep idle db conn open
ns_param   maxopen         3600      ;# Max time to keep active db conn open


#
# Accessing DB pools
#
# In the case of virtual servers you can give different virtual
# servers access to different databases, or you can let them access
# them all.  AOLserver 3.x does not use virtual servers so the only
# useful value is "*", but if you use one config file for multiple nsd
# processes, or you are using a version of AOLserver that supports
# virtual servers, then you should list the pools you want to access.
#
ns_section "ns/server/${servername}/db"
ns_param pools          *            ;# Wildcard gives access to all
ns_param defaultpool    sybase_pool


#
# Modules to load
#
# Note: Only load the modules you are actually going to use.
#
ns_section "ns/server/${servername}/modules"
ns_param   nssock             nssock.so
ns_param   nsssl              nsssle.so
ns_param   nscp               nscp.so
ns_param   nslog              nslog.so
ns_param   nscgi              nscgi.so
ns_param   nsperm             nsperm.so

#
# Loading a Tcl module
#
# This example shows a Tcl module, called "tcl_module", has its code
# in the AOLserver Tcl library in either the modules/tcl/tcl_module
# directory or servers/servername/modules/tcl/tcl_module directory.
#
ns_param   tcl_module          tcl

