Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs into 216-waiting-for-caller
|
@ -13,7 +13,7 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
|
||||||
* [CP437](http://www.ascii-codes.com/) and UTF-8 output
|
* [CP437](http://www.ascii-codes.com/) and UTF-8 output
|
||||||
* [SyncTERM](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior.
|
* [SyncTERM](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior.
|
||||||
* Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support.
|
* Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support.
|
||||||
* Renegade style [pipe color codes](/docs/configuration/colour-codes.md).
|
* Renegade style [pipe color codes](./docs/configuration/colour-codes.md).
|
||||||
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
||||||
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
||||||
* Support for 2-Factor Authentication with One-Time-Passwords
|
* Support for 2-Factor Authentication with One-Time-Passwords
|
||||||
|
@ -28,7 +28,7 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
|
||||||
...and much much more. Please check out [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues) and feel free to request features (or contribute!) features!
|
...and much much more. Please check out [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues) and feel free to request features (or contribute!) features!
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
[Browse the docs online](https://nuskooler.github.io/enigma-bbs/). Be sure to checkout the [/docs/](/docs/) folder as well for the latest and greatest documentation.
|
[Browse the docs online](https://nuskooler.github.io/enigma-bbs/). Be sure to checkout the [/docs/](./docs/) folder as well for the latest and greatest documentation.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
On most *nix systems simply run the following from your terminal:
|
On most *nix systems simply run the following from your terminal:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
This document covers basic upgrade notes for major ENiGMA½ version updates.
|
This document covers basic upgrade notes for major ENiGMA½ version updates.
|
||||||
|
|
||||||
# Before Upgrading
|
# Before Upgrading
|
||||||
* Always back up your system! (See [Administration](/docs/admin/administration.md))
|
* Always back up your system! (See [Administration](./docs/admin/administration.md))
|
||||||
* Seriously, always back up your system!
|
* Seriously, always back up your system!
|
||||||
|
|
||||||
# General Notes
|
# General Notes
|
||||||
|
@ -12,7 +12,7 @@ In general, look at template menu files in `misc/menu_templates`, and `config_te
|
||||||
### Menus & Theme Updates
|
### Menus & Theme Updates
|
||||||
Upgrades often come with changes to the default menu templates found in `misc/menu_tempaltes`. You can use these as references for changes and additions to the default menu sets. This also applies to the default `luciano_blocktronics` theme and it's `theme.hjson` file.
|
Upgrades often come with changes to the default menu templates found in `misc/menu_tempaltes`. You can use these as references for changes and additions to the default menu sets. This also applies to the default `luciano_blocktronics` theme and it's `theme.hjson` file.
|
||||||
|
|
||||||
See [Updating](/docs/admin/updating.md) for details on menu files/etc.
|
See [Updating](./docs/admin/updating.md) for details on menu files/etc.
|
||||||
|
|
||||||
# Upgrading the Code
|
# Upgrading the Code
|
||||||
Upgrading from GitHub is easy:
|
Upgrading from GitHub is easy:
|
||||||
|
|
14
WHATSNEW.md
|
@ -2,18 +2,18 @@
|
||||||
This document attempts to track **major** changes and additions in ENiGMA½. For details, see GitHub.
|
This document attempts to track **major** changes and additions in ENiGMA½. For details, see GitHub.
|
||||||
|
|
||||||
## 0.0.12-beta
|
## 0.0.12-beta
|
||||||
* The `master` branch has become mainline. What this means to users is `git pull` will always give you the latest and greatest. Make sure to read [Updating](/docs/admin/updating.md) and keep an eye on `WHATSNEW.md` (this file) and [UPGRADE](UPGRADE.md)! See also [ticket #276](https://github.com/NuSkooler/enigma-bbs/issues/276).
|
* The `master` branch has become mainline. What this means to users is `git pull` will always give you the latest and greatest. Make sure to read [Updating](./docs/admin/updating.md) and keep an eye on `WHATSNEW.md` (this file) and [UPGRADE](UPGRADE.md)! See also [ticket #276](https://github.com/NuSkooler/enigma-bbs/issues/276).
|
||||||
* The default configuration has been moved to [config_default.js](/core/config_default.js).
|
* The default configuration has been moved to [config_default.js](/core/config_default.js).
|
||||||
* A full configuration revamp has taken place. Configuration files such as `config.hjson`, `menu.hjson`, and `theme.hjson` can now utilize includes via the `includes` directive, reference 'self' sections using `@reference:` and import environment variables with `@environment`.
|
* A full configuration revamp has taken place. Configuration files such as `config.hjson`, `menu.hjson`, and `theme.hjson` can now utilize includes via the `includes` directive, reference 'self' sections using `@reference:` and import environment variables with `@environment`.
|
||||||
* An explicit prompt file previously specified by `general.promptFile` in `config.hjson` is no longer necessary. Instead, this now simply part of the `prompts` section in `menu.hjson`. The default setup still creates a separate prompt HJSON file, but it is `includes`ed in `menu.hjson`. With the removal of prompts the `PromptsChanged` event will no longer be fired.
|
* An explicit prompt file previously specified by `general.promptFile` in `config.hjson` is no longer necessary. Instead, this now simply part of the `prompts` section in `menu.hjson`. The default setup still creates a separate prompt HJSON file, but it is `includes`ed in `menu.hjson`. With the removal of prompts the `PromptsChanged` event will no longer be fired.
|
||||||
* New `PV` ACS check for arbitrary user properties. See [ACS](/docs/configuration/acs.md) for details.
|
* New `PV` ACS check for arbitrary user properties. See [ACS](./docs/configuration/acs.md) for details.
|
||||||
* The `message` arg used by `msg_list` has been deprecated. Please starting using `messageIndex` for this purpose. Support for `message` will be removed in the future.
|
* The `message` arg used by `msg_list` has been deprecated. Please starting using `messageIndex` for this purpose. Support for `message` will be removed in the future.
|
||||||
* A number of new MCI codes (see [MCI](./docs/art/mci.md))
|
* A number of new MCI codes (see [MCI](./docs/art/mci.md))
|
||||||
|
|
||||||
## 0.0.11-beta
|
## 0.0.11-beta
|
||||||
* Upgraded from `alpha` to `beta` -- The software is far along and mature enough at this point!
|
* Upgraded from `alpha` to `beta` -- The software is far along and mature enough at this point!
|
||||||
* Development is now against Node.js 12.x LTS. Other versions may work but are not currently supported!
|
* Development is now against Node.js 12.x LTS. Other versions may work but are not currently supported!
|
||||||
* [QWK support](/docs/messageareas/qwk.md)
|
* [QWK support](./docs/messageareas/qwk.md)
|
||||||
* `oputil fb scan *areaTagWildcard*` scans all areas in which wildcard is matched.
|
* `oputil fb scan *areaTagWildcard*` scans all areas in which wildcard is matched.
|
||||||
* The archiver configuration `escapeTelnet` has been renamed `escapeIACs`. Support for the old value will be removed in the future.
|
* The archiver configuration `escapeTelnet` has been renamed `escapeIACs`. Support for the old value will be removed in the future.
|
||||||
|
|
||||||
|
@ -21,8 +21,8 @@ This document attempts to track **major** changes and additions in ENiGMA½. For
|
||||||
+ `oputil.js user rename USERNAME NEWNAME`
|
+ `oputil.js user rename USERNAME NEWNAME`
|
||||||
+ `my_messages.js` module (defaulted to "m" at the message menu) to list public messages addressed to the currently logged in user. Takes into account their username and `real_name` property.
|
+ `my_messages.js` module (defaulted to "m" at the message menu) to list public messages addressed to the currently logged in user. Takes into account their username and `real_name` property.
|
||||||
+ SSH Public Key Authentication has been added. The system uses a OpenSSH style public key set on the `ssh_public_key` user property.
|
+ SSH Public Key Authentication has been added. The system uses a OpenSSH style public key set on the `ssh_public_key` user property.
|
||||||
+ 2-Factor (2FA) authentication is now available using [RFC-4266 - HOTP: HMAC-Based One-Time Password Algorithm)](https://tools.ietf.org/html/rfc4226), [RFC-6238 - TOTP: Time-Based One-Time Password Algorithm](https://tools.ietf.org/html/rfc6238), or [Google Authenticator](http://google-authenticator.com/). QR codes for activation are available as well. One-time backup aka recovery codes can also be used. See [Security](/docs/configuration/security.md) for more info!
|
+ 2-Factor (2FA) authentication is now available using [RFC-4266 - HOTP: HMAC-Based One-Time Password Algorithm)](https://tools.ietf.org/html/rfc4226), [RFC-6238 - TOTP: Time-Based One-Time Password Algorithm](https://tools.ietf.org/html/rfc6238), or [Google Authenticator](http://google-authenticator.com/). QR codes for activation are available as well. One-time backup aka recovery codes can also be used. See [Security](./docs/configuration/security.md) for more info!
|
||||||
* New ACS codes for new 2FA/OTP: `AR` and `AF`. See [ACS](/docs/configuration/acs.md) for details.
|
* New ACS codes for new 2FA/OTP: `AR` and `AF`. See [ACS](./docs/configuration/acs.md) for details.
|
||||||
+ `oputil.js user 2fa USERNAME TYPE` enables 2-factor authentication for a user.
|
+ `oputil.js user 2fa USERNAME TYPE` enables 2-factor authentication for a user.
|
||||||
* `oputil.js user info USERNAME --security` can now display additional security information such as 2FA/OTP.
|
* `oputil.js user info USERNAME --security` can now display additional security information such as 2FA/OTP.
|
||||||
* `oputil.js fb scan --quick` is now the default. Override with `--full`.
|
* `oputil.js fb scan --quick` is now the default. Override with `--full`.
|
||||||
|
@ -85,8 +85,8 @@ submit: [
|
||||||
* `install.sh` will now attempt to use NPM's `--build-from-source` option when ARM is detected.
|
* `install.sh` will now attempt to use NPM's `--build-from-source` option when ARM is detected.
|
||||||
* `oputil.js config new` will now generate a much more complete configuration file with comments, examples, etc. `oputil.js config cat` dumps your current config to stdout.
|
* `oputil.js config new` will now generate a much more complete configuration file with comments, examples, etc. `oputil.js config cat` dumps your current config to stdout.
|
||||||
* Handling of failed login attempts is now fully in. Disconnect clients, lock out accounts, ability to auto or unlock at (email-driven) password reset, etc. See `users.failedLogin` in `config.hjson`.
|
* Handling of failed login attempts is now fully in. Disconnect clients, lock out accounts, ability to auto or unlock at (email-driven) password reset, etc. See `users.failedLogin` in `config.hjson`.
|
||||||
* NNTP support! See [NNTP docs](/docs/servers/nntp.md) for more information.
|
* NNTP support! See [NNTP docs](./docs/servers/nntp.md) for more information.
|
||||||
* `oputil.js user rm` and `oputil.js user info` are in! See [oputil CLI](/docs/admin/oputil.md).
|
* `oputil.js user rm` and `oputil.js user info` are in! See [oputil CLI](./docs/admin/oputil.md).
|
||||||
* Performing a file scan/import using `oputil.js fb scan` now recognizes various `FILES.BBS` formats.
|
* Performing a file scan/import using `oputil.js fb scan` now recognizes various `FILES.BBS` formats.
|
||||||
* Usernames found in the `config.users.badUserNames` are now not only disallowed from applying, but disconnected at any login attempt.
|
* Usernames found in the `config.users.badUserNames` are now not only disallowed from applying, but disconnected at any login attempt.
|
||||||
* Total minutes online is now tracked for users. Of course, it only starts after you get the update :)
|
* Total minutes online is now tracked for users. Of course, it only starts after you get the update :)
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
- [HJSON Config Files]({{ site.baseurl }}{% link configuration/hjson.md %})
|
- [HJSON Config Files]({{ site.baseurl }}{% link configuration/hjson.md %})
|
||||||
- [Menus]({{ site.baseurl }}{% link configuration/menu-hjson.md %})
|
- [Menus]({{ site.baseurl }}{% link configuration/menu-hjson.md %})
|
||||||
- [Directory Structure]({{ site.baseurl }}{% link configuration/directory-structure.md %})
|
- [Directory Structure]({{ site.baseurl }}{% link configuration/directory-structure.md %})
|
||||||
|
- [External Binaries]({{ site.baseurl }}{% link configuration/external-binaries.md %})
|
||||||
- [Archivers]({{ site.baseurl }}{% link configuration/archivers.md %})
|
- [Archivers]({{ site.baseurl }}{% link configuration/archivers.md %})
|
||||||
- [File Transfer Protocols]({{ site.baseurl }}{% link configuration/file-transfer-protocols.md %})
|
- [File Transfer Protocols]({{ site.baseurl }}{% link configuration/file-transfer-protocols.md %})
|
||||||
- [Email]({{ site.baseurl }}{% link configuration/email.md %})
|
- [Email]({{ site.baseurl }}{% link configuration/email.md %})
|
||||||
|
|
|
@ -9,7 +9,7 @@ title: Administration
|
||||||
See [Updating](updating.md).
|
See [Updating](updating.md).
|
||||||
|
|
||||||
## Viewing Logs
|
## Viewing Logs
|
||||||
See [Monitoring Logs](/docs/troubleshooting/monitoring-logs.md).
|
See [Monitoring Logs](../troubleshooting/monitoring-logs.md).
|
||||||
|
|
||||||
## Managing Users
|
## Managing Users
|
||||||
User management is currently handled via the [oputil CLI](oputil.md).
|
User management is currently handled via the [oputil CLI](oputil.md).
|
||||||
|
|
|
@ -107,7 +107,7 @@ info arguments:
|
||||||
| `group` | Modifies users group membership | Add to group: `./oputil.js user group joeuser +derp`<br/>Remove from group: `./oputil.js user group joeuser -derp` | N/A |
|
| `group` | Modifies users group membership | Add to group: `./oputil.js user group joeuser +derp`<br/>Remove from group: `./oputil.js user group joeuser -derp` | N/A |
|
||||||
|
|
||||||
#### Manage 2FA/OTP
|
#### Manage 2FA/OTP
|
||||||
While `oputil.js` can be used to manage a user's 2FA/OTP, it is highly recommended to require users to opt-in themselves. See [Security](/docs/configuration/security.md) for details.
|
While `oputil.js` can be used to manage a user's 2FA/OTP, it is highly recommended to require users to opt-in themselves. See [Security](../configuration/security.md) for details.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
The `config` command allows sysops to perform various system configuration and maintenance tasks.
|
The `config` command allows sysops to perform various system configuration and maintenance tasks.
|
||||||
|
|
|
@ -25,7 +25,7 @@ npm install # or 'yarn'
|
||||||
|
|
||||||
:information_source: Visual diff tools such as [DiffMerge](https://www.sourcegear.com/diffmerge/downloads.php) (free, works on all major platforms) can be very helpful for the tasks outlined above!
|
:information_source: Visual diff tools such as [DiffMerge](https://www.sourcegear.com/diffmerge/downloads.php) (free, works on all major platforms) can be very helpful for the tasks outlined above!
|
||||||
|
|
||||||
:bulb: It is recommended to [monitor logs](/docs/troubleshooting/monitoring-logs.md) and poke around a bit after an update!
|
:bulb: It is recommended to [monitor logs](../troubleshooting/monitoring-logs.md) and poke around a bit after an update!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,15 +5,20 @@ title: General Art Information
|
||||||
## General Art Information
|
## General Art Information
|
||||||
One of the most basic elements of BBS customization is through it's artwork. ENiGMA½ supports a variety of ways to select, display, and manage art.
|
One of the most basic elements of BBS customization is through it's artwork. ENiGMA½ supports a variety of ways to select, display, and manage art.
|
||||||
|
|
||||||
|
### Art File Locations
|
||||||
As a general rule, art files live in one of two places:
|
As a general rule, art files live in one of two places:
|
||||||
|
|
||||||
1. The `art/general` directory. This is where you place common/non-themed art files.
|
1. The `art/general` directory. This is where you place common/non-themed art files.
|
||||||
2. Within a _theme_ such as `art/themes/super_fancy_theme`.
|
2. Within a _theme_ such as `art/themes/super_fancy_theme`.
|
||||||
|
|
||||||
### Art in Menus
|
### MCI Codes
|
||||||
While art can be displayed programmatically such as from a custom module, the most basic and common form is via `menu.hjson` entries. This usually falls into one of two forms.
|
All art can contain [MCI Codes](mci.md).
|
||||||
|
|
||||||
**Form 1**: A "standard" entry where a single `art` spec is utilized:
|
### Art in Menus
|
||||||
|
While art can be displayed programmatically such as from a custom module, the most basic and common form is via `menu.hjson` entries. This usually falls into one of two forms:
|
||||||
|
|
||||||
|
#### Standard
|
||||||
|
A "standard" entry where a single `art` spec is utilized:
|
||||||
```hjson
|
```hjson
|
||||||
{
|
{
|
||||||
mainMenu: {
|
mainMenu: {
|
||||||
|
@ -22,7 +27,8 @@ While art can be displayed programmatically such as from a custom module, the mo
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**Form 2**: An entry for a custom module where multiple pieces are declared and used. The second style usually takes the form of a `config.art` block with two or more entries:
|
#### Module Specific / Multiple Art
|
||||||
|
An entry for a custom module where multiple pieces are declared and used. The second style usually takes the form of a `config.art` block with two or more entries:
|
||||||
```hjson
|
```hjson
|
||||||
{
|
{
|
||||||
nodeMessage: {
|
nodeMessage: {
|
||||||
|
@ -64,7 +70,7 @@ ENiGMA½ uses a fallback system for art selection. When a menu entry calls for a
|
||||||
4. In the `art/general` directory.
|
4. In the `art/general` directory.
|
||||||
|
|
||||||
#### ACS-Driven Conditionals
|
#### ACS-Driven Conditionals
|
||||||
The [ACS](/docs/configuration/acs.md) system can be used to make conditional art selection choices. To do this, provide an array of possible values in your art spec. As an example:
|
The [ACS](../configuration/acs.md) system can be used to make conditional art selection choices. To do this, provide an array of possible values in your art spec. As an example:
|
||||||
```hjson
|
```hjson
|
||||||
{
|
{
|
||||||
fancyMenu: {
|
fancyMenu: {
|
||||||
|
@ -100,7 +106,17 @@ The most common fonts are probably as follows:
|
||||||
* `microknight`
|
* `microknight`
|
||||||
* `topaz`
|
* `topaz`
|
||||||
|
|
||||||
Other fonts fonts also available:
|
...and some examples:
|
||||||
|
|
||||||
|
![cp437](../assets/images/cp437.png "cp437")<br>
|
||||||
|
![pot_noodle](../assets/images/pot_noodle.png "pot_noodle")<br>
|
||||||
|
![mo_soul](../assets/images/mo_soul.png "mo_soul")<br>
|
||||||
|
![microknight_plus](../assets/images/microknight_plus.png "microknight_plus")<br>
|
||||||
|
![topaz_plus](../assets/images/topaz_plus.png "topaz_plus")<br>
|
||||||
|
![microknight](../assets/images/microknight.png "microknight")<br>
|
||||||
|
![topaz](../assets/images/topaz.png "topaz")<br>
|
||||||
|
|
||||||
|
Other "fonts" also available:
|
||||||
* `cp1251`
|
* `cp1251`
|
||||||
* `koi8_r`
|
* `koi8_r`
|
||||||
* `iso8859_2`
|
* `iso8859_2`
|
||||||
|
@ -133,10 +149,12 @@ Other fonts fonts also available:
|
||||||
* `iso8859_1`
|
* `iso8859_1`
|
||||||
* `cp1131`
|
* `cp1131`
|
||||||
|
|
||||||
See [this specification](https://github.com/protomouse/synchronet/blob/master/src/conio/cterm.txt) for more information.
|
:information_source: See [this specification](https://github.com/protomouse/synchronet/blob/master/src/conio/cterm.txt) for more information.
|
||||||
|
|
||||||
#### SyncTERM Style Baud Rates
|
#### SyncTERM Style Baud Rates
|
||||||
The `baudRate` member can set a [SyncTERM](http://syncterm.bbsdev.net/) style emulated baud rate. May be `300`, `600`, `1200`, `2400`, `4800`, `9600`, `19200`, `38400`, `57600`, `76800`, or `115200`. A value of `ulimited`, `off`, or `0` resets (disables) the rate. See [this specification](https://github.com/protomouse/synchronet/blob/master/src/conio/cterm.txt) for more information.
|
The `baudRate` member can set a [SyncTERM](http://syncterm.bbsdev.net/) style emulated baud rate. May be `300`, `600`, `1200`, `2400`, `4800`, `9600`, `19200`, `38400`, `57600`, `76800`, or `115200`. A value of `ulimited`, `off`, or `0` resets (disables) the rate.
|
||||||
|
|
||||||
|
:information_source: See [this specification](https://github.com/protomouse/synchronet/blob/master/src/conio/cterm.txt) for more information.
|
||||||
|
|
||||||
### Common Example
|
### Common Example
|
||||||
```hjson
|
```hjson
|
||||||
|
@ -153,4 +171,4 @@ fullLogoffSequenceRandomBoardAd: {
|
||||||
```
|
```
|
||||||
|
|
||||||
### See Also
|
### See Also
|
||||||
See also the [Show Art Module](/docs/modding/show-art.md) for more advanced art display!
|
See also the [Show Art Module](../modding/show-art.md) for more advanced art display!
|
|
@ -2,16 +2,27 @@
|
||||||
layout: page
|
layout: page
|
||||||
title: MCI Codes
|
title: MCI Codes
|
||||||
---
|
---
|
||||||
ENiGMA½ supports a variety of MCI codes. Some **predefined** codes produce information about the current user, system,
|
## MCI Codes
|
||||||
or other statistics while others are used to instantiate a **View**. MCI codes are two characters in length and are
|
ENiGMA½ supports a variety of MCI codes. Some **predefined** codes produce information about the current user, system, or other statistics while others are used to instantiate a **View**.
|
||||||
prefixed with a percent (%) symbol. Some MCI codes have additional options that may be set directly from the code itself
|
|
||||||
while others -- and more advanced options -- are controlled via the current theme. Standard (non-focus) and focus colors
|
|
||||||
are set by placing duplicate codes back to back in art files.
|
|
||||||
|
|
||||||
## Predefined MCI Codes
|
## General Information
|
||||||
There are many predefined MCI codes that can be used anywhere on the system (placed in any art file). More are added all
|
MCI codes are composed of two characters and are prefixed with a percent (%) symbol.
|
||||||
the time so also check out [core/predefined_mci.js](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js)
|
|
||||||
for a full listing. Many codes attempt to pay homage to Oblivion/2, iNiQUiTY, etc.
|
:information_source: To explicitly tie a MCI to a specific View ID, suffix the MCI code with a number. For example: `%BN1`.
|
||||||
|
|
||||||
|
:information_source: Standard (non-focus) and focus colors are set by placing duplicate codes back to back in art files:
|
||||||
|
|
||||||
|
![Example](../assets/images/mci-example1.png "MCI Colors")
|
||||||
|
|
||||||
|
Some MCI codes have additional options that may be set directly from the code itself while others -- and more advanced options -- are controlled via the current theme.
|
||||||
|
|
||||||
|
## Relationship with Menus, Art, and Themes
|
||||||
|
A MCI code that appears in a `menu.hjson` entry corresponds to that found in it's associated art file. This same MCI code can be referenced in the `theme.hjson` in order to apply a theme.
|
||||||
|
|
||||||
|
See [Menus](../docs/configuration/menu-hjson.md) and [Themes](themes.md) for more information.
|
||||||
|
|
||||||
|
## Predefined Codes
|
||||||
|
There are many predefined MCI codes that can be used anywhere on the system (placed in any art file).
|
||||||
|
|
||||||
| Code | Description |
|
| Code | Description |
|
||||||
|------|--------------|
|
|------|--------------|
|
||||||
|
@ -98,6 +109,13 @@ Some additional special case codes also exist:
|
||||||
| `XY` | A special code that may be utilized for placement identification when creating menus or to extend an otherwise empty space in an art file down the screen. |
|
| `XY` | A special code that may be utilized for placement identification when creating menus or to extend an otherwise empty space in an art file down the screen. |
|
||||||
|
|
||||||
|
|
||||||
|
:information_source: More are added all
|
||||||
|
the time so also check out [core/predefined_mci.js](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js)
|
||||||
|
for a full listing.
|
||||||
|
|
||||||
|
:note: Many codes attempt to pay homage to Oblivion/2, iNiQUiTY, etc.
|
||||||
|
|
||||||
|
|
||||||
## Views
|
## Views
|
||||||
A **View** is a control placed on a **form** that can display variable data or collect input. One example of a View is
|
A **View** is a control placed on a **form** that can display variable data or collect input. One example of a View is
|
||||||
a Vertical Menu (`%VM`): Old-school BBSers may recognize this as a lightbar menu.
|
a Vertical Menu (`%VM`): Old-school BBSers may recognize this as a lightbar menu.
|
||||||
|
@ -115,10 +133,11 @@ a Vertical Menu (`%VM`): Old-school BBSers may recognize this as a lightbar menu
|
||||||
| `TM` | Toggle Menu | A toggle menu commonly used for Yes/No style input |
|
| `TM` | Toggle Menu | A toggle menu commonly used for Yes/No style input |
|
||||||
| `KE` | Key Entry | A *single* key input control |
|
| `KE` | Key Entry | A *single* key input control |
|
||||||
|
|
||||||
|
:information_source: Peek at [/core/mci_view_factory.js](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js) to
|
||||||
Peek at [/core/mci_view_factory.js](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js) to
|
|
||||||
see additional information.
|
see additional information.
|
||||||
|
|
||||||
|
### View Identifiers
|
||||||
|
As mentioned above, MCI codes can (and often should) be explicitly tied to a *View Identifier*. Simply speaking this is a number representing the particular view. These can be useful to reference in code, apply themes, etc.
|
||||||
|
|
||||||
## Properties & Theming
|
## Properties & Theming
|
||||||
Predefined MCI codes and other Views can have properties set via `menu.hjson` and further *themed* via `theme.hjson`. See [Themes](themes.md) for more information on this subject.
|
Predefined MCI codes and other Views can have properties set via `menu.hjson` and further *themed* via `theme.hjson`. See [Themes](themes.md) for more information on this subject.
|
||||||
|
@ -138,8 +157,7 @@ Predefined MCI codes and other Views can have properties set via `menu.hjson` an
|
||||||
| `itemFormat` | Sets the format for a list entry. See **Entry Formatting** below |
|
| `itemFormat` | Sets the format for a list entry. See **Entry Formatting** below |
|
||||||
| `focusItemFormat` | Sets the format for a focused list entry. See **Entry Formatting** below |
|
| `focusItemFormat` | Sets the format for a focused list entry. See **Entry Formatting** below |
|
||||||
|
|
||||||
These are just a few of the properties set on various views. *Use the source Luke*, as well as taking a look at the default
|
These are just a few of the properties set on various views. *Use the source Luke*, as well as taking a look at the default `menu.hjson` and `theme.hjson` files!
|
||||||
`menu.hjson` and `theme.hjson` files!
|
|
||||||
|
|
||||||
### Custom Properties
|
### Custom Properties
|
||||||
Often a module will provide custom properties that receive format objects (See **Entry Formatting** below). Custom property formatting can be declared in the `config` block. For example, `browseInfoFormat10`..._N_ (where _N_ is up to 99) in the `file_area_list` module received a fairly extensive format object that contains `{fileName}`, `{estReleaseYear}`, etc.
|
Often a module will provide custom properties that receive format objects (See **Entry Formatting** below). Custom property formatting can be declared in the `config` block. For example, `browseInfoFormat10`..._N_ (where _N_ is up to 99) in the `file_area_list` module received a fairly extensive format object that contains `{fileName}`, `{estReleaseYear}`, etc.
|
||||||
|
@ -196,6 +214,8 @@ Additional text styles are available for numbers:
|
||||||
|
|
||||||
|
|
||||||
#### Examples
|
#### Examples
|
||||||
Suppose a format object contains the following elements: `userName` and `affils`. We could create a `itemFormat` entry that builds a item to our specifications: `|04{userName!styleFirstLower} |08- |13{affils}`. This may produce a string such as "<font color="red">eVIL cURRENT</font> <font color="grey">-</font> <font color="magenta">Razor 1911</font>".
|
Suppose a format object contains the following elements: `userName` and `affils`. We could create a `itemFormat` entry that builds a item to our specifications: `|04{userName!styleFirstLower} |08- |13{affils}`. This may produce a string such as this:
|
||||||
|
|
||||||
Remember that a Python [string format mini language](https://docs.python.org/3/library/string.html#format-specification-mini-language) style syntax is available for widths, alignment, number prevision, etc. as well. A number can be made to be more human readable for example: `{byteSize:,}` may yield "1,123,456".
|
![Example](../assets/images/text-format-example1.png "Text Format")
|
||||||
|
|
||||||
|
:bulb: Remember that a Python [string format mini language](https://docs.python.org/3/library/string.html#format-specification-mini-language) style syntax is available for widths, alignment, number prevision, etc. as well. A number can be made to be more human readable for example: `{byteSize:,}` may yield "1,123,456".
|
|
@ -6,10 +6,12 @@ title: Themes
|
||||||
ENiGMA½ comes with an advanced theming system allowing system operators to highly customize the look and feel of their boards. A given installation can have as many themes as you like for your users to choose from.
|
ENiGMA½ comes with an advanced theming system allowing system operators to highly customize the look and feel of their boards. A given installation can have as many themes as you like for your users to choose from.
|
||||||
|
|
||||||
## General Information
|
## General Information
|
||||||
Themes live in `art/themes/`. Each theme (and thus it's *theme ID*) is a directory within the `themes` directory. The theme itself is simply a collection of art files, and a `theme.hjson` file that further defines layout, colors & formatting, etc. ENiGMA½ comes with a default theme by [Luciano Ayres](http://blocktronics.org/tag/luciano-ayres/) of [Blocktronics](http://blocktronics.org/) called Mystery Skull. This theme is in `art/themes/luciano_blocktronics`, and thus it's *theme ID* is `luciano_blocktronics`.
|
Themes live in `art/themes/`. Each theme (and thus it's *theme ID*) is a directory within the `themes` directory. The theme itself is simply a collection of art files, and a `theme.hjson` file that further defines layout, colors & formatting, etc.
|
||||||
|
|
||||||
|
ENiGMA½ comes with a default theme by [Luciano Ayres](http://blocktronics.org/tag/luciano-ayres/) of [Blocktronics](http://blocktronics.org/) called Mystery Skull. This theme is in `art/themes/luciano_blocktronics`, and thus it's *theme ID* is `luciano_blocktronics`.
|
||||||
|
|
||||||
## Art
|
## Art
|
||||||
For information on art files, see [General Art Information](general.md). TL;DR: In general, to theme a piece of art, create a version of it in your themes directory.
|
For information on art files, see [General Art Information](general.md). In general, to theme a piece of art, create a version of it in your themes directory.
|
||||||
|
|
||||||
:memo: Remember that by default, the system will allow for randomly selecting art (in one of the directories mentioned above) by numbering it: `FOO1.ANS`, `FOO2.ANS`, etc.!
|
:memo: Remember that by default, the system will allow for randomly selecting art (in one of the directories mentioned above) by numbering it: `FOO1.ANS`, `FOO2.ANS`, etc.!
|
||||||
|
|
||||||
|
@ -67,8 +69,20 @@ Major areas to override/theme:
|
||||||
* `mci`: Set per-MCI code properties such as `height`, `width`, text styles, etc. See [MCI Codes](mci.md) for a more information.
|
* `mci`: Set per-MCI code properties such as `height`, `width`, text styles, etc. See [MCI Codes](mci.md) for a more information.
|
||||||
|
|
||||||
Two formats for `mci` blocks are allowed:
|
Two formats for `mci` blocks are allowed:
|
||||||
* Verbose where a form ID(s) are supplied.
|
|
||||||
* Shorthand if only a single/first form is needed.
|
* Shorthand if only a single/first form is needed.
|
||||||
|
* Verbose where a form ID(s) are supplied (required if multiple forms are used)
|
||||||
|
|
||||||
|
Example: Shorthand `mci` format:
|
||||||
|
```hjson
|
||||||
|
matrix: {
|
||||||
|
mci: {
|
||||||
|
VM1: {
|
||||||
|
itemFormat: "|03{text}"
|
||||||
|
focusItemFormat: "|11{text!styleFirstLower}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
Example: Verbose `mci` with form IDs:
|
Example: Verbose `mci` with form IDs:
|
||||||
```hjson
|
```hjson
|
||||||
|
@ -88,18 +102,6 @@ newUserFeedbackToSysOp: {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Example: Shorthand `mci` format:
|
|
||||||
```hjson
|
|
||||||
matrix: {
|
|
||||||
mci: {
|
|
||||||
VM1: {
|
|
||||||
itemFormat: "|03{text}"
|
|
||||||
focusItemFormat: "|11{text!styleFirstLower}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
##### Custom Range Info Formatting
|
##### Custom Range Info Formatting
|
||||||
Many modules support "custom range" MCI items. These are MCI codes that are left to the user to define using a format object specific to the module. For example, consider the `msg_area_list` module: This module sets MCI codes 10+ (`%TL10`, `%TL11`, etc.) as "custom range". When theming you can place these MCI codes in your artwork then define the format in `theme.hjson`:
|
Many modules support "custom range" MCI items. These are MCI codes that are left to the user to define using a format object specific to the module. For example, consider the `msg_area_list` module: This module sets MCI codes 10+ (`%TL10`, `%TL11`, etc.) as "custom range". When theming you can place these MCI codes in your artwork then define the format in `theme.hjson`:
|
||||||
|
|
||||||
|
@ -112,7 +114,7 @@ messageAreaChangeCurrentArea: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## Creating Your Own
|
## Creating Your Own
|
||||||
:warning: ***IMPORTANT!*** It is recommended you don't make any customisations to the included `luciano_blocktronics' theme. Instead, create your own and make changes to that instead:
|
:warning: ***IMPORTANT!*** Do not make any customizations to the included `luciano_blocktronics' theme. Instead, create your own and make changes to that instead:
|
||||||
|
|
||||||
1. Copy `/art/themes/luciano_blocktronics` to `art/themes/your_board_theme`
|
1. Copy `/art/themes/luciano_blocktronics` to `art/themes/your_board_theme`
|
||||||
2. Update the `info` block at the top of the theme.hjson file:
|
2. Update the `info` block at the top of the theme.hjson file:
|
||||||
|
@ -125,10 +127,41 @@ info: {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. If desired, you may make this the default system theme in `config.hjson` via `theme.default`. `theme.preLogin` may be set if you want this theme used for pre-authenticated users. Both of these values also accept `*` if you want the system to radomly pick.
|
3. If desired, you may make this the default system theme in `config.hjson` via `theme.default`. `theme.preLogin` may be set if you want this theme used for pre-authenticated users. Both of these values also accept `*` if you want the system to randomly pick.
|
||||||
``` hjson
|
``` hjson
|
||||||
theme: {
|
theme: {
|
||||||
default: your_board_theme
|
default: your_board_theme
|
||||||
preLogin: *
|
preLogin: *
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Theming Example
|
||||||
|
Let's run through an example!
|
||||||
|
|
||||||
|
Consider the following `menu.hjson` entry:
|
||||||
|
```hjson
|
||||||
|
superFancyMenu: {
|
||||||
|
art: FANCY.ANS
|
||||||
|
// ...some other stuff...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
With a file of `FANCY.ANS` in `art/themes/fancy_theme` containing the following MCI codes:
|
||||||
|
* TL1 (Generic text label)
|
||||||
|
* BN2 (Predefined: Board Name)
|
||||||
|
|
||||||
|
An entry in your `theme.hjson` could look like this:
|
||||||
|
```hjson
|
||||||
|
superFancyMenu: {
|
||||||
|
mci: {
|
||||||
|
TL1: {
|
||||||
|
// supply the full format of the TL1 View
|
||||||
|
text: |02ENiGMA|10½ |08v|03|VN
|
||||||
|
}
|
||||||
|
BN2: {
|
||||||
|
// Make Board Name l33t style
|
||||||
|
style: l33t
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
After Width: | Height: | Size: 308 B |
After Width: | Height: | Size: 317 B |
After Width: | Height: | Size: 401 B |
After Width: | Height: | Size: 467 B |
After Width: | Height: | Size: 316 B |
After Width: | Height: | Size: 340 B |
After Width: | Height: | Size: 496 B |
After Width: | Height: | Size: 270 B |
After Width: | Height: | Size: 347 B |
|
@ -73,8 +73,8 @@ All `users` can read (see) the area, `sysops` and `co-ops` can write (upload), a
|
||||||
## ACS Touch Points
|
## ACS Touch Points
|
||||||
The following touch points exist in the system. Many more are planned:
|
The following touch points exist in the system. Many more are planned:
|
||||||
|
|
||||||
* [Message conferences and areas](/docs/messageareas/configuring-a-message-area.md)
|
* [Message conferences and areas](../messageareas/configuring-a-message-area.md)
|
||||||
* [File base areas](/docs/filebase/first-file-area.md) and [Uploads](/docs/filebase/uploads.md)
|
* [File base areas](../filebase/first-file-area.md) and [Uploads](../filebase/uploads.md)
|
||||||
* Menus within [Menu HJSON (menu.hjson)](menu-hjson.md)
|
* Menus within [Menu HJSON (menu.hjson)](menu-hjson.md)
|
||||||
|
|
||||||
See the specific areas documentation for information on available ACS checks.
|
See the specific areas documentation for information on available ACS checks.
|
||||||
|
|
|
@ -2,44 +2,13 @@
|
||||||
layout: page
|
layout: page
|
||||||
title: Archivers
|
title: Archivers
|
||||||
---
|
---
|
||||||
ENiGMA½ can detect and process various archive formats such as zip and arj for a variety of tasks from file upload processing to EchoMail bundle compress/decompression. The `archives` section of `config.hjson` is used to override defaults, add new handlers, and so on.
|
|
||||||
|
|
||||||
## Archivers
|
## Archivers
|
||||||
|
ENiGMA½ can detect and process various archive formats such as zip and arj for a variety of tasks from file upload processing to EchoMail bundle compress/decompression. The `archives` section of `config.hjson` is used to override defaults, add new handlers, and so on.
|
||||||
|
|
||||||
Archivers are manged via the `archives:archivers` configuration block of `config.hjson`. Each entry in this section defines an **external archiver** that can be referenced in other sections of `config.hjson` as and in code. Entries define how to `compress`, `decompress` (a full archive), `list`, and `extract` (specific files from an archive).
|
Archivers are manged via the `archives:archivers` configuration block of `config.hjson`. Each entry in this section defines an **external archiver** that can be referenced in other sections of `config.hjson` as and in code. Entries define how to `compress`, `decompress` (a full archive), `list`, and `extract` (specific files from an archive).
|
||||||
|
|
||||||
### Predefined Archivers
|
:bulb: Generally you do not need to anything beyond installing supporting binaries. No `config.hjson` editing necessary; Please see [External Binaries](external-binaries.md)!
|
||||||
The following archivers are pre-configured in ENiGMA½ as of this writing. Remember that you can override settings or add new handlers!
|
|
||||||
|
|
||||||
#### ZZip
|
|
||||||
* Formats: .7z, .bzip2, .gzip/.gz, and more
|
|
||||||
* Key: `7Zip`
|
|
||||||
* Homepage/package: [7-zip.org](http://www.7-zip.org/). Generally obtained from a `p7zip` package in UNIX-like environments. See http://p7zip.sourceforge.net/ for details.
|
|
||||||
* Notes: Versions previous to 0.0.10-alpha defaulted to using 7zip for .zip files as well, but newer versions of the package give "volume" errors at times. See InfoZip below.
|
|
||||||
|
|
||||||
#### InfoZip
|
|
||||||
* Formats: .zip
|
|
||||||
* Key: InfoZip
|
|
||||||
* Homepage/package: http://infozip.sourceforge.net/. Often already available in Linux. You will need `zip` and `unzip` in ENiGMA's path.
|
|
||||||
|
|
||||||
#### Lha
|
|
||||||
* Formats: <a href="https://en.wikipedia.org/wiki/LHA_(file_format)">LHA</a> files such as .lzh.
|
|
||||||
* Key: `Lha`
|
|
||||||
* Homepage/package: `lhasa` on most UNIX-like environments. See also https://fragglet.github.io/lhasa/ and https://web.archive.org/web/20191023045303/http://www2m.biglobe.ne.jp/~dolphin/lha/lha-unix.htm
|
|
||||||
|
|
||||||
#### Lzx
|
|
||||||
* Formats: <a href="https://en.wikipedia.org/wiki/LZX_(algorithm)#Amiga_LZX">Amiga LZX</a>
|
|
||||||
* Key: `Lzx`
|
|
||||||
* Homepage/package: `unlzx` under most UNIX-like platforms ([Debian/Ubuntu](https://launchpad.net/~rzr/+archive/ubuntu/ppa/+build/2486127), [RedHat](https://fedora.pkgs.org/32/rpm-sphere-x86_64/unlzx-1.1-4.1.x86_64.rpm.html), [Source](http://xavprods.free.fr/lzx/))
|
|
||||||
|
|
||||||
#### Arj
|
|
||||||
* Formats: .arj
|
|
||||||
* Key: `Arj`
|
|
||||||
* Homepage/package: `arj` on most UNIX-like environments.
|
|
||||||
|
|
||||||
#### Rar
|
|
||||||
* Formats: .Rar
|
|
||||||
* Key: `Rar`
|
|
||||||
* Homepage/package: `unrar` on most UNIX-like environments. See also https://blog.hostonnet.com/unrar
|
|
||||||
|
|
||||||
### Archiver Configuration
|
### Archiver Configuration
|
||||||
Archiver entries in `config.hjson` are mostly self explanatory with the exception of `list` commands that require some additional information. The `args` member for an entry is an array of arguments to pass to `cmd`. Some variables are available to `args` that will be expanded by the system:
|
Archiver entries in `config.hjson` are mostly self explanatory with the exception of `list` commands that require some additional information. The `args` member for an entry is an array of arguments to pass to `cmd`. Some variables are available to `args` that will be expanded by the system:
|
||||||
|
|
|
@ -8,7 +8,7 @@ ENiGMA½ configuration files such as the [system config](config-hjson.md), [menu
|
||||||
## Hot-Reload
|
## Hot-Reload
|
||||||
Nearly all of ENiGMA½'s configuration can be hot-reloaded. That is, a live system can have it's configuration modified and it will be loaded in place.
|
Nearly all of ENiGMA½'s configuration can be hot-reloaded. That is, a live system can have it's configuration modified and it will be loaded in place.
|
||||||
|
|
||||||
:bulb: [Monitoring live logs](/docs/troubleshooting/monitoring-logs.md) is useful when making live changes. The system will complain if something is wrong!
|
:bulb: [Monitoring live logs](../troubleshooting/monitoring-logs.md) is useful when making live changes. The system will complain if something is wrong!
|
||||||
|
|
||||||
## Common Directives
|
## Common Directives
|
||||||
### Includes
|
### Includes
|
||||||
|
@ -74,7 +74,7 @@ Consider `actionKeys` in a menu. Often times you may show a screen and the user
|
||||||
:information_source: An unresolved `@reference` will be left intact.
|
:information_source: An unresolved `@reference` will be left intact.
|
||||||
|
|
||||||
### Environment Variables
|
### Environment Variables
|
||||||
Especially in a container environment such as [Docker](/docs/installation/docker.md), environment variable access in configuration files can become very handy. ENiGMA½ provides a flexible way to access variables using the `@environment` directive. The most basic form of `@environment:VAR_NAME` produces a string value. Additionally a `:type` suffix can be supplied to coerece the value to a particular type. Variables pointing to a comma separated list can be turned to arrays using an additional `:array` suffix.
|
Especially in a container environment such as [Docker](../installation/docker.md), environment variable access in configuration files can become very handy. ENiGMA½ provides a flexible way to access variables using the `@environment` directive. The most basic form of `@environment:VAR_NAME` produces a string value. Additionally a `:type` suffix can be supplied to coerece the value to a particular type. Variables pointing to a comma separated list can be turned to arrays using an additional `:array` suffix.
|
||||||
|
|
||||||
Below is a table of the various forms:
|
Below is a table of the various forms:
|
||||||
|
|
||||||
|
|
|
@ -43,8 +43,8 @@ Below is a list of various configuration sections. There are many more, but this
|
||||||
* [Archivers](archivers.md): Set up external archive utilities for handling things like ZIP, ARJ, RAR, and so on.
|
* [Archivers](archivers.md): Set up external archive utilities for handling things like ZIP, ARJ, RAR, and so on.
|
||||||
* [Email](email.md): System email support.
|
* [Email](email.md): System email support.
|
||||||
* [Event Scheduler](event-scheduler.md): Set up events as you see fit!
|
* [Event Scheduler](event-scheduler.md): Set up events as you see fit!
|
||||||
* [File Base](/docs/filebase/index.md)
|
* [File Base](../filebase/index.md)
|
||||||
* [File Transfer Protocols](file-transfer-protocols.md): Oldschool file transfer protocols such as X/Y/Z-Modem!
|
* [File Transfer Protocols](file-transfer-protocols.md): Oldschool file transfer protocols such as X/Y/Z-Modem!
|
||||||
* [Message Areas](/docs/messageareas/configuring-a-message-area.md), [Networks](/docs/messageareas/message-networks.md), [NetMail](/docs/messageareas/netmail.md), etc.
|
* [Message Areas](../messageareas/configuring-a-message-area.md), [Networks](../messageareas/message-networks.md), [NetMail](../messageareas/netmail.md), etc.
|
||||||
* ...and a **lot** more! Explore the docs! If you can't find something, please contact us!
|
* ...and a **lot** more! Explore the docs! If you can't find something, please contact us!
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: External Support Binaries
|
||||||
|
---
|
||||||
|
|
||||||
|
## External Support Binaries
|
||||||
|
ENiGMA½ relies on various external binaries in order to perform common tasks such as processing file archives and extracting information from uploads/file imports, some legacy transfer protocols, etc.
|
||||||
|
|
||||||
|
:correct: Before using features such as the [File Base](../filebase/index.md) or [File Transfer Protocols](../configuration/file-transfer-protocols.md) it is highly recommended to install support binaries!
|
||||||
|
|
||||||
|
## Archivers
|
||||||
|
Below is a table of pre-configured archivers. Remember that you can override settings or add new handlers! See [Archivers](archivers.md).
|
||||||
|
|
||||||
|
| Archiver (Key) | File Types | More Info | Debian/Ubuntu (apt/dep) | Red Hat (yum/rpm) | Windows |
|
||||||
|
|----------|---------|-----------|-------------------------|-------------------|---------|
|
||||||
|
| `Arj` | .arj | [Wikipedia](https://en.wikipedia.org/wiki/ARJ) | `arj` | `arj` | [ARJ](http://arj.sourceforge.net/) |
|
||||||
|
| `7Zip` | .7z, .bzip2, .gzip/.gz, etc.<br>:warning: Does not attempt to handle zip files! See `InfoZip`! | http://www.7-zip.org | `p7zip-full` | `p7zip-full` | [7-zip](http://www.7-zip.org/) |
|
||||||
|
| `InfoZip` | .zip | http://infozip.sourceforge.net <br>`zip` and `unzip` will need to be en ENiGMA's PATH | `zip` and `unzip` | `zip` and `unzip` | [InfoZip](http://infozip.sourceforge.net/) |
|
||||||
|
| `Lha` | .lza, .lzh, etc. | [Wikipedia](https://en.wikipedia.org/wiki/LHA_(file_format)) <br> https://fragglet.github.io/lhasa/ | `lhasa` | `lhasa` | [Win32 binaries](https://soulsphere.org/projects/lhasa/win32/) |
|
||||||
|
| `Lzx` | .lzx | [Amiga LZX](https://en.wikipedia.org/wiki/LZX_(algorithm)#Amiga_LZX) | `unlzx` | `unlzx` | [Source](http://xavprods.free.fr/lzx/) |
|
||||||
|
| `Rar` | .rar | [Wikipedia](https://en.wikipedia.org/wiki/RAR_(file_format)) | `unrar` | `unrar`| [RARLAB](https://www.rarlab.com/) |
|
||||||
|
| `TarGz` | .tar.gz, .gzip | [Wikipedia](https://en.wikipedia.org/wiki/Gzip) | `tar` | `tar` | [TAR.EXE](https://ss64.com/nt/tar.html)
|
||||||
|
|
||||||
|
|
||||||
|
:information_source: For more information see `core/config_default.js`
|
||||||
|
|
||||||
|
:information_source: For information on changing configuration or adding more archivers see [Archivers](archivers.md).
|
||||||
|
|
||||||
|
## File Transfer Protocols
|
||||||
|
Handlers for legacy file transfer protocols such as Z-Modem and Y-Modem.
|
||||||
|
|
||||||
|
| Handler (Key) | Protocol | More Info | Debian/Ubuntu (apt/dep) | Red Hat (yum/rpm) | Windows |
|
||||||
|
|----------|---------|-----------|-------------------------|-------------------|---------|
|
||||||
|
| `xmodemSexyz`<br>`ymodemSexyz`<br>`zmodem8kSexyz` | X-Modem, Y-Modem and Z-Modem SEXYZ | [SEXYZ](http://www.synchro.net/docs/sexyz.txt) | [x86_64 Binary](https://l33t.codes/outgoing/sexyz) | [x86_64 Binary](https://l33t.codes/outgoing/sexyz) | [Synchronet FTP](ftp://ftp.synchro.net/) |
|
||||||
|
| `zmodem8kSz` | Z-Modem 8K | [Wikipedia](https://en.wikipedia.org/wiki/ZMODEM) | `lrzsz` | `lrzsz` | Unknown |
|
||||||
|
|
||||||
|
|
||||||
|
## Information Extractors
|
||||||
|
Information extraction utilities can extract information from various file types such as PDF in order to (attempt) to come up with a good default description.
|
||||||
|
|
||||||
|
| Extractor | File Types | More Info | Debian/Ubuntu (apt/dep) | Red Hat (yum/rpm) | Windows |
|
||||||
|
|----------|---------|-----------|-------------------------|-------------------|---------|
|
||||||
|
| ExifTool | .mp3, .pdf, .mp4, .jpg, .gif, .png, many more | [ExifTool](https://www.sno.phy.queensu.ca/~phil/) | `libimage-exiftool-perl` | `perl-Image-ExifTool` | Unknown |
|
||||||
|
| XDMS | Amiga DiskMasher images | | `xdms` | `xdms` | Unknown
|
|
@ -8,8 +8,7 @@ ENiGMA½ currently relies on external executable binaries for "legacy" file tran
|
||||||
File transfer protocols are managed via the `fileTransferProtocols` configuration block of `config.hjson`. Each entry defines an **external** protocol handler that can be used for uploads (recv), downloads (send), or both. Depending on the protocol and handler, batch receiving of files (uploads) may also be available.
|
File transfer protocols are managed via the `fileTransferProtocols` configuration block of `config.hjson`. Each entry defines an **external** protocol handler that can be used for uploads (recv), downloads (send), or both. Depending on the protocol and handler, batch receiving of files (uploads) may also be available.
|
||||||
|
|
||||||
### Predefined File Transfer Protocols
|
### Predefined File Transfer Protocols
|
||||||
The following file transfer protocols are pre-configured in ENiGMA½ as of this writing. System operators may override or extend this list. PRs are welcome for pre-configured additions!
|
Please see [External Binaries](external-binaries.md) for a table of built in / predefined protocol handlers. You will need to have the binaries in ENiGMA's PATH.
|
||||||
|
|
||||||
#### SEXYZ
|
#### SEXYZ
|
||||||
[SEXYZ from Synchronet](http://wiki.synchro.net/util:sexyz) offers a nice X, Y, and ZModem implementation including ZModem-8k & works under *nix and Windows based systems. As of this writing, ENiGMA½ is pre-configured to support ZModem-8k, XModem, and YModem using SEXYZ. An x86_64 Linux binary, and hopefully more in the future, [can be downloaded here](https://l33t.codes/bbs-linux-binaries/).
|
[SEXYZ from Synchronet](http://wiki.synchro.net/util:sexyz) offers a nice X, Y, and ZModem implementation including ZModem-8k & works under *nix and Windows based systems. As of this writing, ENiGMA½ is pre-configured to support ZModem-8k, XModem, and YModem using SEXYZ. An x86_64 Linux binary, and hopefully more in the future, [can be downloaded here](https://l33t.codes/bbs-linux-binaries/).
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ See https://hjson.org/users.html for more more editors & plugins.
|
||||||
### Hot-Reload A.K.A. Live Editing
|
### Hot-Reload A.K.A. Live Editing
|
||||||
ENiGMA½'s configuration, menu, and theme files can edited while your BBS is running. When a file is saved, it is hot-reloaded into the running system. If users are currently connected and you change a menu for example, the next reload of that menu will show the changes.
|
ENiGMA½'s configuration, menu, and theme files can edited while your BBS is running. When a file is saved, it is hot-reloaded into the running system. If users are currently connected and you change a menu for example, the next reload of that menu will show the changes.
|
||||||
|
|
||||||
:information_source: See also [Configuration Files](/docs/configuration/config-files.md)
|
:information_source: See also [Configuration Files](../configuration/config-files.md)
|
||||||
|
|
||||||
### CaSe SeNsiTiVE
|
### CaSe SeNsiTiVE
|
||||||
Configuration keys are **case sensitive**. That means if a configuration key is `boardName` for example, `boardname`, or `BOARDNAME` **will not work**.
|
Configuration keys are **case sensitive**. That means if a configuration key is `boardName` for example, `boardname`, or `BOARDNAME` **will not work**.
|
||||||
|
|
|
@ -20,7 +20,7 @@ showSomeArt: {
|
||||||
config: { pause: true }
|
config: { pause: true }
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
As you can see a menu can be very simple.
|
As you can see a menu can be very simple.
|
||||||
|
|
||||||
:information_source: Remember that the top level menu may include additional files using the `includes` directive. See [Configuration Files](config-files.md) for more information on this.
|
:information_source: Remember that the top level menu may include additional files using the `includes` directive. See [Configuration Files](config-files.md) for more information on this.
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Below is a table of **common** menu entry members. These members apply to most e
|
||||||
| Item | Description |
|
| Item | Description |
|
||||||
|--------|--------------|
|
|--------|--------------|
|
||||||
| `desc` | A friendly description that can be found in places such as "Who's Online" or wherever the `%MD` MCI code is used. |
|
| `desc` | A friendly description that can be found in places such as "Who's Online" or wherever the `%MD` MCI code is used. |
|
||||||
| `art` | An art file *spec*. See [General Art Information](/docs/art/general.md). |
|
| `art` | An art file *spec*. See [General Art Information](../art/general.md). |
|
||||||
| `next` | Specifies the next menu entry to go to next. Can be explicit or an array of possibilities dependent on ACS. See **Flow Control** in the **ACS Checks** section below. If `next` is not supplied, the next menu is this menus parent. Note that special built in methods such as `@systemMethod:logoff` can also be utilized here. |
|
| `next` | Specifies the next menu entry to go to next. Can be explicit or an array of possibilities dependent on ACS. See **Flow Control** in the **ACS Checks** section below. If `next` is not supplied, the next menu is this menus parent. Note that special built in methods such as `@systemMethod:logoff` can also be utilized here. |
|
||||||
| `prompt` | Specifies a prompt, by name, to use along with this menu. Prompts are configured in the `prompts` section. See **Prompts** for more information. |
|
| `prompt` | Specifies a prompt, by name, to use along with this menu. Prompts are configured in the `prompts` section. See **Prompts** for more information. |
|
||||||
| `submit` | Defines a submit handler when using `prompt`.
|
| `submit` | Defines a submit handler when using `prompt`.
|
||||||
|
@ -41,7 +41,7 @@ Below is a table of **common** menu entry members. These members apply to most e
|
||||||
### Menu Modules
|
### Menu Modules
|
||||||
A given menu entry is backed by a *menu module*. That is, the code behind it. Menus are considered "standard" if the `module` member is not specified (and therefore backed by `core/standard_menu.js`).
|
A given menu entry is backed by a *menu module*. That is, the code behind it. Menus are considered "standard" if the `module` member is not specified (and therefore backed by `core/standard_menu.js`).
|
||||||
|
|
||||||
See [Menu Modules](/docs/modding/menu-modules.md) for more information.
|
See [Menu Modules](../modding/menu-modules.md) for more information.
|
||||||
|
|
||||||
### Config Block
|
### Config Block
|
||||||
The `config` block for a menu entry can contain common members as well as a per-module (when `module` is used) settings.
|
The `config` block for a menu entry can contain common members as well as a per-module (when `module` is used) settings.
|
||||||
|
@ -51,8 +51,8 @@ The `config` block for a menu entry can contain common members as well as a per-
|
||||||
| `cls` | If `true` the screen will be cleared before showing this menu. |
|
| `cls` | If `true` the screen will be cleared before showing this menu. |
|
||||||
| `pause` | If `true` a pause will occur after showing this menu. Useful for simple menus such as displaying art or status screens. |
|
| `pause` | If `true` a pause will occur after showing this menu. Useful for simple menus such as displaying art or status screens. |
|
||||||
| `nextTimeout` | Sets the number of **milliseconds** before the system will automatically advanced to the `next` menu. |
|
| `nextTimeout` | Sets the number of **milliseconds** before the system will automatically advanced to the `next` menu. |
|
||||||
| `baudRate` | See baud rate information in [General Art Information](/docs/art/general.md). |
|
| `baudRate` | See baud rate information in [General Art Information](../art/general.md). |
|
||||||
| `font` | Sets a SyncTERM style font to use when displaying this menus `art`. See font listing in [General Art Information](/docs/art/general.md). |
|
| `font` | Sets a SyncTERM style font to use when displaying this menus `art`. See font listing in [General Art Information](../art/general.md). |
|
||||||
| `menuFlags` | An array of menu flag(s) controlling menu behavior. See **Menu Flags** below.
|
| `menuFlags` | An array of menu flag(s) controlling menu behavior. See **Menu Flags** below.
|
||||||
|
|
||||||
#### Menu Flags
|
#### Menu Flags
|
||||||
|
@ -70,7 +70,7 @@ ENiGMA½ uses a concept of *forms* in menus. A form is a collection of associate
|
||||||
|
|
||||||
Menus may also support more than one layout type by using a *MCI key*. A MCI key is a alpha-numerically sorted key made from 1:n MCI codes. This lets the system choose the appropriate set of form(s) based on theme or random art. An example of this may be a matrix menu: Perhaps one style of your matrix uses a vertical light bar (`VM` key) while another uses a horizontal (`HM` key). The system can discover the correct form to use by matching MCI codes found in the art to that of the available forms defined in `menu.hjson`.
|
Menus may also support more than one layout type by using a *MCI key*. A MCI key is a alpha-numerically sorted key made from 1:n MCI codes. This lets the system choose the appropriate set of form(s) based on theme or random art. An example of this may be a matrix menu: Perhaps one style of your matrix uses a vertical light bar (`VM` key) while another uses a horizontal (`HM` key). The system can discover the correct form to use by matching MCI codes found in the art to that of the available forms defined in `menu.hjson`.
|
||||||
|
|
||||||
For more information on views and associated MCI codes, see [MCI Codes](/docs/art/mci.md).
|
For more information on views and associated MCI codes, see [MCI Codes](../art/mci.md).
|
||||||
|
|
||||||
## Submit Handlers
|
## Submit Handlers
|
||||||
When a form is submitted, it's data is matched against a *submit handler*. When a match is found, it's *action* is performed.
|
When a form is submitted, it's data is matched against a *submit handler*. When a match is found, it's *action* is performed.
|
||||||
|
@ -135,7 +135,7 @@ telnetConnected: {
|
||||||
```
|
```
|
||||||
|
|
||||||
The above entry `telnetConnected` is set as the Telnet server's first menu entry (set by `firstMenu` in the Telnet server's config). The entry sets up a few things:
|
The above entry `telnetConnected` is set as the Telnet server's first menu entry (set by `firstMenu` in the Telnet server's config). The entry sets up a few things:
|
||||||
* A `art` spec of `CONNECT`. (See [General Art Information](/docs/art/general.md)).
|
* A `art` spec of `CONNECT`. (See [General Art Information](../art/general.md)).
|
||||||
* A `next` entry up the next menu, by name, in the stack (`matrix`) that we'll go to after `telnetConnected`.
|
* A `next` entry up the next menu, by name, in the stack (`matrix`) that we'll go to after `telnetConnected`.
|
||||||
* An `config` block containing a single `nextTimeout` field telling the system to proceed to the `next` (`matrix`) entry automatically after 1500ms.
|
* An `config` block containing a single `nextTimeout` field telling the system to proceed to the `next` (`matrix`) entry automatically after 1500ms.
|
||||||
|
|
||||||
|
|
|
@ -11,9 +11,9 @@ Unlike in the golden era of BBSing, modern Internet-connected systems are prone
|
||||||
|
|
||||||
## Two-Factor Authentication via One-Time Password
|
## Two-Factor Authentication via One-Time Password
|
||||||
Enabling Two-Factor Authentication via One-Time-Password (2FA/OTP) on an account adds an extra layer of security ("_something a user has_") in addition to their password ("_something a user knows_"). Providing 2FA/OTP to your users has some prerequisites:
|
Enabling Two-Factor Authentication via One-Time-Password (2FA/OTP) on an account adds an extra layer of security ("_something a user has_") in addition to their password ("_something a user knows_"). Providing 2FA/OTP to your users has some prerequisites:
|
||||||
* [A configured email gateway](/docs/configuration/email.md) such that the system can send out emails.
|
* [A configured email gateway](../configuration/email.md) such that the system can send out emails.
|
||||||
* One or more secure servers enabled such as [SSH](/docs/servers/ssh.md) or secure [WebSockets](/docs/servers/websocket.md) (that is, WebSockets over a secure connection such as TLS).
|
* One or more secure servers enabled such as [SSH](../servers/ssh.md) or secure [WebSockets](../servers/websocket.md) (that is, WebSockets over a secure connection such as TLS).
|
||||||
* The [web server](/docs/servers/web-server.md) enabled and exposed over TLS (HTTPS).
|
* The [web server](../servers/web-server.md) enabled and exposed over TLS (HTTPS).
|
||||||
|
|
||||||
:information_source: For WebSockets and the web server, ENiGMA½ _may_ listen on insecure channels if behind a secure web proxy.
|
:information_source: For WebSockets and the web server, ENiGMA½ _may_ listen on insecure channels if behind a secure web proxy.
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Due to the nature of 2FA/OTP, even if enabled on your system, users must opt-in
|
||||||
|
|
||||||
:warning: Serving 2FA/OTP registration links over insecure (HTTP) can expose secrets intended for the user and is **highly** discouraged!
|
:warning: Serving 2FA/OTP registration links over insecure (HTTP) can expose secrets intended for the user and is **highly** discouraged!
|
||||||
|
|
||||||
:memo: +ops can also manually enable or disable 2FA/OTP for a user using [oputil](/docs/admin/oputil.md), but this is generally discouraged.
|
:memo: +ops can also manually enable or disable 2FA/OTP for a user using [oputil](../admin/oputil.md), but this is generally discouraged.
|
||||||
|
|
||||||
#### Recovery
|
#### Recovery
|
||||||
In the situation that a user loses their 2FA/OTP device (such as a lost phone with Google Auth), there are some options:
|
In the situation that a user loses their 2FA/OTP device (such as a lost phone with Google Auth), there are some options:
|
||||||
|
@ -36,11 +36,11 @@ In the situation that a user loses their 2FA/OTP device (such as a lost phone wi
|
||||||
:warning: There is no way for a user to disable 2FA/OTP without first fully logging in! This is by design as a security measure.
|
:warning: There is no way for a user to disable 2FA/OTP without first fully logging in! This is by design as a security measure.
|
||||||
|
|
||||||
### ACS Checks
|
### ACS Checks
|
||||||
Various places throughout the system that implement [ACS](/docs/configuration/acs.md) can make 2FA specific checks:
|
Various places throughout the system that implement [ACS](../configuration/acs.md) can make 2FA specific checks:
|
||||||
* `AR#`: Current users **required** authentication factor. `AR2` for example means 2FA/OTP is required for this user.
|
* `AR#`: Current users **required** authentication factor. `AR2` for example means 2FA/OTP is required for this user.
|
||||||
* `AF#`: Current users **active** authentication factor. `AF2` means the user is authenticated with some sort of 2FA (such as One-Time-Password).
|
* `AF#`: Current users **active** authentication factor. `AF2` means the user is authenticated with some sort of 2FA (such as One-Time-Password).
|
||||||
|
|
||||||
See [ACS](/docs/configuration/acs.md) for more information.
|
See [ACS](../configuration/acs.md) for more information.
|
||||||
|
|
||||||
#### Example
|
#### Example
|
||||||
The following example illustrates using an `AR` ACS check to require applicable users to go through an additional 2FA/OTP process during login:
|
The following example illustrates using an `AR` ACS check to require applicable users to go through an additional 2FA/OTP process during login:
|
||||||
|
|
|
@ -3,7 +3,7 @@ layout: page
|
||||||
title: ACS
|
title: ACS
|
||||||
---
|
---
|
||||||
## File Base ACS
|
## File Base ACS
|
||||||
[ACS Codes](/docs/configuration/acs.md) may be used to control access to File Base areas by specifying an `acs` string in a file area's definition. If no `acs` is supplied in a file area definition, the following defaults apply to an area:
|
[ACS Codes](../configuration/acs.md) may be used to control access to File Base areas by specifying an `acs` string in a file area's definition. If no `acs` is supplied in a file area definition, the following defaults apply to an area:
|
||||||
* `read` : `GM[users]`: List/view the area and it's contents.
|
* `read` : `GM[users]`: List/view the area and it's contents.
|
||||||
* `write` : `GM[sysops]`: Upload.
|
* `write` : `GM[sysops]`: Upload.
|
||||||
* `download` : `GM[users]`: Download.
|
* `download` : `GM[users]`: Download.
|
||||||
|
@ -28,4 +28,4 @@ areas: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
[Access Condition System (ACS)](/docs/configuration/acs.md)
|
[Access Condition System (ACS)](../configuration/acs.md)
|
||||||
|
|
|
@ -84,16 +84,16 @@ fileBase: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## Importing Areas
|
## Importing Areas
|
||||||
Areas can also be imported using [oputil](/docs/admin/oputil.md) using proper FileGate "RAID" aka `FILEBONE.NA` style files. After importing areas, you may wish to tweak configuration such as better `desc` fields, ACS, or sorting.
|
Areas can also be imported using [oputil](../admin/oputil.md) using proper FileGate "RAID" aka `FILEBONE.NA` style files. After importing areas, you may wish to tweak configuration such as better `desc` fields, ACS, or sorting.
|
||||||
|
|
||||||
## Importing Files (Scan For New Files)
|
## Importing Files (Scan For New Files)
|
||||||
A common task is to *import* existing files to area(s). Consider a collection of retro BBS files in the area "Retro PC" (tag: `retro_pc` above) under the storage tag of `retro_pc_bbs`. You might choose to scan for new files in this area (and thus import new entries) as follows with [oputil](/docs/admin/oputil.md)'s `fb scan`:
|
A common task is to *import* existing files to area(s). Consider a collection of retro BBS files in the area "Retro PC" (tag: `retro_pc` above) under the storage tag of `retro_pc_bbs`. You might choose to scan for new files in this area (and thus import new entries) as follows with [oputil](../admin/oputil.md)'s `fb scan`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./oputil.js fb scan --quick --tags retro,bbs,pc retro_pc@retro_pc_bbs
|
./oputil.js fb scan --quick --tags retro,bbs,pc retro_pc@retro_pc_bbs
|
||||||
```
|
```
|
||||||
|
|
||||||
Here we have asked [oputil](/docs/admin/oputil.md) to scan the file base area by it's tag `retro_pc` and only include the storage tag of `retro_pc_bbs`. Note that the storage tag could be omitted, and if so, all of `retro_pc` would be scanned. We have also indicated to #hashtag new entries with the tags "retro", "bbs", and "pc".
|
Here we have asked [oputil](../admin/oputil.md) to scan the file base area by it's tag `retro_pc` and only include the storage tag of `retro_pc_bbs`. Note that the storage tag could be omitted, and if so, all of `retro_pc` would be scanned. We have also indicated to #hashtag new entries with the tags "retro", "bbs", and "pc".
|
||||||
|
|
||||||
Please see [oputil](/docs/admin/oputil.md) for more information.
|
Please see [oputil](../admin/oputil.md) for more information.
|
||||||
|
|
||||||
|
|
|
@ -98,4 +98,4 @@ ticAreas: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
[Message Networks](/docs/messageareas/message-networks.md)
|
[Message Networks](../messageareas/message-networks.md)
|
||||||
|
|
|
@ -16,7 +16,7 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
|
||||||
* [CP437](http://www.ascii-codes.com/) and UTF-8 output
|
* [CP437](http://www.ascii-codes.com/) and UTF-8 output
|
||||||
* [SyncTERM](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior.
|
* [SyncTERM](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior.
|
||||||
* Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support.
|
* Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support.
|
||||||
* Renegade style [pipe color codes](/docs/configuration/colour-codes.md).
|
* Renegade style [pipe color codes](./configuration/colour-codes.md).
|
||||||
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
* [SQLite](http://sqlite.org/) storage of users, message areas, etc.
|
||||||
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
|
||||||
* Support for 2-Factor Authentication with One-Time-Passwords
|
* Support for 2-Factor Authentication with One-Time-Passwords
|
||||||
|
|
|
@ -9,10 +9,12 @@ Under most Linux/UNIX like environments (Linux, BSD, OS X, ...) new users can s
|
||||||
curl -o- https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh | bash
|
curl -o- https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
:heavy_check_mark: You may wish to review the [installation script](https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh)
|
:eyes: You may wish to review the [installation script](https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh)
|
||||||
on GitHub before running it!
|
on GitHub before running it!
|
||||||
|
|
||||||
The script will install `nvm`, Node.js and grab the latest ENiGMA BBS from GitHub. It will also guide you through creating a basic configuration file, and recommend some packages to install.
|
The script will install `nvm`, Node.js and grab the latest ENiGMA BBS from GitHub. It will also guide you through creating a basic configuration file, and recommend some packages to install.
|
||||||
|
|
||||||
After installing, see [Updating](/docs/admin/updating.md).
|
:information_source: After installing:
|
||||||
|
* Read [External Binaries](../configuration/external-binaries.md)
|
||||||
|
* Read [Updating](../admin/updating.md)
|
||||||
|
|
||||||
|
|
|
@ -15,4 +15,4 @@ There are multiple ways of installing ENiGMA BBS, depending on your level of exp
|
||||||
:scroll: Check out [this awesome video on installation and basic configuration](https://youtu.be/WnN-ucVi3ZU) from Al's Geek Lab!
|
:scroll: Check out [this awesome video on installation and basic configuration](https://youtu.be/WnN-ucVi3ZU) from Al's Geek Lab!
|
||||||
|
|
||||||
## Keeping Up To Date
|
## Keeping Up To Date
|
||||||
After installing, you'll want to [keep your system updated](/docs/admin/updating.md).
|
After installing, you'll want to [keep your system updated](../admin/updating.md).
|
|
@ -50,23 +50,14 @@ npm install # yarn also works
|
||||||
```
|
```
|
||||||
|
|
||||||
## Other Recommended Packages
|
## Other Recommended Packages
|
||||||
ENiGMA BBS makes use of a few packages for archive and legacy protocol support. They're not pre-requisites for running ENiGMA, but without them you'll miss certain functionality. Once installed, they should be made available on your system path.
|
ENiGMA BBS makes use of a few packages for archive and legacy protocol support. They're not pre-requisites for running ENiGMA, but without them you'll miss certain functionality. Once installed, they should be made available on your systems `PATH`.
|
||||||
|
|
||||||
| Package | Description | Debian/Ubuntu Package (APT/DEP) | Red Hat Package (YUM/RPM) | Windows Package |
|
:information_source: Please see [External Binaries](../configuration/external-binaries.md) for information on setting these up.
|
||||||
|------------|-----------------------------------|--------------------------------------------|---------------------------------------------------|------------------------------------------------------------------|
|
|
||||||
| arj | Unpacking arj archives | `arj` | n/a, binaries [here](http://arj.sourceforge.net/) | [ARJ](http://arj.sourceforge.net/) |
|
|
||||||
| 7zip | Unpacking zip, rar, archives | `p7zip-full` | `p7zip-full` | [7-zip](http://www.7-zip.org/) |
|
|
||||||
| lha | Unpacking lha archives | `lhasa` | n/a, source [here](https://web.archive.org/web/20200301124852/http://www2m.biglobe.ne.jp/~dolphin/lha/lha.htm) | Unknown |
|
|
||||||
| Rar | Unpacking rar archives | `unrar` | n/a, binaries [here](https://www.rarlab.com/download.htm) | Unknown |
|
|
||||||
| lrzsz | sz/rz: X/Y/Z protocol support | `lrzsz` | `lrzsz` | Unknown |
|
|
||||||
| sexyz | SexyZ protocol support | [sexyz](https://l33t.codes/outgoing/sexyz) | [sexyz](https://l33t.codes/outgoing/sexyz) | Available with [Synchronet](http://wiki.synchro.net/install:win) |
|
|
||||||
| exiftool | [ExifTool](https://www.sno.phy.queensu.ca/~phil/exiftool/) | libimage-exiftool-perl | perl-Image-ExifTool | Unknown
|
|
||||||
| xdms | Unpack/view Amiga DMS | [xdms](http://manpages.ubuntu.com/manpages/trusty/man1/xdms.1.html) | xdms | Unknown
|
|
||||||
|
|
||||||
:information_source: Please see also [Archivers](/docs/configuration/archivers.md) and [File Transfer Protocols](/docs/configuration/file-transfer-protocols.md) for additional recommended binaries and configuration.
|
:information_source: Additional information in [Archivers](../configuration/archivers.md) and [File Transfer Protocols](../configuration/file-transfer-protocols.md)
|
||||||
|
|
||||||
## Config Files
|
## Config Files
|
||||||
You'll need a basic configuration to get started. The main system configuration is handled via `config/config.hjson`. This is an [HJSON](http://hjson.org/) file (compiliant JSON is also OK). See [Configuration](../configuration/) for more information.
|
You'll need a basic configuration to get started. The main system configuration is handled via `config/config.hjson`. This is an [HJSON](http://hjson.org/) file (compliant JSON is also OK). See [Configuration](../configuration/) for more information.
|
||||||
|
|
||||||
Use `oputil.js` to generate your **initial** configuration:
|
Use `oputil.js` to generate your **initial** configuration:
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ title: BSO Import / Export
|
||||||
## BSO Import / Export
|
## BSO Import / Export
|
||||||
The scanner/tosser module `ftn_bso` provides **B**inkley **S**tyle **O**utbound (BSO) import/toss and 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 and scan/export of messages EchoMail and NetMail messages. Configuration is supplied in `config.hjson` under `scannerTossers.ftn_bso`.
|
||||||
|
|
||||||
:information_source: ENiGMA½'s `ftn_bso` module is not a mailer and **makes no attempts to perform packet transport**! An external [mailer](http://www.filegate.net/bbsmailers.htm) such as [Binkd](https://github.com/pgul/binkd) is required for this task.
|
:information_source: ENiGMA½'s `ftn_bso` module is not a mailer and **makes no attempts to perform packet transport**! An external [mailer](http://www.filegate.net/bbsmailers.htm) such as [Binkd](https://github.com/pgul/binkd) is required for this task!
|
||||||
|
|
||||||
### Configuration
|
### Configuration
|
||||||
Let's look at some of the basic configuration:
|
Let's look at some of the basic configuration:
|
||||||
|
@ -27,7 +27,7 @@ A node entry starts with a [FTN address](http://ftsc.org/docs/old/fsp-1028.001)
|
||||||
|
|
||||||
| Config Item | Required | Description |
|
| Config Item | Required | Description |
|
||||||
|------------------|----------|---------------------------------------------------------------------------------|
|
|------------------|----------|---------------------------------------------------------------------------------|
|
||||||
| `packetType` | :-1: | `2`, `2.2`, or `2+`. Defaults to `2+` for modern mailer compatiability. |
|
| `packetType` | :-1: | `2`, `2.2`, or `2+`. Defaults to `2+` for modern mailer compatibility. |
|
||||||
| `packetPassword` | :-1: | Optional password for the packet |
|
| `packetPassword` | :-1: | Optional password for the packet |
|
||||||
| `encoding` | :-1: | Encoding to use for message bodies; Defaults to `utf-8`. |
|
| `encoding` | :-1: | Encoding to use for message bodies; Defaults to `utf-8`. |
|
||||||
| `archiveType` | :-1: | Specifies the archive type (by extension or MIME type) for ArcMail bundles. This should be `zip` (or `application/zip`) for most setups. Other valid examples include `arc`, `arj`, `lhz`, `pak`, `sqz`, or `zoo`. See [Archivers](../configuration/archivers.md) for more information. |
|
| `archiveType` | :-1: | Specifies the archive type (by extension or MIME type) for ArcMail bundles. This should be `zip` (or `application/zip`) for most setups. Other valid examples include `arc`, `arj`, `lhz`, `pak`, `sqz`, or `zoo`. See [Archivers](../configuration/archivers.md) for more information. |
|
||||||
|
@ -134,7 +134,68 @@ scannerTossers: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## Binkd
|
## Binkd
|
||||||
Since Binkd is a very common mailer, a few tips on integrating it with ENiGMA½:
|
Since Binkd is a very common mailer, a few tips on integrating it with ENiGMA½.
|
||||||
|
|
||||||
|
### Example Binkd Configuration
|
||||||
|
Below is an **example** Binkd configuration file that may help serve as a reference.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Number @ end is the root zone
|
||||||
|
# Note that fsxNet is our *default* FTN so we use "outbound" here!
|
||||||
|
domain fsxnet /home/enigma/enigma-bbs/mail/ftn_out/outbound 21
|
||||||
|
domain araknet /home/enigma/enigma-bbs/mail/ftn_out/araknet 10
|
||||||
|
|
||||||
|
# Our assigned addresses
|
||||||
|
address 21:1/1234@fsxnet
|
||||||
|
address 10:101/1234@araknet
|
||||||
|
|
||||||
|
# Info about our board/op
|
||||||
|
sysname "My BBS"
|
||||||
|
location "Somewhere Out There"
|
||||||
|
sysop "SysOp"
|
||||||
|
|
||||||
|
nodeinfo 115200,TCP,BINKP
|
||||||
|
try 10
|
||||||
|
hold 600
|
||||||
|
send-if-pwd
|
||||||
|
|
||||||
|
log /var/log/binkd/binkd.log
|
||||||
|
loglevel 4
|
||||||
|
conlog 4
|
||||||
|
|
||||||
|
percents
|
||||||
|
printq
|
||||||
|
backresolv
|
||||||
|
|
||||||
|
inbound /home/enigma/enigma-bbs/mail/ftn_in
|
||||||
|
temp-inbound /home/enigma/enigma-bbs/mail/ftn_in_temp
|
||||||
|
|
||||||
|
minfree 2048
|
||||||
|
minfree-nonsecure 2048
|
||||||
|
|
||||||
|
kill-dup-partial-files
|
||||||
|
kill-old-partial-files 86400
|
||||||
|
|
||||||
|
prescan
|
||||||
|
|
||||||
|
# fsxNet - Agency HUB
|
||||||
|
node 21:1/100@fsxnet -md agency.bbs.nz:24556 SOMEPASS c
|
||||||
|
|
||||||
|
# ArakNet
|
||||||
|
node 10:101/0@araknet -md whq.araknet.xyz:24556 SOMEPASS c
|
||||||
|
|
||||||
|
# our listening port (default=24554)
|
||||||
|
iport 54554
|
||||||
|
|
||||||
|
pid-file /var/run/binkd/binkd.pid
|
||||||
|
|
||||||
|
# touch a watch file when files are received to kick of toss
|
||||||
|
# ENiGMA can monitor this (see @watch information above)
|
||||||
|
flag /home/enigma/enigma-bbs/mail/ftn_in/toss!.now *.su? *.mo? *.tu? *.we? *.th? *.fr? *.sa? *.pkt *.tic
|
||||||
|
|
||||||
|
# nuke old .bsy/.csy files after 24 hours
|
||||||
|
kill-old-bsy 43200
|
||||||
|
```
|
||||||
|
|
||||||
### Scheduling Polls
|
### Scheduling Polls
|
||||||
Binkd does not have it's own scheduler. Instead, you'll need to set up an Event Scheduler entry or perhaps a cron job:
|
Binkd does not have it's own scheduler. Instead, you'll need to set up an Event Scheduler entry or perhaps a cron job:
|
||||||
|
@ -163,4 +224,5 @@ eventScheduler: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## Additional Resources
|
## Additional Resources
|
||||||
[Blog entry on setting up ENiGMA + Binkd on CentOS7](https://l33t.codes/enigma-12-binkd-on-centos-7/). Note that this references an **older version**, so be wary of the `config.hjson` references!
|
* [Blog entry on setting up ENiGMA + Binkd on CentOS7](https://l33t.codes/enigma-12-binkd-on-centos-7/). Note that this references an **older version**, so be wary of the `config.hjson` references!
|
||||||
|
* [Setting up FTN-style message networks with ENiGMA½ BBS](https://medium.com/@alpha_11845/setting-up-ftn-style-message-networks-with-enigma%C2%BD-bbs-709b22a1ae0d) by Alpha.
|
|
@ -19,10 +19,10 @@ Each conference is represented by a entry under `messageConferences`. Each entri
|
||||||
| `sort` | :-1: | Set to a number to override the default alpha-numeric sort order based on the `name` field. |
|
| `sort` | :-1: | Set to a number to override the default alpha-numeric sort order based on the `name` field. |
|
||||||
| `default` | :-1: | Specify `true` to make this the default conference (e.g. assigned to new users) |
|
| `default` | :-1: | Specify `true` to make this the default conference (e.g. assigned to new users) |
|
||||||
| `areas` | :+1: | Container of 1:n areas described below |
|
| `areas` | :+1: | Container of 1:n areas described below |
|
||||||
| `acs` | :-1: | A standard [ACS](/docs/configuration/acs.md) block. See **ACS** below. |
|
| `acs` | :-1: | A standard [ACS](../configuration/acs.md) block. See **ACS** below. |
|
||||||
|
|
||||||
### ACS
|
### ACS
|
||||||
An optional standard [ACS](/docs/configuration/acs.md) block can be supplied with the following rules:
|
An optional standard [ACS](../configuration/acs.md) block can be supplied with the following rules:
|
||||||
* `read`: ACS required to read (see) this conference. Defaults to `GM[users]`.
|
* `read`: ACS required to read (see) this conference. Defaults to `GM[users]`.
|
||||||
* `write`: ACS required to write (post) to this conference. Defaults to `GM[users]`.
|
* `write`: ACS required to write (post) to this conference. Defaults to `GM[users]`.
|
||||||
|
|
||||||
|
@ -53,12 +53,12 @@ Message Areas are topic specific containers for messages that live within a part
|
||||||
| `desc` | :+1: | Friendly area description. |
|
| `desc` | :+1: | Friendly area description. |
|
||||||
| `sort` | :-1: | Set to a number to override the default alpha-numeric sort order based on the `name` field. |
|
| `sort` | :-1: | Set to a number to override the default alpha-numeric sort order based on the `name` field. |
|
||||||
| `default` | :-1: | Specify `true` to make this the default area (e.g. assigned to new users) |
|
| `default` | :-1: | Specify `true` to make this the default area (e.g. assigned to new users) |
|
||||||
| `acs` | :-1: | A standard [ACS](/docs/configuration/acs.md) block. See **ACS** below. |
|
| `acs` | :-1: | A standard [ACS](../configuration/acs.md) block. See **ACS** below. |
|
||||||
| `autoSignatures` | :-1: | Set to `false` to disable auto-signatures in this area. |
|
| `autoSignatures` | :-1: | Set to `false` to disable auto-signatures in this area. |
|
||||||
| `realNames` | :-1: | Set to `true` to use real names in this area. |
|
| `realNames` | :-1: | Set to `true` to use real names in this area. |
|
||||||
|
|
||||||
### ACS
|
### ACS
|
||||||
An optional standard [ACS](/docs/configuration/acs.md) block can be supplied with the following rules:
|
An optional standard [ACS](../configuration/acs.md) block can be supplied with the following rules:
|
||||||
* `read`: ACS required to read (see) this area. Defaults to `GM[users]`.
|
* `read`: ACS required to read (see) this area. Defaults to `GM[users]`.
|
||||||
* `write`: ACS required to write (post) to this area. Defaults to `GM[users]`.
|
* `write`: ACS required to write (post) to this area. Defaults to `GM[users]`.
|
||||||
|
|
||||||
|
@ -85,4 +85,4 @@ messageConferences: {
|
||||||
```
|
```
|
||||||
|
|
||||||
## Importing
|
## Importing
|
||||||
FidoNet style `.na` files as well as legacy `AREAS.BBS` files in common formats can be imported using `oputil.js mb import-areas`. See [The oputil CLI](/docs/admin/oputil.md) for more information and usage.
|
FidoNet style `.na` files as well as legacy `AREAS.BBS` files in common formats can be imported using `oputil.js mb import-areas`. See [The oputil CLI](../admin/oputil.md) for more information and usage.
|
||||||
|
|
|
@ -70,7 +70,7 @@ Example:
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
:bulb: You can import `AREAS.BBS` or FTN style `.NA` files using [oputil](/docs/admin/oputil.md)!
|
:bulb: You can import `AREAS.BBS` or FTN style `.NA` files using [oputil](../admin/oputil.md)!
|
||||||
|
|
||||||
#### A More Complete Example
|
#### A More Complete Example
|
||||||
Below is a more complete *example* illustrating some of the concepts above:
|
Below is a more complete *example* illustrating some of the concepts above:
|
||||||
|
|
|
@ -34,7 +34,7 @@ Example:
|
||||||
```
|
```
|
||||||
|
|
||||||
### oputil
|
### oputil
|
||||||
The `oputil.js` utility can export packet files, dump the messages of a packet to stdout, etc. See [the oputil documentation](/docs/admin/oputil.md) for more information.
|
The `oputil.js` utility can export packet files, dump the messages of a packet to stdout, etc. See [the oputil documentation](../admin/oputil.md) for more information.
|
||||||
|
|
||||||
### Offline Readers
|
### Offline Readers
|
||||||
A few of the offline readers that have been tested with QWK packet files produced by ENiGMA½:
|
A few of the offline readers that have been tested with QWK packet files produced by ENiGMA½:
|
||||||
|
|
|
@ -3,7 +3,7 @@ layout: page
|
||||||
title: User Interruptions
|
title: User Interruptions
|
||||||
---
|
---
|
||||||
## User Interruptions
|
## User Interruptions
|
||||||
ENiGMA½ provides functionality to "interrupt" a user for various purposes such as a [node-to-node message](/docs/modding/node-msg.md). User interruptions can be queued and displayed at the next opportune time such as when switching to a new menu, or realtime if appropriate.
|
ENiGMA½ provides functionality to "interrupt" a user for various purposes such as a [node-to-node message](../modding/node-msg.md). User interruptions can be queued and displayed at the next opportune time such as when switching to a new menu, or realtime if appropriate.
|
||||||
|
|
||||||
## Standard Menu Behavior
|
## Standard Menu Behavior
|
||||||
Standard menus control interruption by the `interrupt` config block option, which may be set to one of the following values:
|
Standard menus control interruption by the `interrupt` config block option, which may be set to one of the following values:
|
||||||
|
|
|
@ -3,7 +3,7 @@ layout: page
|
||||||
title: Node to Node Messaging
|
title: Node to Node Messaging
|
||||||
---
|
---
|
||||||
## The Node to Node Messaging Module
|
## The Node to Node Messaging Module
|
||||||
The node to node messaging (`node_msg`) module allows users to send messages to one or more users on different nodes. Messages delivered to nodes follow standard [User Interruption](/docs/misc/user-interrupt.md) rules.
|
The node to node messaging (`node_msg`) module allows users to send messages to one or more users on different nodes. Messages delivered to nodes follow standard [User Interruption](../misc/user-interrupt.md) rules.
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
### Config Block
|
### Config Block
|
||||||
|
|
|
@ -10,7 +10,7 @@ The `telnet_bridge` module allows "bridged" Telnet connections from your board t
|
||||||
Available `config` entries:
|
Available `config` entries:
|
||||||
* `host`: Hostname or IP address to connect to.
|
* `host`: Hostname or IP address to connect to.
|
||||||
* `port`: Port to connect to. Defaults to the standard Telnet port of `23`.
|
* `port`: Port to connect to. Defaults to the standard Telnet port of `23`.
|
||||||
* `font`: A SyncTERM style font. Useful for example if you would like to connect form a "DOS" style BBS to an Amiga. See [the general art documentation on SyncTERM Style Fonts](/docs/art/general.md).
|
* `font`: A SyncTERM style font. Useful for example if you would like to connect form a "DOS" style BBS to an Amiga. See [the general art documentation on SyncTERM Style Fonts](../art/general.md).
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
Below is an example `menu.hjson` entry that would connect to [Xibalba](https://xibalba.l33t.codes):
|
Below is an example `menu.hjson` entry that would connect to [Xibalba](https://xibalba.l33t.codes):
|
||||||
|
|
|
@ -57,4 +57,4 @@ Generally `mciMap` entries will point to a Vertical List View Menu (`%VM1`, `%VM
|
||||||
* `affils` or `affiliation`: Users affiliations.
|
* `affils` or `affiliation`: Users affiliations.
|
||||||
* `position`: Rank position (numeric).
|
* `position`: Rank position (numeric).
|
||||||
|
|
||||||
Remember that string format rules apply, so for example, if displaying top uploaded bytes (`ul_file_bytes`), a `itemFormat` may be `{userName} - {value!sizeWithAbbr}` yielding something like "TopDude - 4 GB". See [MCI](/docs/art/mci.md) for additional information.
|
Remember that string format rules apply, so for example, if displaying top uploaded bytes (`ul_file_bytes`), a `itemFormat` may be `{userName} - {value!sizeWithAbbr}` yielding something like "TopDude - 4 GB". See [MCI](../art/mci.md) for additional information.
|
||||||
|
|
|
@ -3,7 +3,7 @@ layout: page
|
||||||
title: TopX
|
title: TopX
|
||||||
---
|
---
|
||||||
## The 2FA/OTP Config Module
|
## The 2FA/OTP Config Module
|
||||||
The `user_2fa_otp_config` module provides opt-in, configuration, and viewing of Two-Factor Authentication via One-Time-Password (2FA/OTP) settings. In order to allow users access to 2FA/OTP, the system must be properly configured. See [Security](/docs/configuration/security.md) for more information.
|
The `user_2fa_otp_config` module provides opt-in, configuration, and viewing of Two-Factor Authentication via One-Time-Password (2FA/OTP) settings. In order to allow users access to 2FA/OTP, the system must be properly configured. See [Security](../configuration/security.md) for more information.
|
||||||
|
|
||||||
:information_source: By default, the 2FA/OTP configuration menu may only be accessed by users connected securely (ACS `SC`). It is highly recommended to leave this default as accessing these settings over a plain-text connection could expose private secrets!
|
:information_source: By default, the 2FA/OTP configuration menu may only be accessed by users connected securely (ACS `SC`). It is highly recommended to leave this default as accessing these settings over a plain-text connection could expose private secrets!
|
||||||
|
|
||||||
|
|