Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
server:web [2023/12/19 19:12] – [Startup INI [Web] Section Keys] Create a quick-reference settings table digital manserver:web [2023/12/23 02:14] (current) – [Configure] Update SCFG screenshot digital man
Line 7: Line 7:
 The Synchronet Web Server is a mostly HTTP 1.1 compliant web server capable of The Synchronet Web Server is a mostly HTTP 1.1 compliant web server capable of
 handing basic web servicing tasks.  It has most of the basic features of a handing basic web servicing tasks.  It has most of the basic features of a
-general-purpose web server one would come to expect (including CGI).+general-purpose web server one would come to expectincluding (Fast)CGI.
  
 It also, through Server-Side JavaScript (SSJS), allows dynamic pages to be It also, through Server-Side JavaScript (SSJS), allows dynamic pages to be
Line 13: Line 13:
  
  
-===== Configuration =====+===== Configure =====
  
-==== Initialization Settings ====+The Synchronet Web Server can be configured via [[util:SCFG]]:Servers->Web Server: 
 + 
 +<file> 
 +╔══════════════════════════════════════════════════════════════════╗ 
 +║                            Web Server                            ║ 
 +╠══════════════════════════════════════════════════════════════════╣ 
 +║ │Enabled                       Yes                               ║ 
 +║ │Log Level                     Informational                     ║ 
 +║ │HTTP Interfaces               0.0.0.0, ::                       ║ 
 +║ │HTTP Port                     80                                ║ 
 +║ │HTTPS Support                 Yes                               ║ 
 +║ │HTTPS Interfaces              0.0.0.0, ::                       ║ 
 +║ │HTTPS Port                    443                               ║ 
 +║ │SSJS File Extension           .ssjs                             ║ 
 +║ │Index Filenames               index.html, index.ssjs, index.xjs ║ 
 +║ │Content Root Directory        ../webv4/root                     ║ 
 +║ │Error Sub-directory           error                             ║ 
 +║ │Strict Transport Security     No                                ║ 
 +║ │Virtual Host Support          No                                ║ 
 +║ │Access Logging                <disabled>                        ║ 
 +║ │Max Clients                   100                               ║ 
 +║ │Max Inactivity                2 minutes                         ║ 
 +║ │Filebase Index Script         webfileindex.ssjs                 ║ 
 +║ │Filebase VPath Prefix         /files/                           ║ 
 +║ │Filebase VPath for VHosts     No                                ║ 
 +║ │Authentication Methods        Basic,Digest,TLS-PSK              ║ 
 +║ │Output Buffer Drain Timeout   10 ms                             ║ 
 +║ │Lookup Client Hostname        No                                ║ 
 +║ │CGI Support                   No                                ║ 
 +║ │CGI Directory                 cgi-bin                           ║ 
 +║ │CGI File Extensions           .cgi                              ║ 
 +║ │CGI Default Content-Type      text/plain                        ║ 
 +║ │CGI Max Inactivity            2 minutes                         ║ 
 +║ │JavaScript Settings...                                          ║ 
 +║ │Failed Login Attempts...                                        ║ 
 +╚══════════════════════════════════════════════════════════════════╝ 
 + 
 +</file> 
 + 
 +... or via [[monitor:SBBSCTRL]]:Web->Configure: 
 + 
 +{{:server:sbbsctrl.3.20.web.config.png|}} 
 + 
 +... or via manual edit of the ''[Web]'' section of the ''[[dir:ctrl]]/[[config:sbbs.ini]]'' file. 
 + 
 +==== sbbs.ini ====
  
 The ''[Web]'' section of your [[config:sbbs.ini]] file supports the following configuration settings (keys): The ''[Web]'' section of your [[config:sbbs.ini]] file supports the following configuration settings (keys):
Line 30: Line 75:
 | BindRetryCount    | 2               | Default number of network interface/port bind retry attempts | | BindRetryCount    | 2               | Default number of network interface/port bind retry attempts |
 | BindRetryDelay    | 15               | Default number of seconds to wait between bind attempts | | BindRetryDelay    | 15               | Default number of seconds to wait between bind attempts |
-| MaxClients               //unlimited//    | Maximum number of simultaneous connections supported (0 = unlimited) |+| MaxClients               100              | Maximum number of simultaneous connections supported (0 = unlimited) |
 | MaxInactivity            | ''2m''           | Maximum duration of client inactivity before disconnection | | MaxInactivity            | ''2m''           | Maximum duration of client inactivity before disconnection |
 | MaxCgiInactivity         | ''2m''           | Maximum duration of CGI application inactivity | | MaxCgiInactivity         | ''2m''           | Maximum duration of CGI application inactivity |
Line 43: Line 88:
 | Authentication           | ''Basic,Digest,TLS-PSK ''    | Authentication methods supported | | Authentication           | ''Basic,Digest,TLS-PSK ''    | Authentication methods supported |
 | HttpLogFile              | ''[[dir:data]]/logs/http-''  | Path prefix for HTTP access log files | | HttpLogFile              | ''[[dir:data]]/logs/http-''  | Path prefix for HTTP access log files |
-| FileIndexScript          | ""               | Server-side JavaScript to execute to provide HTML/CSS library and directory listings of virtual file paths | +| FileIndexScript          | ""               | Server-side JavaScript to execute to provide HTML/CSS library and directory listings of virtual file paths (e.g. ''webfileindex.ssjs''
-| FileVPathPrefix          | ""               | Virtual path for file base access, suggested value: ''/files/''+| FileVPathPrefix          | ""               | Virtual path for HTTP file base access, suggested value: ''/files/''
-| FileVPathForVHosts       | ''false''        | If you'd like your virtual hosts to have virtual file path access, set this to ''true'' |+| FileVPathForVHosts       | ''false''        | If you'd like your virtual hosts to provide HTTP access to your file bases (using virtual file paths), set this to ''true'' |
 | OutbufDrainTimeout       | ''10''           | Number of milliseconds to wait for output buffer to drain | | OutbufDrainTimeout       | ''10''           | Number of milliseconds to wait for output buffer to drain |
 | TempDirectory            | ''../temp/''     | Override default temporary file directory | | TempDirectory            | ''../temp/''     | Override default temporary file directory |
 | Options                  |                  | See below for details | | Options                  |                  | See below for details |
  
-**Detailed setting descriptions **+=== Options ===
  
 +The ''Options'' key is set to a ''|'' separated list of options to enable.  
 +
 +Default value: **''NO_HOST_LOOKUP | HTTP_LOGGING | NO_CGI''**
 +
 +In addition to the [[config:sbbs.ini|standard options]], the web server also supports the following:
 +
 +== DEBUG_RX ==
 +
 +Log all received data to the console log, as well as various
 +extra bits related to receiving data.
 +
 +== DEBUG_TX ==
 +
 +Log all transmitted data except the reply body itself, as well
 +as various extra bits of information related to transmitted
 +data.
 +
 +== DEBUG_SSJS ==
 +
 +Log server-side JavaScript execution details.
 +
 +== VIRTUAL_HOSTS ==
 +
 +Supports name-based virtual hosts.  If your system has multiple
 +host names, you can have each host name return unique content
 +depending on which hostname is used.  ie: if
 +''freebsd.synchro.net'' and ''nix.synchro.net'' both resolved to your
 +system, you could have FreeBSD-specific pages on one, and 
 +general *nix stuff on the other.
 +
 +A virtual host is added by simply putting the desired content
 +into a sub-directory of [[#RootDirectory]] with the desired hostname
 +ie: ''web/root/freebsd.synchro.net/'' if the browser doesn't send
 +the request host name (very old browsers, or some automated
 +tools) they will be served out of document root.
 +It is therefore a good idea to put links to your various
 +virtual hosts in an ''index.html'' page in [[#RootDirectory]] something
 +like this:
 +<code html>
 +<html>
 +  <head>
 +    <title>Old Browser</title>
 +  </head>
 +  <body>
 +    Your browser is either too old to support
 +    name-based virtual hosts, or you have visited a
 +    virtual hosts that is not yet configured.  The
 +    following are hosted here:<br>
 +    <a href="freebsd.synchro.net">freebsd.synchro.net</a><br>
 +    <a href="nix.synchro.net">nix.synchro.net</a><br>
 +  </body>
 +</html>
 +</code>
 +
 +== NO_CGI ==
 +
 +Disable CGI/FastCGI script execution.
 +
 +== HTTP_LOGGING ==
 +
 +Enable logging to a Common Logfile Format log as described in
 +the HttpLogFile section.  Usefull for running log analysis
 +programs (like Webalizer: http://www.mrunix.net/webalizer/)
 +
 +== NO_JAVASCRIPT ==
 +
 +Disable SSJS execution.
 +
 +== ALLOW_TLS ==
 +
 +Enable TLS/SSL support.
 +
 +== HSTS_SAFE ==
 +
 +Indicates that all URLs available via http are also available via https and redirects clients who want a TLS session to the https location.
 +
 +==== Reference ====
 +
 +Web Server configuration settings reference:
 + 
 === RootDirectory === === RootDirectory ===
  
Line 160: Line 285:
  
 A Server-side JavaScript (SSJS) file to execute and provide HTML/CSS indexes to file libraries and directories accessed via virtual file paths. A Server-side JavaScript (SSJS) file to execute and provide HTML/CSS indexes to file libraries and directories accessed via virtual file paths.
- 
-=== Options === 
- 
-Default value: ''NO_HOST_LOOKUP | HTTP_LOGGING'' 
- 
-The ''Options'' key is set to a ''|'' separated list of options to enable.  In addition to the [[config:sbbs.ini|standard options]], the web server also supports the following: 
- 
-**''DEBUG_RX''** 
- 
-Log all received data to the console log, as well as various 
-extra bits related to receiving data. 
- 
-**''DEBUG_TX''**  
- 
-Log all transmitted data except the reply body itself, as well 
-as various extra bits of information related to transmitted 
-data. 
- 
-**''DEBUG_SSJS''**  
- 
-Log server-side JavaScript execution details. 
- 
-**''VIRTUAL_HOSTS''** 
- 
-Supports name-based virtual hosts.  If your system has multiple 
-host names, you can have each host name return unique content 
-depending on which hostname is used.  ie: if 
-''freebsd.synchro.net'' and ''nix.synchro.net'' both resolved to your 
-system, you could have FreeBSD-specific pages on one, and  
-general *nix stuff on the other. 
- 
-A virtual host is added by simply putting the desired content 
-into a sub-directory of [[#RootDirectory]] with the desired hostname 
-ie: ''web/root/freebsd.synchro.net/'' if the browser doesn't send 
-the request host name (very old browsers, or some automated 
-tools) they will be served out of document root. 
-It is therefore a good idea to put links to your various 
-virtual hosts in an ''index.html'' page in [[#RootDirectory]] something 
-like this: 
-<code html> 
-<html> 
-  <head> 
-    <title>Old Browser</title> 
-  </head> 
-  <body> 
-    Your browser is either too old to support 
-    name-based virtual hosts, or you have visited a 
-    virtual hosts that is not yet configured.  The 
-    following are hosted here:<br> 
-    <a href="freebsd.synchro.net">freebsd.synchro.net</a><br> 
-    <a href="nix.synchro.net">nix.synchro.net</a><br> 
-  </body> 
-</html> 
-</code> 
- 
-**''NO_CGI''** 
- 
-Disable CGI script execution. 
- 
-**''HTTP_LOGGING''** 
- 
-Enable logging to a Common Logfile Format log as described in 
-the HttpLogFile section.  Usefull for running log analysis 
-programs (like Webalizer: http://www.mrunix.net/webalizer/) 
- 
-**''NO_JAVASCRIPT''** 
- 
-Disable SSJS execution. 
- 
-**''ALLOW_TLS''** 
- 
-Enable TLS support. 
- 
-**''HSTS_SAFE''** 
- 
-Indicates that all URLs available via http are also available via https and redirects clients who want a TLS session to the https location. 
  
 ==== Other configuration files ==== ==== Other configuration files ====
Line 276: Line 325:
  
  
-==== webctrl.ini per-directory configuration file ====+==== webctrl.ini ==== 
 Each directory under the [[#RootDirectory]] may have a ''webctrl.ini'' file which overrides certain settings for Each directory under the [[#RootDirectory]] may have a ''webctrl.ini'' file which overrides certain settings for
 the directory it's in and all child directories.  Configuration keys may be set the directory it's in and all child directories.  Configuration keys may be set
Line 283: Line 333:
  
 === AccessRequirements === === AccessRequirements ===
-Specifices an ARS string which all users must match to be able to access+Specifies an ARS string which all users must match to be able to access
 files in this directory.  Will force an HTTP login. files in this directory.  Will force an HTTP login.