====== System Configuration ======

The system-wide configuration options are configured in the [[util:scfg:|Synchronet Configuration Utility (SCFG)]]. The //System// menu contains identity, time/date defaults, and entry points to most other BBS-wide settings. The first five rows (//BBS Name//, //Location//, //Local Time Zone//, //Short Date Format//, //Operator//) are direct fields; the rest open sub-menus:

  * **[[#notifications|Notifications]]** — which sysop activities generate notifications and how they are delivered.
  * **[[#toggle_options|Toggle Options]]** — yes/no BBS-wide behaviors (aliases, time-banking, credit conversions, military time, etc.).
  * **[[#new_user_values|New User Values]]** — defaults applied to fresh user accounts (initial security level, credits, time, etc.).
  * **[[#new_user_prompts|New User Prompts]]** — which fields a new user is asked to fill in during account creation.
  * **[[#security_options|Security Options]]** — password requirements, expiration policy, user expiration, and other account-security knobs.
  * **[[#advanced_options|Advanced Options]]** — less-commonly-changed settings (directory paths, log file size, inactivity timeouts, cache intervals, etc.).
  * **[[#loadable_modules|Loadable Modules]]** — per-event Baja / JavaScript modules invoked at logon, logoff, new-user creation, and other lifecycle points.
  * **[[#extra_attribute_codes|Extra Attribute Codes]]** — enable support for other BBS programs' color-code syntaxes (WWIV, PCBoard, Wildcat, Celerity, Renegade) so display files authored for those systems render correctly.

Changes take effect immediately on save (no server recycle needed for these), though running sessions may still display the old values until the user logs off.

  ╔═══════════════════════════════════════════════╗
  ║              System Configuration             ║
  ╠═══════════════════════════════════════════════╣
  ║ │BBS Name            My BBS                   ║
  ║ │Location            My City, State           ║
  ║ │Local Time Zone     Auto: UTC-7:00           ║
  ║ │Short Date Format   MM/DD/YY (e.g. Jul10/25) ║
  ║ │Operator            Sysop                    ║
  ║ │Notifications...                             ║
  ║ │Toggle Options...                            ║
  ║ │New User Values...                           ║
  ║ │New User Prompts...                          ║
  ║ │Security Options...                          ║
  ║ │Advanced Options...                          ║
  ║ │Loadable Modules...                          ║
  ║ │Extra Attribute Codes...                     ║
  ╚═══════════════════════════════════════════════╝

^ Option Name ^ Description ^
| BBS Name | This is the name of the BBS. |
| Location | This is the location of the BBS. The format is flexible, but it is suggested you use "City, State" format for clarity. |
| Local Time Zone | Choose the region which most closely reflects your local time zone. If your time zone is not listed, choose "not US" and then "Other..." from the menu. You will then be able to set the UTC offset manually. Automatic local time zone detection is the default. |
| Short Date Format | Choose the order, format (verbal or numeric), and separators of fields used in abbreviated date displays. |
| Operator | This is the name or alias of the system operator. This does not have to be the same as user #1, but usually should be. This field is used for informational purposes only. |

===== Notifications =====
Configure settings related to notifications sent to the operators of
the system via email and instant messages.
  ╔══════════════════════════════════╗
  ║   System Operator Notifications  ║
  ╠══════════════════════════════════╣
  ║ │New User Feedback      Nobody   ║
  ║ │Error Notifications    Nobody   ║
  ║ │Error Level            Critical ║
  ╚══════════════════════════════════╝

^ Option Name         ^ Description ^
| New User Feedback   | User number to whom feedback (e-mail) from new users will be sent (typically the sysop, ''1''). Set to ''0'' to disable the new-user feedback prompt. The new user will be required to send a feedback message before completing registration. |
| Error Notifications | User number to whom error notifications are sent. ''0'' = nobody (errors are still logged to ''[[dir:data]]/error.log'' regardless). The normal value is ''1'' (user #1, the sysop). |
| Error Level         | Minimum severity for which an error triggers a notification. Levels: ''Emergency'' / ''Alert'' / ''Critical'' / ''Error'' / ''Warning'' / ''Notice'' / ''Informational'' / ''Debug''. Default: ''Critical''. //Only shown when Error Notifications is non-zero.// |

===== Toggle Options =====
  ╔═════════════════════════════════════════╗
  ║              Toggle Options             ║
  ╠═════════════════════════════════════════╣
  ║ │Allow User Aliases                 Yes ║
  ║ │Allow Time Banking                 No  ║
  ║ │Allow Credit Conversions           Yes ║
  ║ │Short Sysop Page                   No  ║
  ║ │Include Sysop in Statistics        No  ║
  ║ │Use Location in User Lists         Yes ║
  ║ │Military (24 hour) Time Format     No  ║
  ║ │Display Sys Info During Logon      Yes ║
  ║ │Display Node List During Logon     Yes ║
  ║ │Mouse Hot-spots in Menus/Prompts   Yes ║
  ║ │Spinning Cursor at Pause Prompts   Yes ║
  ╚═════════════════════════════════════════╝

This is a menu of system related options that can be toggled between two or more states, such as Yes and No.

^ Option Name         ^ Default       ^ Description       ^
| Allow User Aliases | Yes | Allow users to be known by a handle, alias, or callsign. If you want all users on your system to be known only by their real names, select No. |
| Allow Time Banking | No | Allow users to deposit any extra time they may have left during a call into their [[access:minutes|minute bank]]. If this option is set to No, then the only way a user may get minutes in their minute bank is to purchase them with credits. |
| Allow Credit Conversions | Yes | Allow users to convert any [[access:credits|credits]] they may have into minutes for their minute bank. |
| Short Sysop Page | No | Audibly page the sysop with a short series of beeps instead of continuous random tones. |
| Include Sysop in Statistics | No | Include sysops in the statistical data of the BBS. The suggested setting for this option is No so that statistical data will only reflect user usage and not include sysop maintenance activity. |
| Use Location in User Lists | Yes | Display user locations (city, state) in the user lists. If this option is set to No, the user notes (if they exist) are displayed instead. |
| Military (24 hour) Time Format | No | Display and enter time of day in 24-hour format. |
| Display Sys Info During Logon | Yes | Display system information during logon. |
| Display Node List During Logon | Yes | Display the active nodes during logon. |
| Mouse Hot-spots in Menus/Prompts | Yes | Enable [[howto:mouse]] hot-spots in the BBS menus and prompts. |
| Spinning Cursor at Pause Prompts | Yes | Display a spinning cursor at the ''[Hit a key]'' prompt |
===== New User Values =====
  ╔════════════════════════════════════════╗
  ║             New User Values            ║
  ╠════════════════════════════════════════╣
  ║ │Level                      50         ║
  ║ │Flag Set #1                           ║
  ║ │Flag Set #2                           ║
  ║ │Flag Set #3                           ║
  ║ │Flag Set #4                           ║
  ║ │Exemptions                            ║
  ║ │Restrictions                          ║
  ║ │Expiration Days            0          ║
  ║ │Credits                    10,485,760 ║
  ║ │Minutes                    0          ║
  ║ │Editor                     FSEDITOR   ║
  ║ │Command Shell              DEFAULT    ║
  ║ │Download Protocol          Z          ║
  ║ │Days of New Messages       0          ║
  ║ │Gender Options             MFX        ║
  ║ │Default Toggles...                    ║
  ║ │QWK Packet Settings...                ║
  ╚════════════════════════════════════════╝

This allows you to modify the security values assigned to a new user
account. You can also set the number of credits and minutes new users start
off with. If you have configured an alternate command shell or external
editors, you may select one of these as the default for new users. See the
[[https://www.synchro.net/docs/user_editor.html|User Editor]] documentation for more information about user account values.

^ Option Name          ^ Default  ^ Description ^
| Level                | 50       | [[access:level|Security level]] automatically given to new users. |
| Flag Set #1          | <emtpy>  | Security [[access:flags]] automatically given to new users. |
| Flag Set #2          | <empty>  | Security flags automatically given to new users. |
| Flag Set #3          | <empty>  | Security flags automatically given to new users. |
| Flag Set #4          | <empty>  | Security flags automatically given to new users. |
| Exemptions           | <empty>  | [[access:Exemptions]] that are automatically given to new users. |
| Restrictions         | <empty>  | [[access:Restrictions]] that are automatically given to new users. |
| Expiration Days      | 0        | If you wish new users to have an automatic expiration date, set this value to the number of days before the user will expire. To disable New User expiration, set this value to 0. |
| Credits              | 10,485,760 | This is the amount of [[access:credits]] that are automatically given to new users. |
| Minutes              | 0        | The number of extra [[access:minutes]] automatically given to new users. |
| Editor               | [[module:fseditor|FSEDITOR]] | You can use this option to select the default [[howto:editor:index]] for new users. |
| Command Shell        | DEFAULT  | Set the default [[custom:command_shell]] for new users. |
| Download Protocol    | Z        | Set the default download protocol of new users (protocol command key or BLANK for no default). |
| Days of New Messages | 0        | Set the number of days of messages that will be included in the new user's first new message scan. \\ \\ The value 0 means there will be no new messages for the new user. |
| Gender Options       | MFX      | List of single-character gender options for new users to choose from. |

==== Default Toggle Options ====
  ╔═══════════════════════════════════════╗
  ║         Default Toggle Options        ║
  ╠═══════════════════════════════════════╣
  ║ │Expert Menu Mode               No    ║
  ║ │Screen Pause                   Yes   ║
  ║ │Spinning Cursor                No    ║
  ║ │Clear Screen Between Messages  No    ║
  ║ │Ask For New Scan               Yes   ║
  ║ │Ask For Your Msg Scan          No    ║
  ║ │Automatic New File Scan        Yes   ║
  ║ │Remember Current Sub-board     Yes   ║
  ║ │Batch Download File Flagging   Yes   ║
  ║ │Extended File Descriptions     No    ║
  ║ │Mouse-enabled Terminal         No    ║
  ║ │Auto Hang-up After Xfer        No    ║
  ║ │Multinode Chat Echo            No    ║
  ║ │Multinode Chat Actions         No    ║
  ║ │Pageable for Chat              Yes   ║
  ║ │Node Activity Messages         Yes   ║
  ║ │Split-Screen Private Chat      Yes   ║
  ╚═══════════════════════════════════════╝

This menu contains the default state of new user toggle options. All new users on your system will have their defaults set according to the settings on this menu. The user can then change them to his or her liking.

^ Option Name                ^ Default ^ Description ^
| Expert Menu Mode             | No      | When Expert menu mode is turned off menus automatically appear at each new command prompt. When Expert menu mode is turned on menus only appear as requested with the '?' command. Expert menu mode off is generally referred to as Novice mode. |
| Screen Pause                 | Yes     | When this option is on, every screen full of text displayed to you will pause with a "Hit a key" prompt. When this option is off, the user must use the Ctrl-S and Ctrl-Q commands to pause and unpause scrolling text. |
| Spinning Cursor              | No      | Spinning cursor, generally displayed when a keypress is required to continue. |
| Clear Screen Between Messages | No     | Screen clearing before each message (posts or E-mail) is displayed. |
| Ask For New Scan             | Yes     | Each time a user logs on, ask if they'd like to perform a new messages scan. |
| Ask For Your Msg Scan        | No      | Each time a user logs on, ask if they'd like to perform a scan for messages addressed to them. |
| Automatic New File Scan      | Yes     | Automatic new file scanning after a New Message Scan All (NA or /N) from the Main Section. |
| Remember Current Sub-board   | Yes     | Whether or not the BBS remembers your current subboard each time you logoff. |
| Batch Download File Flagging | Yes     | Batch Download File Flagging prompt that is displayed after each screen full of files are listed to you. This function is handy for quickly adding files to the batch download queue without having to type the name of each file. Batch Download File Flagging can be temporarily toggled with the &B command from the Transfer Section. |
| Extended File Descriptions   | No      | Extended (multi-line) file descriptions in file listings. |
| Mouse-enabled Terminal       | No      | New users default to mouse hot-spot processing being enabled. Replaced the old "Hot Keys" toggle in commit ''[[https://gitlab.synchro.net/main/sbbs/-/commit/22eb32334a30d02e3aab4ba89c64a0fb2869c40a|22eb3233]]'' (2026-01-15) — disabling hot keys was no longer supported. |
| Auto Hang-up After Xfer      | No      | Automatically disconnect after file transfers. |
| Multinode Chat Echo          | No      | Echo each typed character to the user when in multinode chat (split-screen chat). |
| Multinode Chat Actions       | No      | Default-on for multinode chat actions (e.g. ''SMILE'', ''WAVE'') vs treating those tokens as plain text. |
| Pageable for Chat            | Yes     | User is paged when other users use the ''/PAGE'' command (i.e. discoverable for chat). |
| Node Activity Messages       | Yes     | Receive on-screen notifications when other nodes log in/out, post, etc. |
| Split-Screen Private Chat    | Yes     | Default to split-screen layout for private node-to-node chat. |

==== QWK Packet Settings ====

The //New User Values → QWK Packet Settings// sub-menu sets the default state of new users' [[ref:qwk|QWK packet]] preferences. The user can change them later under their own preferences.

  ╔════════════════════════════════════════════════════╗
  ║              QWK Message Packet Settings           ║
  ╠════════════════════════════════════════════════════╣
  ║ │Include QWKE Extensions          No               ║
  ║ │Include Ctrl-A Codes             Yes              ║
  ║ │Include UTF-8 Characters         Yes              ║
  ║ │Include New Files List           Yes              ║
  ║ │Include File Attachments         No               ║
  ║ │Include Messages From Self       No               ║
  ║ │Include Email Messages           Unread           ║
  ║ │Delete Downloaded Email          No               ║
  ║ │Include Index Files              Yes              ║
  ║ │Include Control Files            Yes              ║
  ║ │Include Time Zone Kludges        Yes              ║
  ║ │Include Via/Routing Kludges      Yes              ║
  ║ │Include Message-ID Kludges       Yes              ║
  ║ │Include HEADERS.DAT File         Yes              ║
  ║ │Include VOTING.DAT File          Yes              ║
  ╚════════════════════════════════════════════════════╝

^ Option Name                  ^ Values ^ Description ^
| Include QWKE Extensions      | Yes/No | Include [[ref:qwk|QWK Extended (QWKE)]] extensions in the packet. Useful for QWKE-aware readers; superfluous when ''HEADERS.DAT'' is included. |
| Include Ctrl-A Codes         | Yes / Expand / No | How to handle Synchronet Ctrl-A attribute codes in exported messages: ''Yes'' = leave intact, ''Expand'' = convert to ANSI escape sequences, ''No'' = strip. |
| Include UTF-8 Characters     | Yes/No | Export message bodies as UTF-8 (and use ASCII LF as the QWK newline rather than the traditional ''\xE3'' / 227 byte). |
| Include New Files List       | Yes/No | Include a ''NEWFILES.DAT'' listing of files uploaded to the system since the user's last logon. |
| Include File Attachments     | Yes/No | Include any file attachments referenced by exported messages. |
| Include Messages From Self   | Yes/No | Include messages the user themselves posted (i.e. their own outbound messages on networked subs). |
| Include Email Messages       | All / Unread / No | Include the user's e-mail in the packet — all, only unread, or none. |
| Delete Downloaded Email      | Yes/No | Delete the user's e-mail from the system after it has been downloaded in the packet (offline reader will retain it). |
| Include Index Files          | Yes/No | Include per-conference ''*.NDX'' index files. |
| Include Control Files        | Yes/No | Include the QWK ''CONTROL.DAT'' file. |
| Include Time Zone Kludges    | Yes/No | Include FidoNet-style ''@TZ'' kludge lines indicating the original time zone. |
| Include Via/Routing Kludges  | Yes/No | Include ''@VIA'' kludge lines tracing the routing of imported messages. |
| Include Message-ID Kludges   | Yes/No | Include ''@MSGID'' / ''@REPLY'' kludge lines (FidoNet-style message identifiers). |
| Include HEADERS.DAT File     | Yes/No | Include the v3.15+ ''HEADERS.DAT'' file with full per-message metadata (works around the 25-character QWK header field limits). Recommended. |
| Include VOTING.DAT File      | Yes/No | Include the v3.17+ ''VOTING.DAT'' file with poll/vote information. |

===== New User Prompts =====
  ╔══════════════════════════════════════╗
  ║      New User Questions/Prompts      ║
  ╠══════════════════════════════════════╣
  ║ │Real Name                       Yes ║
  ║ │Force Multi-word Real Name      Yes ║
  ║ │Force Unique Real Name          Yes ║
  ║ │Force Upper/Lower Case          Yes ║
  ║ │Company Name                    No  ║
  ║ │Chat Handle / Call Sign         Yes ║
  ║ │Force Unique Handle / Call Sign Yes ║
  ║ │Email/NetMail Address           Yes ║
  ║ │Force Unique Email/NetMail      No  ║
  ║ │Gender                          Yes ║
  ║ │Birth Date                      Yes ║
  ║ │Address and Zip Code            No  ║
  ║ │Location                        Yes ║
  ║ │Require Comma in Location       No  ║
  ║ │Phone Number                    No  ║
  ║ │Allow EX-ASCII in Answers       Yes ║
  ║ │External Editor                 No  ║
  ║ │Command Shell                   Yes ║
  ║ │Default Settings                Yes ║
  ║ │Color Terminal                  No  ║
  ╚══════════════════════════════════════╝

This menu allows you to decide which questions will be asked of a new user when they're creating their account.

^ Option Name                 ^ Default ^ Description ^
| Real Name                   | Yes     | Ask new user for their real name. |
| Force Multi-word Real Name      | Yes     | Require the real name to contain at least one space (i.e. require first-name and last-name format rather than a single word). |
| Force Unique Real Name          | Yes     | Require real name and ensure that there isn't already a user with the same real name. |
| Force Upper/Lower Case          | Yes     | Require that all names/locations are capitalized. |
| Company Name                    | No      | When user aliases are **not** allowed, optionally use the real name field to store a company name. |
| Chat Handle / Call Sign         | Yes     | Ask new user their nickname for chat or [[https://en.wikipedia.org/wiki/Amateur_radio_call_signs|Amateur Radio callsign]]. |
| Force Unique Handle / Call Sign | Yes     | Require handle/call and ensure that another user doesn't have that handle/call already. |
| Email/NetMail Address           | Yes     | Internet email or direct [[ref:fidonet|NetMail]] address. |
| Force Unique Email/NetMail      | No      | Prevent new users from using the same email address as an existing user. |
| Gender                          | Yes     | Ask new user to identify their gender. |
| Birth Date                      | Yes     | Ask new user their date of birth. |
| Address and Zip Code        | No      | Ask new user their address and zip/postal code. |
| Location                    | Yes     | Short location sometimes displayed next to a user's name. Typically a city and state. |
| Require Comma in Location   | No      | Force comma in the location as an attempt at forcing both a city and state. |
| Phone Number                | No      | Ask new user their phone number. |
| Allow EX-ASCII in Answers   | Yes     | Allow the use of [[https://en.wikipedia.org/wiki/Extended_ASCII|Extended ASCII]] characters in user strings. |
| External Editor             | No      | Ask if the user prefers a [[howto:editor:index|full screen editor]] when composing messages. |
| Command Shell               | Yes     | Ask which [[custom:command_shell|Command Shell]] the user prefers. |
| Default Settings            | Yes     | Display to new user their default settings and allow them to make changes. |
| Color Terminal              | No      | Ask new users if they are using a color terminal. |

===== Security Options =====
  ╔══════════════════════════════════════════════════════════════════════╗
  ║                           Security Options                           ║
  ╠══════════════════════════════════════════════════════════════════════╣
  ║ │System Password                  *******                            ║
  ║ │Prompt for System Password       At Login and After 15 minutes      ║
  ║ │Allow Sysop Access               Yes                                ║
  ║ │Allow Login by Real Name         No                                 ║
  ║ │Allow Login by User Number       No                                 ║
  ║ │Users Can Choose Password        Yes, 4 chars minimum               ║
  ║ │Demand High Quality Password     No                                 ║
  ║ │Always Prompt for Password       No                                 ║
  ║ │Display/Log Passwords Locally    Yes                                ║
  ║ │Days to Preserve Deleted Users   14                                 ║
  ║ │Maximum Days of User Inactivity  180                                ║
  ║ │Open to New Users                Yes                                ║
  ║ │User Expires When Out-of-time    No                                 ║
  ║ │Create Self-signed Certificate   Yes                                ║
  ║ │Security Level Values...                                            ║
  ║ │Expired Account Values...                                           ║
  ║ │Quick-Validation Values...                                          ║
  ╚══════════════════════════════════════════════════════════════════════╝
  

^ Option Name                     ^ Description ^
| System Password                 | This is an extra security password may be required for sysop login and sysop functions.  This password should be something not easily guessed and should be kept absolutely confidential.\\ \\ This password must be entered at the Terminal Server ''SY:'' prompt. |
| Prompt for System Password | Require the system password, along with the sysop's personal user account password, immediately when a system operator is logging in. "Allow Sysop Access" must be set to Yes for this setting to take effect. |
| Allow Sysop Access | Allow users with system operator access to perform privileged sysop functions while logged into the BBS. Setting this option to No will prevent users with sysop [[access:level|security level]] from invoking functions that require system-password authentication. Instead, when a sysop function is attempted the request is ignored. \\ \\ This effectively overrides "Require Sys Pass During Login" below. The sysop will still be able to login to the BBS as a normal user, but will not be asked for the system password and will not be able to invoke sysop functions that required the password. \\ \\ This setting also affects the sysop actions available in the [[server:ftp|FTP server]] when authenticating with <user-pass>:<system-pass> as the password. The sysop user can still authenticate and login, but none of the sysop actions will be available to them. |
| Allow Login by Real Name | If you want users to be able login using their real name as well as their alias, set this option to Yes. \\ \\ For elevated security (but lower user-friendliness), set this option to No. |
| Allow Login by User Number | If you want users to be able login using their user number at the login prompt, set this option to Yes. \\ \\ For elevated security, set to this option to No. |
| Users Can Choose Password | Toggle whether users can change their randomly-generated password to one of their own choosing. \\ \\ When set to ''Yes'', SCFG follows up with two related sub-prompts: \\ \\ - **Minimum Password Length** — minimum acceptable password length, in characters (between 4 and 40). For elevated security set this to at least ''8''. \\ - **Force Periodic New Password** — if ''Yes'', users are forced to change their password every N days. Then prompts for **Maximum Days Between New Passwords** (''0'' disables; for elevated security use ''90'' or less). |
| Demand High Quality Password | If you want users to be required to have a "high quality" password based on calculated entropy, set this option to Yes. \\ \\ For elevated security (but lower user-friendliness), set this option to Yes. |
| Always Prompt for Password | If you want to have attempted logins using an unknown login ID still prompt for a password, set this option to Yes. \\ \\ For elevated security (but lower user-friendliness), set this option to Yes. |
| Display/Log Passwords Locally | Displays passwords locally and logs them to disk (e.g., when there's a failed login attempt). \\ \\ For [[howto:hardening|elevated security]], set this option to No. |
| Days to Preserve Deleted Users | Deleted user slots can be "undeleted" until the slot is written over by a new user. If you want deleted user slots to be preserved for period of time since their last logon, set this value to the number of days to keep new users from taking over a deleted user's slot. |
| Maximum Days of Inactivity | If you want users that have not logged-on in a certain period of time to be automatically deleted, set this value to the maximum number of days of inactivity before the user is deleted. Setting this value to "0" disables this feature. \\ \\ User accounts with the "P" (permanent) [[access:exemptions|exemption]] will not be deleted due to inactivity. |
| Open to New Users | Allow users to logon on as 'New' to create (register) a new user account. \\ \\ If you want callers to only be able to logon as "New" **only** if they know a secret password, enter that password when prompted. If you prefer any caller be able to logon as "New," leave the New User Password option blank. |
| User Expires When Out-of-time | If you want users to be set to Expired Account Values if they run out of time online, then set this option to Yes. Nobody enables this option these days. |
| Create Self-signed Certificate | If you want Synchronet to automatically create a self-signed certificate (for TLS connections) when the certificate file ''[[config:ssl.cert]]'' cannot be found or read, set this option to Yes. |                              


==== Security Level Values ====
  ╔════════════════════════════════════════════════════════════════════╗
  ║  Level   T/D   T/C   C/D   E/D   P/D   L/M   D/D    F/D  Expire To ║
  ╠════════════════════════════════════════════════════════════════════╣
  ║ │0         1     1     1     1     1    20     *      0   Level  0 ║
  ║ │1         1     1     1     1     1    20     *     1K   Level  0 ║
  ║ │2         2     2     2     2     2    20     *     2K   Level  0 ║
  ║ │3         3     3     3     3     3    20     *     3K   Level  0 ║
  ║ │4         4     4     4     4     4    20     *     4K   Level  0 ║
  ║ │5         5     5     5     5     5    20     *     5K   Level  0 ║
  ║ │6         6     6     6     5     5    20     *     6K   Level  0 ║
  ║ │7         7     7     7     5     5    20     *     7K   Level  0 ║
  ║ │8         8     8     8     5     5    20     *     8K   Level  0 ║
  ║ │9         9     9     9     5     5    20     *     9K   Level  0 ║
  ║ │10       20    10    10    10    10    30     *    10K   Level  0 ║
  ║ │11       20    11    11    10    10    30     *    11K   Level  0 ║
  ║ │12       20    12    12    10    10    30     *    12K   Level  0 ║
  ║ │13       20    13    13    10    10    30     *    13K   Level  0 ║
  ╚════════════════════════════════════════════════════════════════════╝

Selecting the desired security level will bring you to another menu similar to
the following:

  ╔══════════════════════════════════╗
  ║     Security Level 50 Values     ║
  ╠══════════════════════════════════╣
  ║ │Time Per Day          480       ║
  ║ │Time Per Call         240       ║
  ║ │Calls Per Day         50        ║
  ║ │Email Per Day         50        ║
  ║ │Posts Per Day         50        ║
  ║ │Lines Per Message     200       ║
  ║ │Downloads Per Day     Unlimited ║
  ║ │Free Credits Per Day  10000K    ║
  ║ │Expire To             Level 0   ║
  ╚══════════════════════════════════╝

Here you can modify the corresponding values for that particular [[access:level|security level]] (0-99). These values will be given to **all** users who have the selected security level. Many of these values may be overridden by giving certain users the necessary [[access:exemptions|exemptions]] (if required).

**Note:** Levels 90 through 99 are reserved for sysops and co-sysops.

^ Option Name          ^ Default ^ Description ^
| Time Per Day         | 480     | The maximum amount of time (in minutes) that the user will be allowed to be online. See the ''T'' [[access:exemptions|exemption]] flag. Supported values: 0-65535. |
| Time Per Call        | 240     | The maximum amount of time (in minutes) that the user will be allowed to be online per connection/call. See the ''T'' [[access:exemptions|exemption]] flag. Supported values: 0-65535. |
| Calls Per Day        | 50      | Maximum number of calls/connections per day by the user. See the ''L'' [[access:exemptions|exemption]] flag. Supported values: 0-65535. |
| Email Per Day        | 50      | Maximum number of email, including local and network mail (netmail) messages that the user will be able to send per day. See the ''M'' [[access:exemptions|exemption]] flag. Supported values: 0-65535. |
| Posts Per Day        | 50      | Maximum number of messages that the user will be allowed to post per day (on sub-boards). Supported values: 0-65535. |
| Lines Per Message    | 200     | Limits the length of messages (posts and email) that the user can send. Supported values: 0-65535. |
| Downloads Per Day    | Unlimited | Maximum number of files downloaded per day. |
| Free Credits Per Day | 10000K  | The number of free [[access:credits|credits]] that are awarded to users with this security level each day they logon. Free credits do not rollover to the following day. Supported values: 0-4GB. |
| Expire To            | Level 0 | A specific level or validation set that users with this security level will be given when the user expires. |

==== Expired Account Values ====
  ╔══════════════════════════════════════════════════════════╗
  ║                  Expired Account Values                  ║
  ╠══════════════════════════════════════════════════════════╣
  ║ │Level                      0                            ║
  ║ │Flag Set #1 to Remove                                   ║
  ║ │Flag Set #2 to Remove                                   ║
  ║ │Flag Set #3 to Remove                                   ║
  ║ │Flag Set #4 to Remove                                   ║
  ║ │Exemptions to Remove                                    ║
  ║ │Restrictions to Add                                     ║
  ╚══════════════════════════════════════════════════════════╝

If a user's account expires, the [[access:level|Security Levels]] for that account will be modified according to the settings of this menu. The expired account's Security Level will be set to the value listed in this menu. The [[access:flags|Flags]] and [[access:exemptions|Exemptions]] listed on this menu will be removed from the account if they are set. The [[access:restrictions|Restrictions]] listed will be added to the account.                                     

^ Option Name           ^ Description ^
| Level                 | [[access:level|Security Level]] given to expired user accounts.                   |
| Flag Set #1 to Remove | [[access:flags|Security Flags]] removed when a user account has expired.          |
| Flag Set #2 to Remove | Security Flags removed when a user account has expired.          |
| Flag Set #3 to Remove | Security Flags removed when a user account has expired.          |
| Flag Set #4 to Remove | Security Flags removed when a user account has expired.          |
| Exemptions to Remove  | [[access:exemptions|Exemptions]] that are removed from a user account when it expires. |
| Restrictions to Add   | [[access:restrictions|Restrictions]] that are added to a user account when it expires.   |


==== Quick-Validation Values ====
  ╔═════════════════════════╗
  ║ Quick-Validation Values ║
  ╠═════════════════════════╣
  ║ │0  SL: 10  F1:         ║
  ║ │1  SL: 10  F1:         ║
  ║ │2  SL: 20  F1:         ║
  ║ │3  SL: 30  F1:         ║
  ║ │4  SL: 40  F1:         ║
  ║ │5  SL: 50  F1:         ║
  ║ │6  SL: 60  F1:         ║
  ║ │7  SL: 70  F1:         ║
  ║ │8  SL: 80  F1:         ║
  ║ │9  SL: 90  F1:         ║
  ╚═════════════════════════╝

Selecting a level from this list will bring you to another menu similar to the following:

  ╔═══════════════════════════════╗
  ║     Quick-Validation Set 0    ║
  ╠═══════════════════════════════╣
  ║ │Level                 10     ║
  ║ │Flag Set #1                  ║
  ║ │Flag Set #2                  ║
  ║ │Flag Set #3                  ║
  ║ │Flag Set #4                  ║
  ║ │Exemptions                   ║
  ║ │Restrictions                 ║
  ║ │Extend Expiration     0 days ║
  ║ │Additional Credits    0      ║
  ╚═══════════════════════════════╝

This is a list of the ten quick-validation sets. These sets are used to quickly set a user's security values ([[access:level|Level]], [[access:flags|Flags]], [[access:exemptions|Exemptions]], [[access:restrictions|Restrictions]], Expiration Date, and [[access:credits|Credits]]) with one keystroke. Also, the user's expiration date may be extended and additional credits may be added.

From within the User Edit function, a sysop can use the Validate User command and select from this quick-validation list to change a user's security values with very few keystrokes. This is done with the 'V' command from the User Editor when logged-in to the BBS (;UEDIT command), or from the user list in [[monitor:gtkmonitor|GtkMonitor]] on Unix systems.

^ Option Name        ^ Description ^
| Level              | [[access:level|Security Level]] given to the validated user. |
| Flag Set #1        | [[access:flags|Security Flags]] added to the validated user. |
| Flag Set #2        | Security flags added to the validated user. |
| Flag Set #3        | Security flags added to the validated user. |
| Flag Set #4        | Security flags added to the validated user. |
| Exemptions         | [[access:exemptions|Exemptions]] that are added to the validated user. |
| Restrictions       | [[access:restrictions|Restrictions]] that are added to the validated user. |
| Extend Expiration  | Extend the user account expiration date by this number of days. |
| Additional Credits | Amount of additional [[access:credits|Credits]] that will be given to the validated user. |

===== Advanced Options =====
  ╔══════════════════════════════════════════╗
  ║             Advanced Options             ║
  ╠══════════════════════════════════════════╣
  ║ │New User Magic Word                     ║
  ║ │Data Directory             ../data/     ║
  ║ │Logs Directory             ../data/     ║
  ║ │Exec Directory             ../exec/     ║
  ║ │Mods Directory             ../mods/     ║
  ║ │Input SIF Questionnaire                 ║
  ║ │Output SIF Questionnaire                ║
  ║ │Credits Per Dollar         2,097,152    ║
  ║ │Minutes Per 100K Credits   6            ║
  ║ │Maximum Number of Minutes  Unlimited    ║
  ║ │Warning Days Till Expire   30           ║
  ║ │Last Displayable Node      250          ║
  ║ │Phone Number Format        !!!!!!!!!!!! ║
  ║ │Sysop Chat Override                     ║
  ║ │User Database Backups      5            ║
  ║ │Mail Database Backups      5            ║
  ║ │Configuration Backups      5            ║
  ║ │Maximum Log File Size      Unlimited    ║
  ║ │Maximum User Inactivity    5 minutes    ║
  ║ │User Inactivity Warning    75 percent   ║
  ║ │Control Key Pass-through   0            ║
  ║ │Statistics Interval        5s           ║
  ║ │Cache Filter Files         5s           ║
  ╚══════════════════════════════════════════╝
  

Care should be taken when modifying any of the options listed here.

**Note:** For the directories, forward slashes will work in Windows and are preferred over backslashes as they will work cross-platform.

^ Option Name ^ Default ^ Description ^
| New User Magic Word | <empty> | If this field has a value, it is assumed the sysop has placed some reference to this magic word in text/newuser.msg and new users will be prompted for the magic word after they enter their password. If they do not enter it correctly, it is assumed they didn't read the new user information displayed to them and they are disconnected. \\ \\ Think of it as a password to guarantee that new users read the text displayed to them. |
| Data Directory | ../data | The Synchronet [[dir:data|data directory]] contains almost all the data for your BBS. This directory must be located where **all** nodes can access it and **must not** be placed on a RAM disk or other volatile media. \\ \\ This option allows you to change the location of your data directory. |
| Logs Directory | ../data | Log files will be stored in this directory. \\ \\ By default, this is set to the same as your Data File directory. |
| Exec Directory | ../exec | The Synchronet [[dir:exec|exec directory]] contains program and script files that the BBS executes. This directory does not need to be in your OS search path. \\ \\ If you place programs in this directory for the BBS to execute, you should place the %! specifier for the exec directory at the beginning of the configured command-lines. \\ \\ This option allows you to change the location of your exec directory. |
| Mods Directory | ../mods | This optional [[dir:mods|mods directory]] can be used to specify a location where modified module files are stored. These modified modules will take precedence over modules with the same filename (in the exec directory) and will not be overwritten by future updates/upgrades. \\ \\ Sub-directory searches of this directory also take precedence (e.g. mods/load/* overrides exec/load/*). \\ \\ If this directory is blank, then this feature is not used and all modules are assumed to be located in the exec directory. |
| Input SIF Questionnaire | <empty> | This is the name of a [[https://www.synchro.net/docs/customization.html#SIFQuestionnaireFile|SIF questionnaire]] file that resides your [[dir:text|text directory]] that all users will be prompted to answer when creating their new user account. |
| Output SIF Questionnaire | <empty> | This is the SIF file used when the Sysop reviews the questionnaire answers from the user edit function (;UEDIT). If no output SIF is specified, the input SIF questionnaire is used. |
| Credits Per Dollar | 2,097,152 (= 2M) | How many bytes of credit one dollar represents. Credits are a byte-denominated download budget — file downloads debit a user's credit balance by the file's byte count, and credit-to-minute conversions debit in 100 KiB blocks. Accepts byte suffixes (''K''/''M''/''G''). The default 2,097,152 = ''2M'' = 2 MiB / dollar. \\ \\ Binary-aligned values (''1M'', ''2M'', ''4M'', etc.) are conventional, reflecting the era when sysops priced downloads as "$N per binary megabyte". They are not required for any internal math — the 100 KiB conversion block is not itself a power of 2 — they just produce tidy "$1 = 2 MiB" arithmetic. |
| Minutes Per 100k Credits | 6 | This is the value of a minute of time online. This field is the number of minutes to give the user in exchange for each 100K credit block. |
| Maximum Number of Minutes | Unlimited | This value is the maximum total number of minutes a user can have. If a user has this number of minutes or more, they will not be allowed to convert credits into minutes. A sysop can add minutes to a user's account regardless of this maximum. If this value is set to 0, users will have no limit on the total number of minutes they can have. |
| Warning Days Till Expire | 30 | If a user's account will expire in this many days or less, the user will be notified at logon. Setting this value to 0 disables the warning completely. |
| Last Displayable Node | 250 | This is the number of the last node to display to users in node lists. This allows the sysop to define the higher numbered nodes as invisible to users. |
| Phone Number Format |!!!!!!!!!!!! | This is the format used for phone numbers in your local calling area. Use N for number positions, A for alphabetic, or ! for any character. All other characters will be static in the phone number format. An example for North American phone numbers is NNN-NNN-NNNN. |
| Sysop Chat Override | <blank> | Any user meeting the criteria set here will be able to page the sysop regardless of the status of the sysop availability.|
| User Database Backups | 5 | Setting this option to anything but 0 will enable automatic daily backups of the user database. This number determines how many backups to keep on disk. |
| Mail Database Backups | 5 | Setting this option to anything but 0 will enable automatic daily backups of the mail database. This number determines how many backups to keep on disk. |
| Configuration Backups | 5 | Number of automatic backups of your configuration files to keep on disk. Backups are made when changes are saved in SCFG. Set to 0 to disable. |
| Maximum Log File Size | Unlimited | This option allows you to limit the size of the following log files created and appended to by Synchronet in the logs directory (inside the [[dir:data|data directory]]): \\ \\ hungup.log; error.log; crash.log; hack.log; spam.log; guru.log \\ \\ The largest supported log file size limit is 4294967295 (3.99G) bytes. Log files that have reached or exceeded the configured size limit are retained by renaming the *.log file to *.#.log beginning with *.0.log. \\ \\ You must also specify the number of older/max-size log files to retain. The largest number of supported retained rotated log files is 9999. Oldest rotated log files are automatically deleted to save disk space. |
| Maximum User Inactivity | 5 minutes | Duration the user may be inactive (waiting at a keyboard-input prompt) before being automatically disconnected. Users with the ''H'' [[access:exemptions|exemption]] are exempt. \\ \\ For lower-level **socket** inactivity detection (independent of getkey()), see the ''Max *Inactivity'' settings in [[config:sbbs.ini|Servers → Terminal Server]]. |
| User Inactivity Warning | 75 percent | Percentage of //Maximum User Inactivity// that must elapse before the user is given a warning prompt that disconnection is imminent. Set to ''0'' to suppress all inactivity warnings (including socket-level warnings). |
| Control Key Pass-through | 0 | This value is a 32-bit hexadecimal number. Each set bit represents a control key combination that will not be handled internally by Synchronet or by a Global Hot Key Event. \\ \\ To disable internal handling of the Ctrl-C key combination (for example) set this value to 8. The value is determined by calculating 2<sup>n</sup>, where //n// is the ASCII value of the control character (Ctrl-A is 1, Ctrl-B is 2, etc.). In the case of Ctrl-C (n=3), 2<sup>3</sup>=8. \\ \\ To pass-through multiple control key combinations, multiple bits must be set (or'd together) to create the necessary value, which may require the use of a hexadecimal calculator. \\ \\ If unsure, leave this value set to 0, the default. |
| Statistics Interval | 5s | Interval between reads of statistics files for the purposes of displaying system and node statistics to users. Lower values give more current statistics but cause more disk I/O; higher values cache longer but show stale numbers. Accepts duration suffixes (e.g. ''5s'', ''1m''). |
| Cache Filter Files | 5s | Interval between checks for changes to filter files (''text/*.can'' etc.). These files are checked frequently (e.g. on every incoming TCP connection) and can become large; in-memory caching reduces redundant disk I/O dramatically. \\ \\ Lower values pick up file changes faster (more I/O); higher values cache longer (less I/O). Set to ''0'' to disable filter-file caching entirely (uses less memory at the cost of more disk reads). |

===== Loadable Modules =====
  ╔══════════════════════════════════════════╗
  ║              Loadable Modules            ║
  ╠══════════════════════════════════════════╣
  ║ │Login             login                 ║
  ║ │Logon             logon                 ║
  ║ │Logoff                                  ║
  ║ │Logout                                  ║
  ║ │New User Prompts  newuser_prompts       ║
  ║ │New User Info     newuser_info          ║
  ║ │New User Created  newuser               ║
  ║ │User Config       user_settings         ║
  ║ │Expired User                            ║
  ║ │Auto Message      automsg               ║
  ║ │Send Feedback                           ║
  ║ │Email Section                           ║
  ║ │Chat Section      chat_sec              ║
  ║ │Text Section      text_sec              ║
  ║ │Xtrn Section      xtrn_sec              ║
  ║ │Pre Xtrn          prextrn               ║
  ║ │Post Xtrn         postxtrn              ║
  ║ │Read Mail         msglist mail -preview ║
  ║ │Scan Msgs                               ║
  ║ │Scan Subs                               ║
  ║ │List Msgs         msglist               ║
  ║ │List Logons       logonlist             ║
  ║ │List Users        userlist              ║
  ║ │List Nodes        nodelist              ║
  ║ │Who's Online      nodelist -active      ║
  ║ │Private Msg       privatemsg            ║
  ║ │Scan Dirs                               ║
  ║ │List Files                              ║
  ║ │View File Info                          ║
  ║ │Batch Transfer                          ║
  ║ │Temp Transfer     tempxfer              ║
  ║ │Select Item                             ║
  ║ │Sync                                    ║
  ╚══════════════════════════════════════════╝
  

[[util:Baja]] modules (.bin files) or [[custom:javascript|JavaScript]] modules (.js files) can be configured to executed during certain [[server:terminal|Terminal Server]] operations.

Synchronet will attempt to find the configured module name in the following order, executing the first that it finds:
  - Mods folder: JavaScript module
  - Exec folder: JavaScript module
  - Mods folder: Baja module
  - Exec folder: Baja module

For all modules, additional command-line options/switches can be added when the module accepts them (e.g., ''nodelist -active''):


^ Option Name   ^ Default ^ Description ^
| Login | ''[[module:login]]'' | Required module for interactive [[server:terminal]] logins. Occurs when a user is connected, immediately after the Synchronet copyright notice is displayed. Successful autologins (e.g., SSH, rlogin) will not display this module. |
| Logon | ''[[module:logon]]'' | Executed during terminal logon procedure, immediately after a successful login (both autologin or using the Login module above. |
| Logoff | <empty> | Executed during terminal logoff procedure (interactive). Does **not** occur when users hang up on the BBS or do a fast logoff. |
| Logout | <empty> | Executed during terminal logout procedure (offline) after a user has disconnected from the BBS, either by logging off or hanging up. |
| New User Prompts | ''[[module:newuser_prompts]]'' | New user registration prompts |
| New User Info | ''[[module:newuser_info]]'' | New user information/help |
| New User | ''[[module:newuser]]'' | Executed at end of new terminal user creation process (i.e., after the user has logged on, left new user feedback, and anything else that is required of a new user). |
| User Config | ''[[module:user_settings]]'' | User (e.g. terminal) settings configuration menu |
| Expired User | <empty> | Executed before hanging up on a user that has run out of minutes, and during the daily maintenance event if a user has expired for another reason (e.g., deleted, inactive). |
| Auto Message | ''[[module:automsg]]'' | Executed when a user chooses to edit the [[https://www.synchro.net/docs/user.html#AutoMessage|auto-message]]. |
| Send Feedback | <empty> | User sending email to a sysop (return error to cancel) |
| Email Section | <empty> | Executed when the user enters the email section/menu (overrides the built-in mail-reading prompt). |
| Chat Section | ''[[module:chat_sec]]'' | User enters chat section/menu |
| Text Section | ''[[module:text_sec]]'' | Executed to handle the [[https://www.synchro.net/docs/textfile_section.html|text file]] (viewing) section. |
| Xtrn Section | ''[[module:xtrn_sec]]'' | Executed to handle the external programs ([[howto:door:index|doors]]) section. |
| Pre Xtrn | ''[[module:prextrn]]'' | Executed once an external program is configured to run or selected by a user, but before the actual program has started. |
| Post Xtrn | ''[[module:postxtrn]]'' | Executed after an external program has finished running. |
| Read Mail     | ''msglist mail -preview'' | Executed when a user reads personal email/netmail. |
| Scan Msgs     | <empty>               | Executed when a user reads or scans messages within a single sub-board. |
| Scan Subs     | <empty>               | Executed when a user scans one or more sub-boards for messages. |
| List Msgs     | ''[[module:msglist]]''               | Executed when a user lists messages from the message read prompt. |
| List Logons   | ''[[module:logonlist]]''             | Executed when a user lists logons ('-y' for yesterday). |
| List Users    | ''[[module:userlist]]''              | User lists the users of the system |
| List Nodes    | ''[[module:nodelist]]''              | Executed when a user lists the current status of all nodes. |
| Who's Online  | ''nodelist -active'' | Executed when a user lists the nodes in-use (i.e., %%^%%U). |
| Private Msg   | ''[[module:privatemsg]]''            | Executed when a user sends a private node msg (i.e., %%^%%P). | 
| Scan Dirs     | <empty>  | User scans one or more directories for files |
| List Files    | <empty>  | User lists files within a file directory |
| View File Info | <empty> | User views detailed information on files in a directory |
| Batch Transfer | <empty> | Batch file transfer menu |
| Temp Transfer | ''[[module:tempxfer]]'' | Temporary/archive file transfer menu, where users can [[https://www.synchro.net/docs/user.html#FileExtraction/TempDirectory|extract file archives]] to download only the files they want. |
| Select Item   | <empty> | Executed when the user is prompted to select a numbered item from a list of options (a generic UI hook for menu-driven selections). |
| Sync          | <empty> | Executed when terminal nodes are periodically synchronized (comm/disk I/O flush; runs while a user is online and node messages are received, node status is read, etc.). |

===== Extra Attribute Codes =====                                                
                                                                        
Synchronet can support the native text attribute (e.g. color) codes of  
other BBS programs in messages and display files (e.g. menus). To enable
extra attribute codes for another BBS program, set the corresponding    
option to Yes. Extra attribute codes may also be separately enabled or disabled on a per sub-board basis.

  ╔════════════════════════════════════════╗
  ║ Extra Attribute Codes in Display Files ║
  ╠════════════════════════════════════════╣
  ║ │WWIV (Heart) Codes             No     ║
  ║ │PCBoard (@Xxx) Codes           No     ║
  ║ │Wildcat (@xx@) Codes           No     ║
  ║ │Celerity (¦x) Codes            No     ║
  ║ │Renegade (¦xx) Codes           Yes    ║
  ╚════════════════════════════════════════╝
                                                                        
  * WWIV color codes are preceded by a Ctrl-C (ASCII 3) character.        
  * PCBoard color codes are of the form ''@Xxx'' where ''xx'' are hexadecimal digits.     
  * Wildcat color codes are of the form ''@xx@'' where ''xx'' are hexadecimal digits.     
  * Celerity color codes are of the form ''¦x'' where ''x'' is an alpha character.
  * Renegade color codes are of the form ''¦xx'' where ''xx'' are decimal digits. 
    Renegade codes are the most popular/common among non-Synchronet BBSes.
                                                                        
See [[custom:colors]] for more details.                  


===== See Also =====
  * [[util:scfg:|Synchronet Configuration Utility (SCFG)]]

{{tag>configure scfg security}}