set home /web/rmadilo set configDebug 0 ;# set to 1 to print config file values to stdout set MainServer rmadilo # # Upon errors, send email # global ErrorText set ErrorText "" set ErrorFile "/web/rmadilo/Errors-rmadilo.txt" # # Database Usage # set DatabaseConfig "$home/nsdb-rmadilo.tcl" # # Virtual Servers # set servers { rmadilo "Rmadilo.com" ar "AmericasResolve.com" budigan "BudiganLaw.com" } # # Virtual Server Config Files: # set ServerConfig(rmadilo) "$home/servers/rmadilo/config/server.tcl" set ServerConfig(ar) "$home/servers/ar/config/server.tcl" set ServerConfig(budigan) "$home/servers/budigan/config/server.tcl" # # Global Socket Config Files: # set SockConfig(nssock0) "$home/sock-216.211.130.179:80.tcl" # # SockMap: Maps incoming host header with correct server. # set SockMap(nssock0) { rmadilo rmadilo.com ar americasresolve.com ar www.americasresolve.com budigan budiganlaw.com budigan www.budiganlaw.com } # # Sock Default Servers # set SockDefaultServer(nssock0) rmadilo # # Variables Used Later # set VirtualServerErrors [list] set VirtualServersLoaded [list] # Global Params: ns_section "ns/parameters" ns_param home $home ns_param pidfile $home/log/rmadilo.nspid ns_param OutputCharset UTF-8 ; #iso8859-1 ns_param URLCharset UTF-8 ; #iso8859-1 ns_param stacksize [expr 64 * 1024] ns_param logusec true ns_param logroll true ns_param logexpand false ns_param debug true ;# false ns_param logdev true ;# false ns_param lognotice true ns_param logmaxbackup 10 ns_param logmaxlevel 256 ;# what is INT_MAX ns_param logmaxbuffer 10 ns_param logflushinterval 10 #ns_param serverlog "jnm-error.log" ;# "server.log" ,relative to home, unless abs ns_param serverlog "/dev/fd/1" ;# redirect to sdtout ns_param shutdowntimeout 20 ns_param schedmaxelapsed 2 ns_param listenbacklog 32 ns_param dnscache true ;# following must be > 0 ns_param dnscachemaxentries 100 ;# entries ns_param dnscachetimeout 60 ;# and timeout > 0 or dnscache disabled ns_param keepalivetimeout 30 ns_param maxkeepalive 100 ns_param keepaliveallmethods false ns_section "ns/mimetypes" ns_param default "*/*" ;# MIME type for unknown extension. ns_param noextension "*/*" ;# MIME type for missing extension. ns_param .adp "text/html; charset=iso-8859-1" ns_param .u_adp "text/html; charset=UTF-8" ns_param .gb_adp "text/html; charset=GB2312" ns_param .sjis_html "text/html; charset=shift_jis" ns_param .sjis_adp "text/html; charset=shift_jis" ns_param .gb_html "text/html; charset=GB2312" # # I18N File-type to Encoding mappings # ns_section "ns/encodings" ns_param .utf_html "utf-8" ns_param .sjis_html "shiftjis" ns_param .gb_html "gb2312" ns_param .big5_html "big5" ns_param .euc-cn_html "euc-cn" ns_param .gb_adp "gb2312" # # Thread library (nsthread) parameters # ns_section "ns/threads" ns_param stacksize [expr 1024*1024] ;# Per-thread stack size. ns_param mutexmeter true # # AOLserver Stats Module # ns_section "ns/server/stats" ns_param enabled 1 ns_param url /aolserver/stats ns_param user whoknows ns_param password whocares ############################ No Editing Below This Line ####################### # # sourcing procedures # proc load_server { server file } { global ErrorText if {![file exists $file]} { append ErrorText " ----------> Unable to load server '$server' ----------> File missing: '$file'\n" return 1 } if {[catch { uplevel source $file } err ]} { append ErrorText " ----------> Unable to load server: '$server' ----------> Error: '$err'\n" return 2 } return 0 } # # Source Virtual Server Config Files: # foreach {server dummy} $servers { #source $ServerConfig($server) if {[load_server "$server" "$ServerConfig($server)"]} { lappend VirtualServerErrors $server } else { lappend VirtualServersLoaded $server } } # # Set Server Only if Config Loaded: # ns_section "ns/servers" foreach {server server_descr} $servers { if {[lsearch $VirtualServersLoaded $server] > -1} { puts "loading $server $server_descr\n" ns_param $server $server_descr } } # # Virtual Server Mapping to Sock # foreach sock [array names SockConfig] { set Maps($sock) [list] ns_section "ns/module/${sock}/servers" foreach {srv hostname} $SockMap($sock) { if {[lsearch $VirtualServersLoaded $srv] > -1} { ns_param $srv $hostname lappend Maps($sock) $srv } } if {[llength $Maps($sock)] == 0} { # delete socket append ErrorText "nssock: $sock Not Loaded" unset SockMap($sock) } } # # Map Sockets to Servers # # Sockets which have virtual servers mapped will load # foreach {sock} [lsort [array names SockMap]] { if {[file exists $SockConfig($sock)]} { set DefaultVirtualServer $SockDefaultServer($sock) # Default Virtual Server must be set to listen on sock: if {[lsearch $Maps($sock) $DefaultVirtualServer] > -1} { source $SockConfig($sock) } else { append ErrorText "${sock}: default server $SockDefaultServer($sock) not loaded, skipping $sock" } } else { append ErrorText "${sock}: sock config file missing $SockConfig($sock)" } } if {[info exists DatabaseConfig]} { if {[file exists $DatabaseConfig]} { puts "loading $DatabaseConfig\n" source $DatabaseConfig } } # # Write Config if Errors Exist # if {![string eq "" "$ErrorText"]} { set configDebug 1 } if {[info exists configDebug] && $configDebug} { set sections [ns_configsections] set output [list] foreach section $sections { set name [ns_set name $section] set section_txt "" append section_txt "ns_section $name\n" set size [ns_set size $section] for {set i 0} {$i < $size} {incr i} { append section_txt "\t[list ns_param [ns_set key $section $i] [ns_set value $section $i]]\n" } lappend output $section_txt } set output "[join [lsort $output] "\n"]\n" puts "\n$output\n" } if {![string eq "" "$ErrorText"]} { set ErrorFd [open $ErrorFile w+] puts $ErrorFd $ErrorText puts $ErrorFd $output close $ErrorFd }