Merge branch '0.0.8-alpha' of github.com:NuSkooler/enigma-bbs into 0.0.8-alpha
This commit is contained in:
commit
15ee869fd9
|
@ -6,11 +6,16 @@ The main system configuration file, `config.hjson` both overrides defaults and p
|
||||||
|
|
||||||
**Windows note**: **~** resolves to *C:\Users\YOURLOGINNAME\* on modern Windows installations, e.g. `C:\Users\NuSkooler\.config\enigma-bbs\config.hjson`
|
**Windows note**: **~** resolves to *C:\Users\YOURLOGINNAME\* on modern Windows installations, e.g. `C:\Users\NuSkooler\.config\enigma-bbs\config.hjson`
|
||||||
|
|
||||||
### oputil.js
|
### Creating a Configuration
|
||||||
Please see `oputil.js config` for configuration generation options.
|
Your initial configuration skeleton can be created using the `oputil.js` command line utility. From your enigma-bbs root directory:
|
||||||
|
```
|
||||||
|
./oputil.js config new
|
||||||
|
```
|
||||||
|
|
||||||
### Example: System Name
|
You will be asked a series of questions to create an initial configuration.
|
||||||
`core/config.js` provides the default system name as follows:
|
|
||||||
|
### Overriding Defaults
|
||||||
|
The file `core/config.js` provides various defaults to the system that you can override via `config.hjson`. For example, the default system name is defined as follows:
|
||||||
```javascript
|
```javascript
|
||||||
general : {
|
general : {
|
||||||
boardName : 'Another Fine ENiGMA½ System'
|
boardName : 'Another Fine ENiGMA½ System'
|
||||||
|
@ -26,17 +31,14 @@ general: {
|
||||||
|
|
||||||
(Note the very slightly different syntax. **You can use standard JSON if you wish**)
|
(Note the very slightly different syntax. **You can use standard JSON if you wish**)
|
||||||
|
|
||||||
|
While not everything that is available in your `config.hjson` file can be found defaulted in `core/config.js`, a lot is. [Poke around and see what you can find](https://github.com/NuSkooler/enigma-bbs/blob/master/core/config.js)!
|
||||||
|
|
||||||
### Specific Areas of Interest
|
### Specific Areas of Interest
|
||||||
* [Menu System](menu_system.md)
|
|
||||||
* [Message Conferences](msg_conf_area.md)
|
* [Message Conferences](msg_conf_area.md)
|
||||||
* [Message Networks](msg_networks.md)
|
* [Message Networks](msg_networks.md)
|
||||||
* [File Base](file_base.md)
|
* [File Base](file_base.md)
|
||||||
* [File Archives & Archivers](archives.md)
|
* [File Archives & Archivers](archives.md)
|
||||||
* [Doors](doors.md)
|
|
||||||
* [MCI Codes](mci.md)
|
|
||||||
* [Web Server](web_server.md)
|
* [Web Server](web_server.md)
|
||||||
...and other stuff [in the /docs directory](./)
|
|
||||||
|
|
||||||
|
|
||||||
### A Sample Configuration
|
### A Sample Configuration
|
||||||
Below is a **sample** `config.hjson` illustrating various (but certainly not all!) elements that can be configured / tweaked.
|
Below is a **sample** `config.hjson` illustrating various (but certainly not all!) elements that can be configured / tweaked.
|
||||||
|
@ -125,5 +127,7 @@ Below is a **sample** `config.hjson` illustrating various (but certainly not all
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Menus
|
## See Also
|
||||||
See [the menu system docs](menu_system.md)
|
* [Modding](modding.md)
|
||||||
|
* [Doors](doors.md)
|
||||||
|
* [MCI Codes](mci.md)
|
||||||
|
|
|
@ -1,17 +1,26 @@
|
||||||
# Menu System
|
# Menu System
|
||||||
ENiGMA½'s menu system is highly flexible and moddable. The possibilities are almost endless! By modifying your `menu.hjson` you will be able to create a custom look and feel unique to your board.
|
ENiGMA½'s menu system is highly flexible and moddable. The possibilities are almost endless!
|
||||||
|
|
||||||
|
This document and others will refer to `menu.hjson`. This should be seen as an alias to `yourboardname.hjson` (or whatever you reference in `config.hjson` using the `menuFile` property — see below). By modifying your `menu.hjson` you will be able to create a custom experience unique to your board.
|
||||||
|
|
||||||
The default `menu.hjson` file lives within the `mods` directory. It is **highly recommended** to specify another file by setting the `menuFile` property in your `config.hjson` file:
|
The default `menu.hjson` file lives within the `mods` directory. It is **highly recommended** to specify another file by setting the `menuFile` property in your `config.hjson` file:
|
||||||
```hjson
|
```hjson
|
||||||
general: {
|
general: {
|
||||||
/* Can also specify a full path */
|
/* Can also specify a full path */
|
||||||
menuFile: mybbs.hjson
|
menuFile: yourboardname.hjson
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
(You can start by copying the default `menu.hjson` to `mybbs.hjson`)
|
|
||||||
|
You can start by copying the default `mods/menu.hjson` to `yourboardname.hjson`.
|
||||||
|
|
||||||
## The Basics
|
## The Basics
|
||||||
Like all configuration within ENiGMA½, menu configuration is done via a HJSON file. This file is located in the `mods` directory: `mods/menu.hjson`.
|
Like all configuration within ENiGMA½, menu configuration is done in [HJSON](https://hjson.org/) format.
|
||||||
|
|
||||||
|
Entries in `menu.hjson` are objects defining a menu. A menu in this sense is something the user can see or visit. Examples include but are not limited to:
|
||||||
|
* Classical Main, Messages, and File menus
|
||||||
|
* Art file display
|
||||||
|
* Module driven menus such as door launchers
|
||||||
|
|
||||||
|
|
||||||
Each entry in `menu.hjson` defines an object that represents a menu. These objects live within the `menus` parent object. Each object's *key* is a menu name you can reference within other menus in the system.
|
Each entry in `menu.hjson` defines an object that represents a menu. These objects live within the `menus` parent object. Each object's *key* is a menu name you can reference within other menus in the system.
|
||||||
|
|
||||||
|
@ -26,9 +35,9 @@ telnetConnected: {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
The above entry `telnetConnected` is set as the Telnet server's first menu entry (set by `firstMenu` in the server's config).
|
The above entry `telnetConnected` is set as the Telnet server's first menu entry (set by `firstMenu` in the Telnet server's config).
|
||||||
|
|
||||||
An art pattern of `CONNECT` is set telling the system to look for `CONNECT<n>` in the current theme location, then in the common `mods/art` directory where `<n>` represents a optional integer in art files to cause randomness, e.g. `CONNECT1.ANS`, `CONNECT2.ANS`, and so on. You can be explicit here if desired, by specifying a file extension.
|
An art pattern of `CONNECT` is set telling the system to look for `CONNECT<n>.*` where `<n>` represents a optional integer in art files to cause randomness, e.g. `CONNECT1.ANS`, `CONNECT2.ANS`, and so on. If desired, you can also be explicit by supplying a full filename with an extention such as `CONNECT.ANS`.
|
||||||
|
|
||||||
The entry `next` sets up the next menu, by name, in the stack (`matrix`) that we'll go to after `telnetConnected`.
|
The entry `next` sets up the next menu, by name, in the stack (`matrix`) that we'll go to after `telnetConnected`.
|
||||||
|
|
||||||
|
@ -47,20 +56,21 @@ matrix: {
|
||||||
submit: true
|
submit: true
|
||||||
focus: true
|
focus: true
|
||||||
items: [ "login", "apply", "log off" ]
|
items: [ "login", "apply", "log off" ]
|
||||||
|
argName: matrixSubmit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
submit: {
|
submit: {
|
||||||
*: [
|
*: [
|
||||||
{
|
{
|
||||||
value: { 1: 0 }
|
value: { matrixSubmit: 0 }
|
||||||
action: @menu:login
|
action: @menu:login
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
value: { 1: 1 },
|
value: { matrixSubmit: 1 },
|
||||||
action: @menu:newUserApplication
|
action: @menu:newUserApplication
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
value: { 1: 2 },
|
value: { matrixSubmit: 2 },
|
||||||
action: @menu:logoff
|
action: @menu:logoff
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -71,6 +81,6 @@ matrix: {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
In the above entry, you'll notice `form`. This defines a form(s) object. In this case, a single form by ID of `0`. The system is then told to use a block only when the resulting art provides a `VM` (*VerticalMenuView*) MCI entry. `VM1` is then setup to `submit` and start focused via `focus: true` as well as have some menu entries ("login", "apply", ...) defined.
|
In the above entry, you'll notice `form`. This defines a form(s) object. In this case, a single form by ID of `0`. The system is then told to use a block only when the resulting art provides a `VM` (*VerticalMenuView*) MCI entry. `VM1` is then setup to `submit` and start focused via `focus: true` as well as have some menu entries ("login", "apply", ...) defined. We provide an `argName` for this action as `matrixSubmit`.
|
||||||
|
|
||||||
The `submit` object tells the system to attempt to apply provided match entries from any view ID (`*`). Upon submit, the first match will be executed. For example, if the user selects "login", the first entry with a value of `{ 1: 0 }` or view ID 1, value 0 will match causing `action` of `@menu:login` to be executed (go to `login` menu).
|
The `submit` object tells the system to attempt to apply provided match entries from any view ID (`*`). Upon submit, the first match will be executed. For example, if the user selects "login", the first entry with a value of `{ matrixSubmit: 0 }` will match causing `action` of `@menu:login` to be executed (go to `login` menu).
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Modding
|
||||||
|
|
||||||
|
## General Configuraiton
|
||||||
|
See [Configuration](config.md)
|
||||||
|
|
||||||
|
## Menus
|
||||||
|
See [Menu System](menu_system.md)
|
||||||
|
|
||||||
|
## Theming
|
||||||
|
Take a look at how the default `luciano_blocktronics` theme found under `mods/themes` works!
|
||||||
|
|
||||||
|
TODO document me!
|
||||||
|
|
||||||
|
## Add-On Modules
|
||||||
|
See [Mods](mods.md)
|
|
@ -6,7 +6,7 @@ Message networks are configured in `messageNetworks` section of `config.hjson`.
|
||||||
* `originLine` (optional): Overrwrite the default origin line for networks that support it. For example: `originLine: Xibalba - xibalba.l33t.codes:44510`
|
* `originLine` (optional): Overrwrite the default origin line for networks that support it. For example: `originLine: Xibalba - xibalba.l33t.codes:44510`
|
||||||
|
|
||||||
## FidoNet Technology Network (FTN)
|
## FidoNet Technology Network (FTN)
|
||||||
FTN networks are configured under the `messageNetworks::ftn` section of `config.hjson`.
|
FTN networks are configured under the `messageNetworks.ftn` section of `config.hjson`.
|
||||||
|
|
||||||
### Networks
|
### Networks
|
||||||
The `networks` section contains a sub section for network(s) you wish you join your board with. Each entry's key name can be referenced elsewhere in `config.hjson` for FTN oriented configurations.
|
The `networks` section contains a sub section for network(s) you wish you join your board with. Each entry's key name can be referenced elsewhere in `config.hjson` for FTN oriented configurations.
|
||||||
|
@ -30,7 +30,7 @@ The `networks` section contains a sub section for network(s) you wish you join y
|
||||||
```
|
```
|
||||||
|
|
||||||
### Areas
|
### Areas
|
||||||
The `areas` section describes a mapping of local **area tags** found in your `messageConferences` to a message network (from `networks` described previously), a FTN specific area tag, and remote uplink address(s). This section can be thought of similar to the *AREAS.BBS* file used by other BBS packages.
|
The `areas` section describes a mapping of local **area tags** found in your `messageConferences` to a message network (from `networks` described previously), a FTN specific area tag, and remote uplink address(s). This section can be thought of similar to the *AREAS.BBS* file used by other BBS packages (In fact you can import AREAS.BBS using `oputil.js`!)
|
||||||
|
|
||||||
When importing, messages will be placed in the local area that matches key under `areas`.
|
When importing, messages will be placed in the local area that matches key under `areas`.
|
||||||
|
|
||||||
|
@ -57,11 +57,11 @@ When importing, messages will be placed in the local area that matches key under
|
||||||
```
|
```
|
||||||
|
|
||||||
### BSO Import / Export
|
### BSO Import / Export
|
||||||
The scanner/tosser module `ftn_bso` provides **B**inkley **S**tyle **O**utbound (BSO) import/toss & scan/export of messages EchoMail and NetMail messages. Configuration is supplied in `config.hjson` under `scannerTossers::ftn_bso`.
|
The scanner/tosser module `ftn_bso` provides **B**inkley **S**tyle **O**utbound (BSO) import/toss & scan/export of messages EchoMail and NetMail messages. Configuration is supplied in `config.hjson` under `scannerTossers.ftn_bso`.
|
||||||
|
|
||||||
**Members**:
|
**Members**:
|
||||||
* `defaultZone` (required): Sets the default BSO outbound zone
|
* `defaultZone` (required): Sets the default BSO outbound zone
|
||||||
* `defaultNetwork` (optional): Sets the default network name from `messageNetworks::ftn::networks`. **Required if more than one network is defined**.
|
* `defaultNetwork` (optional): Sets the default network name from `messageNetworks.ftn.networks`. **Required if more than one network is defined**.
|
||||||
* `paths` (optional): Override default paths set by the system. This section may contain `outbound`, `inbound`, and `secInbound`.
|
* `paths` (optional): Override default paths set by the system. This section may contain `outbound`, `inbound`, and `secInbound`.
|
||||||
* `packetTargetByteSize` (optional): Overrides the system *target* packet (.pkt) size of 512000 bytes (512k)
|
* `packetTargetByteSize` (optional): Overrides the system *target* packet (.pkt) size of 512000 bytes (512k)
|
||||||
* `bundleTargetByteSize` (optional): Overrides the system *target* ArcMail bundle size of 2048000 bytes (2M)
|
* `bundleTargetByteSize` (optional): Overrides the system *target* ArcMail bundle size of 2048000 bytes (2M)
|
||||||
|
@ -85,7 +85,7 @@ A node entry starts with a FTN style address (up to 5D) **as a key** in `config.
|
||||||
scannerTossers: {
|
scannerTossers: {
|
||||||
ftn_bso: {
|
ftn_bso: {
|
||||||
nodes: {
|
nodes: {
|
||||||
"46:*: {
|
"46:*": {
|
||||||
packetType: 2+
|
packetType: 2+
|
||||||
packetPassword: mypass
|
packetPassword: mypass
|
||||||
encoding: cp437
|
encoding: cp437
|
||||||
|
@ -97,6 +97,13 @@ A node entry starts with a FTN style address (up to 5D) **as a key** in `config.
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### TIC Support
|
||||||
|
ENiGMA½ supports TIC files. This is handled by mapping TIC areas to local file areas.
|
||||||
|
|
||||||
|
Under a given node (described above) TIC configuration may be supplied.
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
#### Scheduling
|
#### Scheduling
|
||||||
Schedules can be defined for importing and exporting via `import` and `export` under `schedule`. Each entry is allowed a "free form" text and/or special indicators for immediate export or watch file triggers.
|
Schedules can be defined for importing and exporting via `import` and `export` under `schedule`. Each entry is allowed a "free form" text and/or special indicators for immediate export or watch file triggers.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue