enigma-bbs/misc/config_template.in.hjson

517 lines
18 KiB
Plaintext

{
/*
./\/\.' ENiGMA½ System Configuration -/--/-------- - -- -
_____________________ _____ ____________________ __________\_ /
\__ ____/\_ ____ \ /____/ / _____ __ \ / ______/ // /___jp!
// __|___// | \// |// | \// | | \// \ /___ /_____
/____ _____| __________ ___|__| ____| \ / _____ \
---- \______\ -- |______\ ------ /______/ ---- |______\ - |______\ /__/ // ___/
/__ _\
<*> ENiGMA½ // HTTPS://GITHUB.COM/NUSKOOLER/ENIGMA-BBS <*> /__/
*-----------------------------------------------------------------------------*
Generated by ENiGMA½ v%ENIG_VERSION% / hjson v%HJSON_VERSION%
*-----------------------------------------------------------------------------*
------------------------------- -- - -
General Information
------------------------------- - -
This configuration is in HJSON (http://hjson.org/) format. Strict to-spec
JSON is also perfectly valid. Use 'hjson' from npm to convert to/from JSON.
See http://hjson.org/ for more information and syntax.
Various editors and IDEs such as Sublime Text 3, Visual Studio Code, and so
on have syntax highlighting for the HJSON format which are highly recommended.
------------------------------- -- - -
Configuration
------------------------------- - -
ENiGMA½ is *highly* configurable, and thus can be overwhelming at first!
By default, this file contains common configuration elements, examples, etc.
To see a more complete view of settings available to the system, don't be
afraid to open up core/config.js and look around. Do not make changes there
however! All system configuration can be extended and defaults overridden
via this file!
Please see RTFM ...er, uh... see the documentation for more information, and
don't be shy to ask for help:
BBS : Xibalba @ xibalba.l33t.codes
FTN : BBS Discussion on fsxNet
IRC : #enigma-bbs / FreeNode
Email : bryan@l33t.codes
*/
general: {
// Your BBS Name!
boardName: XXXXX
// Your BBS name, with pipe codes for styling
prettyBoardName : '|08XXXXX'
// Telnet hostname and port for your board
telnetHostname : 'xibalba.l33t.codes:44510'
// SSH hostname and port for your board
sshHostname : 'xibalba.l33t.codes:44511'
// Your board's website
website : 'https://enigma-bbs.github.io'
// Short board description
description : 'Yet another awesome ENiGMA½ BBS'
}
term: {
// checkUtf8Encoding requires the use of cursor position reports, which are not supported on all terminals.
// Using this with a terminal that does not support cursor position reports results in a 2 second delay
// during the connect process, but provides better autoconfiguration of utf-8
checkUtf8Encoding : true
// Checking the ANSI home position also requires the use of cursor position reports, which are not
// supported on all terminals. Using this with a terminal that does not support cursor position reports
// results in a 3 second delay during the connect process, but works around positioning problems with
// non-standard terminals.
checkAnsiHomePosition: true
// other options here include cp437TermList and utf8TermList, see config_default.js for more information
}
paths: {
//
// Other paths can also be configured as well,
// but generally unnecessary
//
logs: XXXXX
}
logging: {
//
// Each block here represents a Bunyan style config.
// See https://github.com/trentm/node-bunyan#streams
//
// Remember you can pipe logs through Bunyan to pretty-print:
// Linux : tail -F ./logs/enigma-bbs.log | bunyan
// PowerShell : Get-Content .\enigma-bbs.log -Tail 15 | bunyan.cmd
//
// (npm install -g bunyan to get the binary)
//
// We default to a rotating-file stream:
// https://github.com/trentm/node-bunyan#stream-type-rotating-file
//
rotatingFile: {
// If you're having trouble, try setting this to "trace"
level: XXXXX
}
}
theme: {
// Default theme applied to new users. "*" indicates random.
default: XXXXX
// Theme applied before a user has logged in. "*" indicates random.
preLogin: XXXXX
//
// dateFormat, timeFormat, and dateTimeFormat blocks configure
// moment.js (https://momentjs.com/docs/#/displaying/) style formats
// for dates and times. Short and long versions are available.
// Note that themes may override these settings.
//
}
//
// Login servers represent available servers (or protocols) in which
// users are permitted to access your system.
//
loginServers: {
// Remember kids, Telnet is insecure!
telnet: {
// It's best to use non-privileged ports and NAT/foward to them
port: XXXXX
}
// ...but SSH *is* secure!
ssh: {
port: XXXXX
//
// To enable SSH, perform the following steps:
//
// 1 - Generate a Private Key (PK):
// Currently ENiGMA 1/2 requires a PKCS#1 PEM formatted PK.
// To generate a secure PK, issue the following command:
//
// > openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 \
// -pkeyopt rsa_keygen_pubexp:65537 | openssl rsa \
// -out ./config/security/ssh_private_key.pem -aes128
//
// (The above is a more modern equivelant of the following):
// > openssl genrsa -aes128 -out ./config/security/ssh_private_key.pem 2048
//
// 2 - Set 'privateKeyPass' to the password you used in step #1
//
// 3 - Finally, set 'enabled' to 'true'
//
// Additional reading:
// - https://blog.sleeplessbeastie.eu/2017/12/28/how-to-generate-private-key/
// - https://gist.github.com/briansmith/2ee42439923d8e65a266994d0f70180b
//
enabled: XXXXX
// set this to your PK's password, generated in step #1 above
privateKeyPass: SuperSecretPasswordChangeMe!
//
// It's possible to lock down various algorithms available to
// SSH, but be aware this may limit the clients that can connect!
//
algorithms: {}
}
webSocket: {
//
// Setting "proxied" to true allows non-secure (ws://) WebSockets
// to be considered secure when the X-Fowarded-Proto HTTP header
// is set to "https". This is helpful when ENiGMA is running behind
// another web server doing SSL/TLS termination.
//
proxied: false
// Non-secure WebSockets, or ws://
ws: {
port: XXXXX
}
// Secure WebSockets, or wss://
wss: {
port: XXXXX
enabled: XXXXX
//
// Certificate and Key in PEM format.
// Note that web browsers will not trust self-signed certs. Look
// into Let's Encrypt and perhaps running ENiGMA behind another
// web server such as Caddy.
//
certPem: XXXXX
keyPem: XXXXX
}
}
}
//
// Content Servers expose content from the system
//
contentServers: {
//
// The Web Content Server can expose content over HTTP (http://) and
// HTTPS (https://) for (but not limited to) the following purposes:
// * Static content
// * Web downloads from the file base
// * Password reset forms (sent to users in PW reset emails; see
// "email" block below)
//
web: {
// Set to your public FQDN
domain: another-fine-enigma-bbs.org
// Standard issue "www" folder. Place static content here
staticRoot: XXXXX
//
// This block configures password reset emails. Template files
// support the following variables:
// * %BOARDNAME% : Name of BBS
// * %USERNAME% : Username of whom to reset password
// * %TOKEN% : Reset token
// * %RESET_URL% : In case of email, the link to follow
// for reset. In case of landing page, URL to POST submit reset form.
//
resetPassword: {
}
http: {
port: XXXXX
}
https: {
port: XXXXX
enabled: XXXXX
//
// Note that web browsers will not trust self-signed certs. Look
// into Let's Encrypt and perhaps running ENiGMA behind another
// web server such as Caddy.
//
}
}
// Ladies and gentlemen, a Gopher server!
gopher: {
port: XXXXX
enabled: false
// The root directory to serve gophermaps and other content
staticRoot: XXXXX
//
// The Gopher Content Server can export message base
// conferences and areas via the "messageConferences" key.
//
// Example:
// messageConferences: {
// some_conf: [ "area_tag1", "area_tag2" ]
// }
//
}
// You may also wish to enable NNTP services
nntp: {
//
// Set publicMessageConferences{} to configure
// publicly exposed conferences & areas.
//
// Example:
// publicMessageConferences: {
// some_conf: [ "area_tag1", "area_tag2" ]
// }
//
publicMessageConferences: {}
// non-secure
nntp: {
enabled: false
port: XXXXX
}
// secure (TLS)
nntps: {
enabled: false
port: XXXXX
//
// You will need a SSL/TLS certificate and key
//
certPem: XXXXX
keyPem: XXXXX
}
}
}
chatServers: {
// multi relay chat settings. No need to sign up, just enable it.
// More info: https://bbswiki.bottomlessabyss.net/index.php?title=MRC_Chat_platform
mrc: {
enabled : false
serverHostname : 'mrc.bottomlessabyss.net'
serverPort : 5000
}
}
//
// Currently, ENiGMA½ can use external email to mail
// users for password resets. Additional functionality will
// be added in the future.
//
email: {
//
// Set the following keys to configure:
// * "defaultFrom" to the reply address
// * "transport" to a configuration block that meets the
// requirements of Nodemailer (https://nodemailer.com/)
//
// Example:
// transport: {
// service: Zoho
// auth: {
// user: myuser@myhost.com
// pass: supersecretpassword
// }
// }
//
}
// Message conferences and areas are within this block
messageConferences: {
// An entry here prepresents a conference taka aka confTag
another_sample_conf: {
name: "Another Sample Conference"
desc: "Another conf sample. Change me!"
areas: {
// Similar to confTags, this is a areaTag
another_sample_area: {
name: "Another Sample Area"
desc: "Another area example. Change me!"
// The 'sort' key can override natural sort order and can live at the conference and area levels
sort: 2
}
}
}
}
// Configuration block for scanner/tosser modules
scannerTossers: {
// The most popular being FTN/BSO style networks
ftn_bso: {
//
// When you're ready to hook up to FTN networks, please
// see the documentation on message networks.
//
}
}
//
// ENiGMA½ comes with a very powerful File Base, but may be a bit strange
// until you get used to it. Please see the documentation!
//
fileBase: {
//
// Storage tags with relative paths (that is, paths that do not start
// with a "/") are relative to the following path:
//
areaStoragePrefix: XXXXX
//
// Storage tags create a tag -> directory (relative or full path)
// that can be used in areas.
//
storageTags: {
//
// Example storage tag: "super_l33t_warez":
// super_l33t_warez: /path/to/super/l33t/warez
//
}
areas: {
//
// Example area with the areaTag of "an_example_area":
// an_example_area: {
// name: Example File Area
// desc: It's just an example, yo!
// storageTags: [
// super_l33t_warez
// ]
// }
//
// File Base Areas are read-only (ie: download only) by default.
// To make a uploadable area, set ACS as you like. For example,
// to allow all users to upload to an area:
//
// an_example_area: {
// // ...
// acs: {
// write: GM[users]
// }
// }
}
}
// General user configuration
users: {
//
// ENiGMA½ utilizes user groups similar to Windows and *nix. Built in groups
// include "users" (for regular users) and "sysops" for +ops. You can add other
// groups to the system as well by adding a 'groups' key in this section:
// groups: [
// "leet", "lamerz"
// ]
//
//
// Set default group(s) new users should automatically be assigned to:
// defaultGroups : [
// "lamerz"
// ]
//
// Should new users require +op activation?
requireActivation: false,
// How long pre-authenticated users (have not logged in) can idle
preAuthIdleLogoutSeconds: XXXXX
// How long authenticated users (logged in) can idle
idleLogoutSeconds: XXXXX
// Usernames reserved for applying to your system
newUserNames: []
// Handling of failed logins
failedLogin : {
// disconnect after N failed attempts. 0=disabled.
disconnect : XXXXX
// Lock the user out after N failed attempts. 0=disabled.
lockAccount : XXXXX
//
// If locked out, how long until the user can login again?
// Set to 0 to disable auto-unlock
//
autoUnlockMinutes : XXXXX
},
// Allow email driven password resets to unlock accounts?
unlockAtEmailPwReset : XXXXX
}
// Archive files and related
archives: {
archivers: {
//
// Each key in the "archivers" configuration block represents a specific
// external archive utility. ENiGMA½ has sane configuration by default
// for many archivers, but the tools themselves are likely not yet installed
// on your system!
//
// You'll want to have archivers configured for the many old-school archive
// formats that a BBS may encounter! Please consult the documentation on
// information as to where to find and install these utilities!
//
}
}
fileTransferProtocols: {
//
// Each key in the "fileTransferProtocols" configuration block defines
// an external file transfer utility for legacy protocols such as
// X, Y, and Z-Modem.
//
// You will want to ensure your system has these external utilities
// installed and/or define new or additional protocols. Please
// see the documentation for more information!
//
}
//
// Use the Event Scheduler to set up arbitrary scheduled events
// using Later style syntax and/or @watch files.
// See docs/event-scheduler.md for more information.
//
eventScheduler: {
events: {
// Example:
//
// sampleEvent: {
// schedule: every 2 hours
// action: @execute:/path/to/some/script.sh
// args: [
// "--foo", "--bar"
// ]
// }
}
}
statLog: {
systemEvents: {
// Max login history event records kept. -1 = unlimited
loginHistoryMax: -1
}
}
}