Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.webserver.init
<<Changes:
<<2/3/10; 1:52:09 PM by DW
<<Initialize user.webserver.prefs.MIME2ext (new table).
<<9/19/02; 2:28:50 AM by JES
<<Initialize the port 5336 listener.
<<8/21/02; 9:33:34 PM by JES
<<Initialize the commonLog prefs sub-table.
<<11/5/99; 7:15:29 PM by AR
<<Set up user.webserver.postFilters.domainStats.
<<Set up user.webserver.prefs.flDomainStats.
<<10/1/98; 6:34:12 PM by DW
<<no longer expects certain responders to be installed
<<no longer creates the log file for the commonLog postfilter
<<no longer creates user.webserver.utilities if it doesn't exist
<<12/16/98; 5:36:45 PM by DW
<<roll-in of features from mainResponder project
<<user.webserver.stats and user.webserver.prefs.flStats
<<3/19/99; 2:11:09 PM by PBS
<<New pref: user.webserver.prefs.flWaitDuringStartup.
<<Default is true. If true, Frontier waits to handle incoming http requests while starting up.
<<It waits by looping in webserver.server until Frontier has started up.
<<People running Frontier behind IIS should set this to false, or else Frontier may hang during startup.
<<Everybody else should set it to true.
bundle { //make sure inetd is set up
inetd.init (); //this must be done before webserver will work.
if not defined (user.inetd.config.http) {
user.inetd.config.http = webserver.data.inetd.config.http};
if not defined (user.inetd.config.http2) {
user.inetd.config.http2 = webserver.data.inetd.config.http2}};
bundle { //create top-level tables of user.webserver
if not defined (user.webserver) {
new (tableType, @user.webserver)};
if not defined (user.webserver.prefs) {
new (tableType, @user.webserver.prefs)};
if not defined (user.webserver.callbacks) {
new (tableType, @user.webserver.callbacks)};
if not defined (user.webserver.callbacks.filterRequest) {
new (tableType, @user.webserver.callbacks.filterRequest)};
if not defined (user.webserver.callbacks.handleRequest) {
new (tableType, @user.webserver.callbacks.handleRequest)};
if not defined (user.webserver.callbacks.filterPage) {
new (tableType, @user.webserver.callbacks.filterPage)};
if not defined (user.webserver.cgis) {
new (tableType, @user.webserver.cgis)};
<<if not defined (user.webserver.utilities)
<<new (tableType, @user.webserver.utilities)
if not defined (user.webserver.actions) {
user.webserver.actions= webserver.data.actions};
<<if not defined (user.webserver.cgis.samples)
<<user.webserver.cgis.samples = webserver.data.cgis.samples
if not defined (user.webserver.responders) {
user.webserver.responders = webserver.data.responders};
if not defined (user.webserver.preFilters) {
user.webserver.preFilters = webserver.data.preFilters};
if not defined (user.webserver.postFilters) {
user.webserver.postFilters = webserver.data.postFilters}};
bundle { //copy prefs from webserver table
if not defined (user.webserver.prefs.fileNotFoundPage) {
user.webserver.prefs.fileNotFoundPage = webserver.data.prefs.fileNotFoundPage};
if not defined (user.webserver.prefs.errorPage) {
user.webserver.prefs.errorPage = webserver.data.prefs.errorPage};
if not defined (user.webserver.prefs.mimeTypes) {
user.webserver.prefs.mimeTypes = webserver.data.prefs.mimeTypes};
if not defined (user.webserver.prefs.ext2MIME) {
user.webserver.prefs.ext2MIME = webserver.data.prefs.ext2MIME};
if not defined (user.webserver.prefs.type2MIME) {
user.webserver.prefs.type2MIME = webserver.data.prefs.type2MIME};
if not defined (user.webserver.prefs.MIME2icon) {
user.webserver.prefs.MIME2icon = webserver.data.prefs.MIME2icon};
if not defined (user.webserver.prefs.MIME2name) {
user.webserver.prefs.MIME2name = webserver.data.prefs.MIME2name};
if not defined (user.webserver.prefs.MIME2ext) { //2/3/10 by DW
user.webserver.prefs.MIME2ext = webserver.data.prefs.MIME2ext}};
bundle { //set the prefs values
if not defined (user.webserver.prefs.chunkSize) {
user.webserver.prefs.chunkSize = 24};
if not defined (user.webserver.prefs.fldebug) {
user.webserver.prefs.fldebug = false};
if not defined (user.webserver.prefs.hostName) {
user.webserver.prefs.hostName = ""};
if not defined (user.webserver.prefs.serverAppID) {
user.webserver.prefs.serverAppID = ""};
if not defined (user.webserver.prefs.websiteFolderPath) {
user.webserver.prefs.websiteFolderPath = ""};
if not defined (user.webserver.prefs.fluseDNS) {
user.webserver.prefs.fluseDNS = false};
if not defined (user.webserver.prefs.flWaitDuringStartup) { //PBS 3/19/99
user.webserver.prefs.flWaitDuringStartup = true};
if not defined (user.webserver.prefs.defaultResponder) {
user.webserver.prefs.defaultResponder = "default"};
if not defined (user.webserver.prefs.flStats) { //6.0
user.webserver.prefs.flStats = true};
if not defined (user.webserver.prefs.flDomainStats) { //AR 11/05/1999
user.webserver.prefs.flDomainStats = true}; //PBS 11/23/99: now true
if not defined (user.webserver.prefs.commonLog) {
new (tableType, @user.webserver.prefs.commonLog)};
if not defined (user.webserver.prefs.commonLog.flIncludeReferers) {
user.webserver.prefs.commonLog.flIncludeReferers = false};
if not defined (user.webserver.prefs.commonLog.flIncludeUserAgents) {
user.webserver.prefs.commonLog.flIncludeUserAgents = false};
if not defined (user.webserver.prefs.commonLog.flIncludeVirtualHosts) {
user.webserver.prefs.commonLog.flIncludeVirtualHosts = false};
if not defined (user.webserver.prefs.commonLog.flUseCommonLogDateFormat) {
user.webserver.prefs.commonLog.flUseCommonLogDateFormat = false}};
bundle { //6.0, initialize stats
if not defined (user.webserver.stats) {
new (tabletype, @user.webserver.stats)};
user.webserver.stats.maxConnections = 0;
user.webserver.stats.maxMemAvail = 0;
user.webserver.stats.minMemAvail = infinity;
user.webserver.stats.hits = 0;
user.webserver.stats.upSince = clock.now ()};
<<bundle // set up log for commonLog postFilter
<<if (not defined (user.webserver.prefs.logFile)) or (not file.exists (user.webserver.prefs.logFile))
<<user.webserver.prefs.logFile = frontier.pathstring + "Logs" + file.getPathChar () + "Web Server Log.txt"
<<file.sureFilePath (user.webserver.prefs.logFile)
<<if not file.exists (user.webserver.prefs.logFile)
<<file.new (user.webserver.prefs.logFile)
<<if (sys.os () == osMacOS)
<<file.setType (user.webserver.prefs.logFile, 'TEXT')
<<file.setCreator (user.webserver.prefs.logFile, 'R*ch')
bundle { //AR 11/5/99: set up domainStats postFilter
if not defined (user.webserver.postfilters.domainStats) {
script.newScriptObject ("on domainStats (pta)" + cr + tab + "return (webserver.postFilters.domainStats (pta))", @user.webserver.postFilters.domainStats)}};
return (true)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.