# appsettings.json Config File MBBSEmu uses a standard JSON format Application Settings file for all configuration values. By default, MBBSEmu will look in its current directory for this file. You can specify a custom appsettings.json file using the `-S ` command line switch. ## Configuration Values **`BBS.Title`** : `string` : Correlates to `MAJORBBS->bbsttl`. Some Modules make use of this configuration value to display the name of the Bulletin Board system to the users. **`Timer.Hertz`**: `int` : Controls speed of main BBS program loop execution. 0 = full speed/100% processor. Value of 18 minimum is recommended -- depending on your hardware ymmv, 144 works well on modern processors while keeping CPU <5%. **`BBS.Channels`** : `int` : Set the maximum number of channels (users) that can use the system simultaneously **`Cleanup.Time`** : `string` : Sets the time of day (24-hour) when the "Nightly Cleanup" will execute. Example Format: `03:00` for 3AM **`GSBL.BTURNO`** : `string` : Correlates to `GSBL->bturno`. This is the registration # for your MajorBBS/Worldgroup instance and is used by many modules to generate a unique module registration/activation code for your Bulletin Board System. **`GSBL.BTURNO.`** : `string` : Correlates to `GSBL->bturno` for the specified module. Many sysops over the years had registered copies of MajorBBS 6.25, Worldgroup 2.0, or even consolidated Bulletin Board Systems from other sysops which all had valid & legal registrations. The problem is the registration numbers or unlock codes for these modules are bound to a specific Activation #. Using this option, you're able to specify a unique `bturno` that the module will receive. This way you're able to play a Module you purchased for your MajorBBS 6.25 system, as well as a Module you purchased later with your Worldgroup 2.0 system even though their registration or unlock codes are tied to different BBS Activation Numbers. **`Module.DoLoginRoutine`** : `bool` : Specifies if users logging into the system should be displayed the "Login Routine" for the modules currently running **`Telnet.Enabled`** : `bool` : Specifies if the Telnet Server is enabled **`Telnet.IP`** : `string` : Specifies which IP the Telnet Server should bind to (Optional, defaults to all) **`Telnet.Port`** : `int` : Specifies which port the Telnet Server should bind to **`Telnet.Heartbeat`** : `bool` : Specifies if the Telnet Server should send a "heartbeat" to the client at a regular interval (NOTE: Can cause issues with MegaMud but help other clients that disconnect when there are extended periods of no activity) **`Rlogin.Enabled`** : `bool` : Specifies if the Rlogin Server is enabled **`Rlogin.IP`** : `string` : Specifies which IP the Rlogin Server should bind to (Optional, defaults to all) **`Rlogin.Port`** : `int` : Specifies which port the Rlogin Server should bind to **`Rlogin.Compatibility`** : `string` : `Default` is the same as not being configured, `WG3NT` enables a fix to prevent extra characters from showing up on initial connections from a WG3 server **`Rlogin.RemoteIP`** : `string` : Specifies the Remote IP of the instance to be permitted to connect via Rlogin to MBBSEmu **`Rlogin.PortPerModule`** : `bool` : Specifies if each module should be given it's own port. This allows Rlogin connections to be directly connected into a Module without having to go through the menuing system. This enables Sysops running systems such as Mystic to have their users directly enter a Module such as Tele-Arena as if it were running locally. The port numbers for the `Rlogin.PortPerModule` setting will start after `Rlogin.Port`. Modules and their assigned Rlogin Ports will be displayed on the console at startup for your information. **`Database.File`** : `string` : Filename of the SQLite database used by MBBSEmu for user account information **`Account.DefaultKeys`** : `list` : List of keys (used for access to modules/features) assigned to every new account created (Examples: 'DEMO' and 'NORMAL') -- Some modules require "USER" or "PAYING" by default, check the .msg file with each module to edit/change configuration of needed keys. Any changes to `DefaultKeys` only take effect to accounts created _after_ they're changed. To add keys to existing accounts, please use the **`/SYS`** command. **`Console.LogLevel`** : `string` : Minimum console logging level (Debug, Info, Warn, Error, Fatal) **`File.LogName`** : `string` : Filename for log file **`File.LogLevel`** : `string` : Minimum file logging level (Debug, Info, Warn, Error, Fatal) **`ANSI.Login`** : `string` : Filename for a custom Login ANSI file (Displayed before sign in) **`ANSI.Logoff`** : `string` : Filename for a custom Logoff ANSI file (Displayed while logging off) **`ANSI.Signup`** : `string` : Filename for a custom Signup ANSI file (Displayed when creating an account) **`ANSI.Menu`** : `string` : Filename for a custom Main Menu ANSI file (Replaces default menu) **`Btrieve.CacheSize`**: `int` : How many items per btrieve database to cache at a time. A higher number uses more memory but can cache more data. Sqlite is very fast so having a small cache value shouldn't be detrimental to performance. ## Example File { "BBS.Title": "Example BBS", "Timer.Hertz": "0", "BBS.Channels": "4", "GSBL.BTURNO": "12345678", "GSBL.BTURNO.TSGARN": "87654321", "Module.DoLoginRoutine": "True", "Telnet.Enabled": "True", "Telnet.Port": "23", "Telnet.Heartbeat": "False", "Rlogin.Enabled": "True", "Rlogin.Port": "513", "Rlogin.RemoteIP": "127.0.0.1", "Rlogin.PortPerModule": "True", "Database.File": "mbbsemu.db", "Console.LogLevel": "Info", "ANSI.Login" : "login.ans", "Account.DefaultKeys": [ "DEMO", "NORMAL", "USER" ] }