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
config:sbbs.ini [2019/01/05 15:44] – [[BBS]] Added clarifications and missing settings from [BBS] section digital manconfig:sbbs.ini [2024/03/03 01:34] (current) – [[BBS]] Add ALLOW_SFTP and NO_TELNET, remove MUTE digital man
Line 1: Line 1:
-====== sbbs.ini ======+====== Initialization Configuration ======
  
-The Synchronet BBS (SBBS) Initialization File is the mother of all Synchronet configuration files and is located in the ''[[dir:ctrl]]'' directory.+The Synchronet BBS (SBBS) Initialization File (''sbbs.ini''is the mother of all Synchronet v3 configuration files and is located in the ''[[dir:ctrl]]'' directory.
  
 ===== Filename ===== ===== Filename =====
Line 7: Line 7:
 The base filename of the initialization file is ''[[dir:ctrl]]/sbbs.ini'' The base filename of the initialization file is ''[[dir:ctrl]]/sbbs.ini''
  
-The standard host/platform variations of the initialization filenames are also supported. See [[INI_files#filenaming|INI Filenaming]] for details.+The standard host/platform variations of the initialization filenames are also supported. See [[INI_files#filenaming|.ini filenaming]] for details.
  
 ===== Defaults ===== ===== Defaults =====
  
-Download or view the default ''sbbs.ini'' file here: ''[[http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/ctrl/sbbs.ini|sbbs.ini]]''+Download or view the default ''sbbs.ini'' file here: ''[[https://gitlab.synchro.net/main/sbbs/-/blob/master/ctrl/sbbs.ini|sbbs.ini]]''
  
 ===== Editing ===== ===== Editing =====
Line 27: Line 27:
 The ''[Global]'' section contains keys whose values will serve as default values for like-named keys in other server sections in the ''[[config:sbbs.ini]]'' file.  The ''[Global]'' section contains keys whose values will serve as default values for like-named keys in other server sections in the ''[[config:sbbs.ini]]'' file. 
  
-These keys are:+The supported ''[Global]'' keys are:
  
-=== Hostname ===+^ Key                          ^ Default         ^ Description ^ 
 +| HostName                     | <none>          | Override system hostname | 
 +| Interface                    | ''0.0.0.0,::''  | Default local network interface(s) to listen for connections on | 
 +| OutboundInterface            | ''0''           | Default IPv4 network interface to perform outbound connections from | 
 +| LogLevel                     | Informational   | Default minimum severity of log messages to view or log-to-disk | 
 +| TLSErrorLevel                | Emergency       | Maximum severity of TLS-related log messages | 
 +| BindRetryCount               | 2               | Default number of network interface/port bind retry attempts | 
 +| BindRetryDelay               | 15              | Default number of seconds to wait between bind attempts | 
 +| CtrlDirectory                |                 | Override default ''[[dir:ctrl]]'' directory | 
 +| TempDirectory                | ''../temp/''    | Override default temporary file directory | 
 +| SemFileCheckFrequency        | 2               | Default seconds between semaphore file checks | 
 +| LoginAttemptDelay            | 5000            | Default number of milliseconds to pause after a failed login attempt | 
 +| LoginAttemptThrottle         | 1000            | Default number of milliseconds to delay a connection from a suspicious host | 
 +| LoginAttemptHackThreshold    | 10              | Default number of failed login attempts before logging attempt to ''hack.log''
 +| LoginAttemptTempBanThreshold | 20              | Default number of failed login attempts before temporarily banning IP address | 
 +| LoginAttemptTempBanDuration  | 10M             | Default duration of a temporary IP address ban | 
 +| LoginAttemptFilterThreshold  | 0               | Default number of failed login attempts before auto-filtering an IP address | 
 +| LoginAttemptFilterDuration   | 0 (Infinite)    | Default duration of IP address filters | 
 +| AnswerSound                  |                 | Default WAV file to play locally upon accepting a TCP connection | 
 +| LoginSound                                   | Default WAV file to play locally upon successful user authentication | 
 +| LogoutSound                  |                 | Default WAV file to play locally upon logout of an authenticated user | 
 +| HangupSound                  |                 | Default WAV file to play locally upon disconnection of a TCP session | 
 +| HackAttemptSound                             | Default WAV file to play locally upon a detected hack attempt | 
 +| JavaScript*                  |                 | Default JavaScript settings, see [[JavaScript]] for details | 
 + 
 +**More details on keys follow**: 
 + 
 +=== HostName ===
  
 Default: <none> Default: <none>
  
-The public Internet hostname of this server.+The public Internet DNS host name of this server.
  
-If not set, the hostname configured in [[util:SCFG]]->Networks->Internet E-mail Address will be used.+If not set, the host name configured in ''[[util:SCFG]]->Networks->Internet E-mail->System Address'' will be used
 + 
 +**Note**: 
 +The ''[Global] HostName'' setting may be overridden by a ''HostName'' value in the subsequent server sections of this file.
  
 === Interface === === Interface ===
  
-Default: <any>+Default: ''0.0.0.0,::'' (any/all IPv4 or IPv6 interface)
  
-The IPv4 and/or IPv6 address of the network interfaces to listen for incoming TCP/IP connections on.+The IPv4 and/or IPv6 addresses of the network interfaces to listen on for incoming TCP/IP connections.
  
-If multiple address are specified, they are to be separated by commas (this is true of all the ''*Interface'' values in this file).+If multiple addresses are specified, they are to be separated by commas (this is true of all the ''*Interface'' values in this file).
  
-If not set, any and all network interfaces available will be listened on.+The address value ''0'' or ''0.0.0.0'' indicates //all IPv4 interfaces//. The address value ''::'' indicates //all IPv6 interfaces//
 + 
 +If this value is not set, any and all IPv4 and IPv6 network interfaces available will be listened to for incoming connections. 
 + 
 +**Note**: 
 +Although TCP port numbers may be specified (with ''//<address>//://port//'' syntax) in the ''*Interface'' values of the subsequent server sections of this file, the ''[Global] Interface'' value **must not** have any port numbers specified. 
 + 
 +=== OutboundInterface === 
 + 
 +Default: ''0.0.0.0'' (any available IPv4 interface) 
 + 
 +The IPv4 address of the network interface to use for outgoing TCP/IP connections.
  
 === CtrlDirectory === === CtrlDirectory ===
Line 60: Line 101:
 If you do override this, do NOT use the system-wide temp dir (e.g.: ''/tmp'' or ''windows\temp''), use a subdirectory instead. Synchronet assumes it is the only user of this directory/subdirectory for its temporary files only. If you do override this, do NOT use the system-wide temp dir (e.g.: ''/tmp'' or ''windows\temp''), use a subdirectory instead. Synchronet assumes it is the only user of this directory/subdirectory for its temporary files only.
  
 +**Note**:
 +The ''[Global] TempDirectory'' value may be overridden by a ''TempDirectory'' value in the subsequent server sections of this file.
  
 === SemFileCheckFrequency === === SemFileCheckFrequency ===
Line 67: Line 110:
  
 The interval, in seconds, betweeen [[semfiles|semaphore file]] checks. If you want to reduce the amount of disk I/O while the BBS is idle, you can increase this value. If you set this value below 1, the BBS server threads will use the default value (2). The interval, in seconds, betweeen [[semfiles|semaphore file]] checks. If you want to reduce the amount of disk I/O while the BBS is idle, you can increase this value. If you set this value below 1, the BBS server threads will use the default value (2).
 +
 +**Note**:
 +The ''[Global] SemFileCheckFrequency'' value may be overridden by a ''SemFileCheckFrequency'' value in the subsequent server sections of this file.
  
 === BindRetryCount === === BindRetryCount ===
Line 75: Line 121:
  
 Increase this value if you get errors binding to ports on reloads (especially on *nix). Increase this value if you get errors binding to ports on reloads (especially on *nix).
 +
 +**Note**:
 +This setting may be overridden by a ''BindRetryCount'' value in the subsequent server sections of this file.
  
 === BindRetryDelay === === BindRetryDelay ===
Line 81: Line 130:
   
 Delay (in seconds) between bind retries. Delay (in seconds) between bind retries.
 +
 +**Note**:
 +This setting may be overridden by a ''BindRetryDelay'' value in the subsequent server sections of this file.
  
 === LogLevel === === LogLevel ===
  
-Default: ''Debugging''+Default: ''Informational''
  
 Highest log level to actually log/print (ignore all higher/less-severe log entries). Highest log level to actually log/print (ignore all higher/less-severe log entries).
 Supported log levels in decreasing severity (ala [[:monitor:syslog]]): Supported log levels in decreasing severity (ala [[:monitor:syslog]]):
   Emergency, Alert, Critical, Error, Warning, Notice, Informational, Debugging   Emergency, Alert, Critical, Error, Warning, Notice, Informational, Debugging
 +  
 +**Note**:
 +This setting may be overridden by a ''LogLevel'' value in the subsequent server sections of this file.
  
-=== JavaScriptMaxBytes === +=== JavaScript===
- +
-Default: ''8M'' +
- +
-Maximum allocation of memory per JavaScript run-time. +
- +
-=== JavaScriptContextStack === +
-Default: ''16K'' +
- +
-Maximum stack size per JavaScript context. +
- +
-=== JavaScriptTimeLimit === +
-Default: ''864000'' (24 hours) +
- +
-Maximum number of ticks (100ms) before auto-termination of a JavaScript script (i.e. //infinite loop detection//). +
- +
-Set to ''0'' for unlimited time (disables //infinite loop detection//). +
- +
-Note: This key replaces the old ''JavaScriptBranchLimit'' key which is no longer used (as of Synchronet v3.16). +
- +
-=== JavaScriptGcInterval === +
-Default: ''100'' +
- +
-JavaScript Garbage Collection interval (in ticks).  +
- +
-Set to ''0'' for never. +
- +
-=== JavaScriptYieldInterval === +
- +
-Default: ''10000'' +
- +
-Time-slice yield interval (in ticks).  +
- +
-Set to ''0'' for never. +
- +
-=== JavaScriptLoadPath === +
-Default: ''load''+
  
-Comma-separated list of load paths (relative to ''[[dir:exec]]'' or ''[[dir:mods]]'' directories).+See [[JavaScript]] for details.
  
-These are the directories/sub-directories where the JavaScript ''load()'' method will search for filenames to be loaded by other scripts.+**Note**: 
 +Each ''[Global] JavaScript*'' setting may be overridden by a corresponding ''JavaScript*'' value in the subsequent server sections of this file.
  
 === LoginAttemptDelay === === LoginAttemptDelay ===
Line 136: Line 156:
  
 The number of milliseconds to pause after a failed login attempt. The number of milliseconds to pause after a failed login attempt.
 +
 +**Note**:
 +Each ''[Global] LoginAttempt*'' setting may be overridden by a corresponding ''LoginAttempt*'' value in the subsequent server sections of this file.
  
 === LoginAttemptThrottle === === LoginAttemptThrottle ===
Line 156: Line 179:
 Set to ''0'' to disable automatic banning. Set to ''0'' to disable automatic banning.
  
-NOTE: Failed logins using any of the filtered user IDs (from ''[[config:name.can]]'') will automatically trigger a temporary ban. +**Note**: Failed logins using any of the filtered user IDs (from ''[[config:name.can]]'') will automatically trigger a temporary ban.
- +
-NOTE: Added in v3.17 (May-2016)+
  
 === LoginAttemptTempBanDuration === === LoginAttemptTempBanDuration ===
Line 164: Line 185:
  
 The  length (in seconds) of a temporary IP ban based on either multiple consecutive failed login attempts or any failed login attempt using a banned user ID (from ''[[config:name.can]]''). The  length (in seconds) of a temporary IP ban based on either multiple consecutive failed login attempts or any failed login attempt using a banned user ID (from ''[[config:name.can]]'').
- 
-NOTE: Added in v3.17 (May-2016) 
  
 === LoginAttemptFilterThreshold === === LoginAttemptFilterThreshold ===
Line 172: Line 191:
 The number of consecutive unique failed login attempts from the same host before auto-filtering the host's IP address in the ''[[config:ip.can]]'' file. The number of consecutive unique failed login attempts from the same host before auto-filtering the host's IP address in the ''[[config:ip.can]]'' file.
  
-For this auto-filtering feature to work with the Synchronet v3.16c Terminal Server (Telnet, RLogin, and SSH login attempts), the sysop must set [[util:SCFG]]->Nodes->Node 1->Toggle Options->Always Prompt for Password to "Yes".+For this auto-filtering feature to work with the Synchronet v3.16c Terminal Server (Telnet, RLogin, and SSH login attempts), the sysop must set ''[[util:SCFG]]->Nodes->Node 1->Toggle Options->Always Prompt for Password'' to "Yes".
  
 Set to ''0'' to disable automatic filtering of IP addresses due to failed login attempts. Set to ''0'' to disable automatic filtering of IP addresses due to failed login attempts.
 +
 +=== LoginAttemptFilterDuration ===
 +Default: ''0'' (Infinite)
 +
 +The  length (in seconds) of a persistent IP ban.
 +
 ==== [BBS] ==== ==== [BBS] ====
  
Line 228: Line 253:
  
 The maximum amount of time allowed for a SecureShell (SSH) connection negotiation to complete. The maximum amount of time allowed for a SecureShell (SSH) connection negotiation to complete.
 +
 +=== SSHErrorLevel ===
 +
 +Default: ''4'' (warning)
 +
 +The maximum severity of SSH-related log messages. SSH-related log messages of higher severity (i.e. lower numeric level) will be capped at this severity level.
  
 === Pet40Port === === Pet40Port ===
Line 240: Line 271:
  
 If a connection is made to the [[:server:Terminal]] server, via any supported protocol, on this TCP port number, the terminal will be assumed to be an 80-column CBM/PETSCII (non-ANSI) terminal (e.g. Commodore 128). Setting this port number does not cause the server to //listen// on this port, so if you desire to support CBM/PETSCII terminal-connections, you will also need to add this port number to the ''TelnetInterface'' list (for example). If a connection is made to the [[:server:Terminal]] server, via any supported protocol, on this TCP port number, the terminal will be assumed to be an 80-column CBM/PETSCII (non-ANSI) terminal (e.g. Commodore 128). Setting this port number does not cause the server to //listen// on this port, so if you desire to support CBM/PETSCII terminal-connections, you will also need to add this port number to the ''TelnetInterface'' list (for example).
 +
 +=== OutboundInterface ===
 +
 +Default: ''0.0.0.0'' (any available IPv4 interface)
 +
 +The IPv4 address of the network interface to use for outgoing TCP/IP connections (i.e. for Telnet and RLogin gateway connections).
  
 === FirstNode === === FirstNode ===
Line 293: Line 330:
  
 When the BBS is running on a *nix-like OS, this value determines the value of the ''TERM'' environment variable that will be set when invoking interactive external programs for users with terminals that **do not** support ANSI. When the BBS is running on a *nix-like OS, this value determines the value of the ''TERM'' environment variable that will be set when invoking interactive external programs for users with terminals that **do not** support ANSI.
 +
 +=== UseDOSemu ===
 +
 +Default: ''false'' (new sysops with default file) or ''true'' (missing from file/existing sysops)
 +
 +This will enable [[howto:dosemu|DOSEmu]] support for running DOS-based external programs. When you first install Synchronet, you will need to "opt in" by setting this to true in order to use DOSEmu.
  
 === DOSemuPath === === DOSemuPath ===
Line 298: Line 341:
 Default: ''/usr/bin/dosemu.bin'' (Linux) or ''/usr/local/bin/doscmd'' (FreeBSD) Default: ''/usr/bin/dosemu.bin'' (Linux) or ''/usr/local/bin/doscmd'' (FreeBSD)
  
-When the BBS is running on a *nix-like OS and built with DOS emulator support (e.g. ''USE_DOSEMU'' defined on Linux), this value determines the default path of the DOS emulator to be executed when a non-native program (e.g. 16-bit MS-DOS door game) will be invoked by the BBS.+When the BBS is running on a *nix-like OS, this value determines the default path of the DOS emulator to be executed when a non-native program (e.g. 16-bit MS-DOS door game) will be invoked by the BBS. 
 + 
 +=== DOSemuConfPath === 
 + 
 +Default: ''dosemu.conf'' 
 + 
 +This specifies where DOSEmu should look for the conf file. If you only specify a filename, it will look in the ''[[dir:ctrl]]'' dir.  
 + 
 +The order of using conf file locations is:  
 + 
 +  - It will look in the startup dir of the external program 
 +  - It will use this path from sbbs.ini (if configured) 
 +  - It use /etc/dosemu/dosemu.conf 
 +  - It will use /etc/dosemu.conf
  
 === AnswerSound === === AnswerSound ===
Line 325: Line 381:
 |DEBUG_TELNET    | Log Telnet commands and responses (with Debug log-level messages) | |DEBUG_TELNET    | Log Telnet commands and responses (with Debug log-level messages) |
 |ALLOW_SSH | Enable the Secure Shell (SSH) protocol for incoming connections | |ALLOW_SSH | Enable the Secure Shell (SSH) protocol for incoming connections |
 +|ALLOW_SFTP | Enable SSH File Transfers (SFTP) |
 |ALLOW_RLOGIN | Enable the RLogin protocol for incoming connections | |ALLOW_RLOGIN | Enable the RLogin protocol for incoming connections |
 |NO_QWK_EVENTS   | Disable QWK networking events | |NO_QWK_EVENTS   | Disable QWK networking events |
 |NO_NEWDAY_EVENTS| Disable daily events from running in this instance of Synchronet | |NO_NEWDAY_EVENTS| Disable daily events from running in this instance of Synchronet |
 |NO_EVENTS | Disable the Events thread (all timed events) | |NO_EVENTS | Disable the Events thread (all timed events) |
 +|NO_TELNET       | Disable Telnet support |
 |NO_TELNET_GA    | Disable periodic transmissions of the Telnet "Go Ahead" command (Telnet only) | |NO_TELNET_GA    | Disable periodic transmissions of the Telnet "Go Ahead" command (Telnet only) |
 |NO_HOST_LOOKUP  | Do not attempt hostname look-ups on incoming connections (log IP addresses only) | |NO_HOST_LOOKUP  | Do not attempt hostname look-ups on incoming connections (log IP addresses only) |
Line 335: Line 393:
 |NO_RECYCLE      | Disable the ability for the terminal server to be recycled | |NO_RECYCLE      | Disable the ability for the terminal server to be recycled |
 |GET_IDENT | Use the IDENT protocol on incoming connections | |GET_IDENT | Use the IDENT protocol on incoming connections |
-|MUTE | Disable all local sound output |+
  
 ==== [FTP] ==== ==== [FTP] ====
Line 350: Line 408:
  
 ==== [Services] ==== ==== [Services] ====
 +
 +^ Key           ^ Default            ^ Description ^
 +| iniFileName   | ''services.ini''   | Configuration file in the ''[[dir:ctrl]]'' directory that contains list of supported services |
 +| Interfaces    | //Global//         | Network interfaces to bind/listen |
 +| JavaScript*   | //Global//         | JavaScript operating parameters |
 +| LoginAttempt* | //Global//         | Hack attempt counter-measure configuration |
 +| HostName      | //Global//         | Public host name |
 +| TempDirectory | //Global//         | Temporary file directory |
 +| SemFileCheckFrequency | //Global// | Frequency (interval) in seconds between semaphore file checks |
 +| AnswerSound    |                    | WAV file to play upon answering an incoming connection |
 +| HangupSound    |                    | WAV file to play upon client disconnection |
 +| BindRetryCount | //Global//         | Maximum of number of network interface bind retries |
 +| BindRetryDelay | //Global//         | Seconds between bind retry attempts |
 +| LogLevel       | //Global//         | Minimum severity of log messages to be logged |
 +| Options        | ''NO_HOST_LOOKUP'' | Option flags to apply to all services by default |
  
 See [[:service:index|Services]] and [[:config:services.ini]] for more details. See [[:service:index|Services]] and [[:config:services.ini]] for more details.
Line 362: Line 435:
    
  
-{{tag>sbbs.ini}}+{{tag>configuration general_config ini}}