From 1df2dcb3e15087574f9f34c1f56de12be0899c13 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:29:08 -0700 Subject: [PATCH 01/14] Overhaul of external binaries / support package info --- docs/_includes/nav.md | 1 + docs/configuration/archivers.md | 37 ++----------------- docs/configuration/file-transfer-protocols.md | 3 +- docs/installation/manual.md | 15 ++------ 4 files changed, 8 insertions(+), 48 deletions(-) diff --git a/docs/_includes/nav.md b/docs/_includes/nav.md index 1f8e27c7..42cc7bff 100644 --- a/docs/_includes/nav.md +++ b/docs/_includes/nav.md @@ -18,6 +18,7 @@ - [HJSON Config Files]({{ site.baseurl }}{% link configuration/hjson.md %}) - [Menus]({{ site.baseurl }}{% link configuration/menu-hjson.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 %}) - [File Transfer Protocols]({{ site.baseurl }}{% link configuration/file-transfer-protocols.md %}) - [Email]({{ site.baseurl }}{% link configuration/email.md %}) diff --git a/docs/configuration/archivers.md b/docs/configuration/archivers.md index 5433caf0..0f55a58b 100644 --- a/docs/configuration/archivers.md +++ b/docs/configuration/archivers.md @@ -2,44 +2,13 @@ layout: page 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 +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). -### Predefined Archivers -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: LHA 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: Amiga LZX -* 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 +:bulb: Generally you do not need to anything beyond installing supporting binaries. No `config.hjson` editing necessary; Please see [External Binaries](external-binaries.md)! ### 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: diff --git a/docs/configuration/file-transfer-protocols.md b/docs/configuration/file-transfer-protocols.md index a7dec599..d9c05983 100644 --- a/docs/configuration/file-transfer-protocols.md +++ b/docs/configuration/file-transfer-protocols.md @@ -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. ### 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 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/). diff --git a/docs/installation/manual.md b/docs/installation/manual.md index 2dcbfca7..31c49965 100644 --- a/docs/installation/manual.md +++ b/docs/installation/manual.md @@ -50,20 +50,11 @@ npm install # yarn also works ``` ## 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 | -|------------|-----------------------------------|--------------------------------------------|---------------------------------------------------|------------------------------------------------------------------| -| 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 [External Binaries](/docs/configuration/external-binaries.md) for information on setting these up. -: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](/docs/configuration/archivers.md) and [File Transfer Protocols](/docs/configuration/file-transfer-protocols.md) ## 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. From 270e4fd3aa2baf62c172aea6d6afc5fbfaa971c4 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:30:23 -0700 Subject: [PATCH 02/14] Duh --- docs/configuration/external-binaries.md | 44 +++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 docs/configuration/external-binaries.md diff --git a/docs/configuration/external-binaries.md b/docs/configuration/external-binaries.md new file mode 100644 index 00000000..fccd5119 --- /dev/null +++ b/docs/configuration/external-binaries.md @@ -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](/docs/filebase/index.md) or [File Transfer Protocols](/docs/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.
: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
`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))
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`
`ymodemSexyz`
`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) | Build from source | +| `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 From 37fe92501155ad8b375449d624e50ed330303211 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:36:55 -0700 Subject: [PATCH 03/14] Call out external binaries moaarrr --- docs/installation/install-script.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/installation/install-script.md b/docs/installation/install-script.md index e6a3a445..c918512d 100644 --- a/docs/installation/install-script.md +++ b/docs/installation/install-script.md @@ -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 ``` -: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! 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](/docs/configuration/external-binaries.md) +* Read [Updating](/docs/admin/updating.md) From 1c0fbaef1f281bc3e8530e02343a3f5fa1056d2a Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:43:04 -0700 Subject: [PATCH 04/14] Maybe fix links in gen doc? --- docs/installation/manual.md | 6 +++--- docs/messageareas/bso-import-export.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/installation/manual.md b/docs/installation/manual.md index 31c49965..3fc8ac9b 100644 --- a/docs/installation/manual.md +++ b/docs/installation/manual.md @@ -52,12 +52,12 @@ npm install # yarn also works ## 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 systems `PATH`. -:information_source: Please see [External Binaries](/docs/configuration/external-binaries.md) for information on setting these up. +:information_source: Please see [External Binaries](docs/configuration/external-binaries.md) for information on setting these up. -:information_source: Additional information in [Archivers](/docs/configuration/archivers.md) and [File Transfer Protocols](/docs/configuration/file-transfer-protocols.md) +:information_source: Additional information in [Archivers](docs/configuration/archivers.md) and [File Transfer Protocols](docs/configuration/file-transfer-protocols.md) ## 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: diff --git a/docs/messageareas/bso-import-export.md b/docs/messageareas/bso-import-export.md index a7c49c10..f177b52d 100644 --- a/docs/messageareas/bso-import-export.md +++ b/docs/messageareas/bso-import-export.md @@ -27,7 +27,7 @@ A node entry starts with a [FTN address](http://ftsc.org/docs/old/fsp-1028.001) | 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 | | `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. | From 6221e694f4b0d194738c6222940ed569fe29a1ce Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:44:05 -0700 Subject: [PATCH 05/14] Try that style --- docs/installation/manual.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/installation/manual.md b/docs/installation/manual.md index 3fc8ac9b..cb463d81 100644 --- a/docs/installation/manual.md +++ b/docs/installation/manual.md @@ -52,9 +52,9 @@ npm install # yarn also works ## 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 systems `PATH`. -:information_source: Please see [External Binaries](docs/configuration/external-binaries.md) for information on setting these up. +:information_source: Please see [External Binaries](../configuration/external-binaries.md) for information on setting these up. -:information_source: Additional information in [Archivers](docs/configuration/archivers.md) and [File Transfer Protocols](docs/configuration/file-transfer-protocols.md) +:information_source: Additional information in [Archivers](../configuration/archivers.md) and [File Transfer Protocols](../configuration/file-transfer-protocols.md) ## 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 (compliant JSON is also OK). See [Configuration](../configuration/) for more information. From 215d02b3411ba7d636aff7ee87d55c84e1f936ea Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:46:40 -0700 Subject: [PATCH 06/14] More testing of waters --- README.md | 4 ++-- UPGRADE.md | 4 ++-- WHATSNEW.md | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a3013a0c..ca3b7412 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ ENiGMA½ is a modern BBS software with a nostalgic flair! * [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. * 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. * Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption. * 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! ## 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 On most *nix systems simply run the following from your terminal: diff --git a/UPGRADE.md b/UPGRADE.md index 7e352c31..117b4bff 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -2,7 +2,7 @@ This document covers basic upgrade notes for major ENiGMA½ version updates. # 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! # General Notes @@ -12,7 +12,7 @@ In general, look at template menu files in `misc/menu_templates`, and `config_te ### 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. -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 from GitHub is easy: diff --git a/WHATSNEW.md b/WHATSNEW.md index acef4338..c5071ef7 100644 --- a/WHATSNEW.md +++ b/WHATSNEW.md @@ -2,17 +2,17 @@ This document attempts to track **major** changes and additions in ENiGMA½. For details, see GitHub. ## 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). * 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. -* 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. ## 0.0.11-beta * 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! -* [QWK support](/docs/messageareas/qwk.md) +* [QWK support](./docs/messageareas/qwk.md) * `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. From 8e8016d0fd45b5430c984c44dbdac89a6099d830 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 13:53:47 -0700 Subject: [PATCH 07/14] Hopefully fix all links on doc site --- WHATSNEW.md | 8 ++++---- docs/admin/administration.md | 2 +- docs/admin/oputil.md | 2 +- docs/admin/updating.md | 2 +- docs/art/general.md | 4 ++-- docs/configuration/acs.md | 4 ++-- docs/configuration/config-files.md | 4 ++-- docs/configuration/config-hjson.md | 4 ++-- docs/configuration/external-binaries.md | 2 +- docs/configuration/hjson.md | 2 +- docs/configuration/menu-hjson.md | 14 +++++++------- docs/configuration/security.md | 12 ++++++------ docs/filebase/acs.md | 4 ++-- docs/filebase/first-file-area.md | 8 ++++---- docs/filebase/tic-support.md | 2 +- docs/index.md | 2 +- docs/installation/install-script.md | 4 ++-- docs/installation/installation-methods.md | 2 +- docs/messageareas/configuring-a-message-area.md | 10 +++++----- docs/messageareas/ftn.md | 2 +- docs/messageareas/qwk.md | 2 +- docs/misc/user-interrupt.md | 2 +- docs/modding/node-msg.md | 2 +- docs/modding/telnet-bridge.md | 2 +- docs/modding/top-x.md | 2 +- docs/modding/user-2fa-otp-config.md | 2 +- 26 files changed, 53 insertions(+), 53 deletions(-) diff --git a/WHATSNEW.md b/WHATSNEW.md index c5071ef7..8d80ea2b 100644 --- a/WHATSNEW.md +++ b/WHATSNEW.md @@ -20,8 +20,8 @@ This document attempts to track **major** changes and additions in ENiGMA½. For + `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. + 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! -* New ACS codes for new 2FA/OTP: `AR` and `AF`. See [ACS](/docs/configuration/acs.md) for details. ++ 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. + `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 fb scan --quick` is now the default. Override with `--full`. @@ -84,8 +84,8 @@ submit: [ * `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. * 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. -* `oputil.js user rm` and `oputil.js user info` are in! See [oputil CLI](/docs/admin/oputil.md). +* 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). * 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. * Total minutes online is now tracked for users. Of course, it only starts after you get the update :) diff --git a/docs/admin/administration.md b/docs/admin/administration.md index 8d15fba5..0b960246 100644 --- a/docs/admin/administration.md +++ b/docs/admin/administration.md @@ -9,7 +9,7 @@ title: Administration See [Updating](updating.md). ## Viewing Logs -See [Monitoring Logs](/docs/troubleshooting/monitoring-logs.md). +See [Monitoring Logs](../troubleshooting/monitoring-logs.md). ## Managing Users User management is currently handled via the [oputil CLI](oputil.md). diff --git a/docs/admin/oputil.md b/docs/admin/oputil.md index e591de9f..49e7039c 100644 --- a/docs/admin/oputil.md +++ b/docs/admin/oputil.md @@ -107,7 +107,7 @@ info arguments: | `group` | Modifies users group membership | Add to group: `./oputil.js user group joeuser +derp`
Remove from group: `./oputil.js user group joeuser -derp` | N/A | #### 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 The `config` command allows sysops to perform various system configuration and maintenance tasks. diff --git a/docs/admin/updating.md b/docs/admin/updating.md index 59ab3111..ae9412e4 100644 --- a/docs/admin/updating.md +++ b/docs/admin/updating.md @@ -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! -: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! diff --git a/docs/art/general.md b/docs/art/general.md index 18c438ec..365326df 100644 --- a/docs/art/general.md +++ b/docs/art/general.md @@ -64,7 +64,7 @@ ENiGMA½ uses a fallback system for art selection. When a menu entry calls for a 4. In the `art/general` directory. #### 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 { fancyMenu: { @@ -153,4 +153,4 @@ fullLogoffSequenceRandomBoardAd: { ``` ### See Also -See also the [Show Art Module](/docs/modding/show-art.md) for more advanced art display! \ No newline at end of file +See also the [Show Art Module](../modding/show-art.md) for more advanced art display! \ No newline at end of file diff --git a/docs/configuration/acs.md b/docs/configuration/acs.md index decb3267..782bc8ec 100644 --- a/docs/configuration/acs.md +++ b/docs/configuration/acs.md @@ -73,8 +73,8 @@ All `users` can read (see) the area, `sysops` and `co-ops` can write (upload), a ## ACS Touch Points The following touch points exist in the system. Many more are planned: -* [Message conferences and areas](/docs/messageareas/configuring-a-message-area.md) -* [File base areas](/docs/filebase/first-file-area.md) and [Uploads](/docs/filebase/uploads.md) +* [Message conferences and areas](../messageareas/configuring-a-message-area.md) +* [File base areas](../filebase/first-file-area.md) and [Uploads](../filebase/uploads.md) * Menus within [Menu HJSON (menu.hjson)](menu-hjson.md) See the specific areas documentation for information on available ACS checks. diff --git a/docs/configuration/config-files.md b/docs/configuration/config-files.md index 565b9b10..d4537dc8 100644 --- a/docs/configuration/config-files.md +++ b/docs/configuration/config-files.md @@ -8,7 +8,7 @@ ENiGMA½ configuration files such as the [system config](config-hjson.md), [menu ## 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. -: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 ### 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. ### 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: diff --git a/docs/configuration/config-hjson.md b/docs/configuration/config-hjson.md index 65c6c4e9..28d379c5 100644 --- a/docs/configuration/config-hjson.md +++ b/docs/configuration/config-hjson.md @@ -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. * [Email](email.md): System email support. * [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! -* [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! diff --git a/docs/configuration/external-binaries.md b/docs/configuration/external-binaries.md index fccd5119..20247764 100644 --- a/docs/configuration/external-binaries.md +++ b/docs/configuration/external-binaries.md @@ -6,7 +6,7 @@ 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](/docs/filebase/index.md) or [File Transfer Protocols](/docs/configuration/file-transfer-protocols.md) it is highly recommended to install support binaries! +: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). diff --git a/docs/configuration/hjson.md b/docs/configuration/hjson.md index 7bfb8ddf..98aef757 100644 --- a/docs/configuration/hjson.md +++ b/docs/configuration/hjson.md @@ -40,7 +40,7 @@ See https://hjson.org/users.html for more more editors & plugins. ### 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. -:information_source: See also [Configuration Files](/docs/configuration/config-files.md) +:information_source: See also [Configuration Files](../configuration/config-files.md) ### CaSe SeNsiTiVE Configuration keys are **case sensitive**. That means if a configuration key is `boardName` for example, `boardname`, or `BOARDNAME` **will not work**. diff --git a/docs/configuration/menu-hjson.md b/docs/configuration/menu-hjson.md index b3eb14ca..0c409d2f 100644 --- a/docs/configuration/menu-hjson.md +++ b/docs/configuration/menu-hjson.md @@ -20,7 +20,7 @@ showSomeArt: { 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. @@ -30,7 +30,7 @@ Below is a table of **common** menu entry members. These members apply to most e | 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. | -| `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. | | `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`. @@ -41,7 +41,7 @@ Below is a table of **common** menu entry members. These members apply to most e ### 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`). -See [Menu Modules](/docs/modding/menu-modules.md) for more information. +See [Menu Modules](../modding/menu-modules.md) for more information. ### Config Block 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. | | `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. | -| `baudRate` | See baud rate information 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](/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](../art/general.md). | | `menuFlags` | An array of menu flag(s) controlling menu behavior. See **Menu Flags** below. #### 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`. -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 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: -* 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`. * An `config` block containing a single `nextTimeout` field telling the system to proceed to the `next` (`matrix`) entry automatically after 1500ms. diff --git a/docs/configuration/security.md b/docs/configuration/security.md index 8461a381..49870f17 100644 --- a/docs/configuration/security.md +++ b/docs/configuration/security.md @@ -11,9 +11,9 @@ Unlike in the golden era of BBSing, modern Internet-connected systems are prone ## 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: -* [A configured email gateway](/docs/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). -* The [web server](/docs/servers/web-server.md) enabled and exposed over TLS (HTTPS). +* [A configured email gateway](../configuration/email.md) such that the system can send out emails. +* 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](../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. @@ -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! -: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 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. ### 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. * `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 The following example illustrates using an `AR` ACS check to require applicable users to go through an additional 2FA/OTP process during login: diff --git a/docs/filebase/acs.md b/docs/filebase/acs.md index 618c1843..4a886163 100644 --- a/docs/filebase/acs.md +++ b/docs/filebase/acs.md @@ -3,7 +3,7 @@ layout: page title: 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. * `write` : `GM[sysops]`: Upload. * `download` : `GM[users]`: Download. @@ -28,4 +28,4 @@ areas: { ``` ## See Also -[Access Condition System (ACS)](/docs/configuration/acs.md) +[Access Condition System (ACS)](../configuration/acs.md) diff --git a/docs/filebase/first-file-area.md b/docs/filebase/first-file-area.md index c561b055..ae9e0fd2 100644 --- a/docs/filebase/first-file-area.md +++ b/docs/filebase/first-file-area.md @@ -84,16 +84,16 @@ fileBase: { ``` ## 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) -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 ./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. diff --git a/docs/filebase/tic-support.md b/docs/filebase/tic-support.md index 0970ef5e..e1d01ffb 100644 --- a/docs/filebase/tic-support.md +++ b/docs/filebase/tic-support.md @@ -98,4 +98,4 @@ ticAreas: { ``` ## See Also -[Message Networks](/docs/messageareas/message-networks.md) +[Message Networks](../messageareas/message-networks.md) diff --git a/docs/index.md b/docs/index.md index 1f5eba1d..1c374690 100644 --- a/docs/index.md +++ b/docs/index.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 * [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. - * 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. * Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption. * Support for 2-Factor Authentication with One-Time-Passwords diff --git a/docs/installation/install-script.md b/docs/installation/install-script.md index c918512d..809d38db 100644 --- a/docs/installation/install-script.md +++ b/docs/installation/install-script.md @@ -15,6 +15,6 @@ 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. :information_source: After installing: -* Read [External Binaries](/docs/configuration/external-binaries.md) -* Read [Updating](/docs/admin/updating.md) +* Read [External Binaries](../configuration/external-binaries.md) +* Read [Updating](../admin/updating.md) diff --git a/docs/installation/installation-methods.md b/docs/installation/installation-methods.md index 1b2f64e4..38fa4975 100644 --- a/docs/installation/installation-methods.md +++ b/docs/installation/installation-methods.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! ## Keeping Up To Date -After installing, you'll want to [keep your system updated](/docs/admin/updating.md). \ No newline at end of file +After installing, you'll want to [keep your system updated](../admin/updating.md). \ No newline at end of file diff --git a/docs/messageareas/configuring-a-message-area.md b/docs/messageareas/configuring-a-message-area.md index 74c7dcb5..b8d3f5a5 100644 --- a/docs/messageareas/configuring-a-message-area.md +++ b/docs/messageareas/configuring-a-message-area.md @@ -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. | | `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 | -| `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 -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]`. * `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. | | `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) | -| `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. | | `realNames` | :-1: | Set to `true` to use real names in this area. | ### 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]`. * `write`: ACS required to write (post) to this area. Defaults to `GM[users]`. @@ -85,4 +85,4 @@ messageConferences: { ``` ## 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. diff --git a/docs/messageareas/ftn.md b/docs/messageareas/ftn.md index f3d1237a..794b76c2 100644 --- a/docs/messageareas/ftn.md +++ b/docs/messageareas/ftn.md @@ -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 Below is a more complete *example* illustrating some of the concepts above: diff --git a/docs/messageareas/qwk.md b/docs/messageareas/qwk.md index 964551a3..140180f5 100644 --- a/docs/messageareas/qwk.md +++ b/docs/messageareas/qwk.md @@ -34,7 +34,7 @@ Example: ``` ### 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 A few of the offline readers that have been tested with QWK packet files produced by ENiGMA½: diff --git a/docs/misc/user-interrupt.md b/docs/misc/user-interrupt.md index fe20fdd9..4afcd8d8 100644 --- a/docs/misc/user-interrupt.md +++ b/docs/misc/user-interrupt.md @@ -3,7 +3,7 @@ layout: page title: 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 menus control interruption by the `interrupt` config block option, which may be set to one of the following values: diff --git a/docs/modding/node-msg.md b/docs/modding/node-msg.md index 5377e68a..8a89ef5f 100644 --- a/docs/modding/node-msg.md +++ b/docs/modding/node-msg.md @@ -3,7 +3,7 @@ layout: page title: Node to Node Messaging --- ## 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 ### Config Block diff --git a/docs/modding/telnet-bridge.md b/docs/modding/telnet-bridge.md index 36e1b3e6..3e091b5e 100644 --- a/docs/modding/telnet-bridge.md +++ b/docs/modding/telnet-bridge.md @@ -10,7 +10,7 @@ The `telnet_bridge` module allows "bridged" Telnet connections from your board t Available `config` entries: * `host`: Hostname or IP address to connect to. * `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 Below is an example `menu.hjson` entry that would connect to [Xibalba](https://xibalba.l33t.codes): diff --git a/docs/modding/top-x.md b/docs/modding/top-x.md index 41ac5ab7..dc2b319b 100644 --- a/docs/modding/top-x.md +++ b/docs/modding/top-x.md @@ -57,4 +57,4 @@ Generally `mciMap` entries will point to a Vertical List View Menu (`%VM1`, `%VM * `affils` or `affiliation`: Users affiliations. * `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. diff --git a/docs/modding/user-2fa-otp-config.md b/docs/modding/user-2fa-otp-config.md index 7b41939f..4ef12687 100644 --- a/docs/modding/user-2fa-otp-config.md +++ b/docs/modding/user-2fa-otp-config.md @@ -3,7 +3,7 @@ layout: page title: TopX --- ## 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! From e7cb804ada00e81481c958215d1d50cb5158b790 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 15:35:04 -0700 Subject: [PATCH 08/14] More docs on MCI/views/theming --- docs/art/general.md | 14 +++++++--- docs/art/mci.md | 43 ++++++++++++++++++++--------- docs/art/themes.md | 67 +++++++++++++++++++++++++++++++++------------ 3 files changed, 90 insertions(+), 34 deletions(-) diff --git a/docs/art/general.md b/docs/art/general.md index 365326df..7b2a5917 100644 --- a/docs/art/general.md +++ b/docs/art/general.md @@ -5,15 +5,20 @@ title: 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. +### Art File Locations 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. 2. Within a _theme_ such as `art/themes/super_fancy_theme`. -### 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. +### MCI Codes +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 { 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 { nodeMessage: { diff --git a/docs/art/mci.md b/docs/art/mci.md index 32c60e4a..5fde7bbd 100644 --- a/docs/art/mci.md +++ b/docs/art/mci.md @@ -2,16 +2,26 @@ layout: page title: MCI Codes --- -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**. MCI codes are two characters in length and are -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. +## MCI Codes +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**. -## Predefined MCI Codes -There are many predefined MCI codes that can be used anywhere on the system (placed in any art file). 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. Many codes attempt to pay homage to Oblivion/2, iNiQUiTY, etc. +## General Information +MCI codes are composed of two characters and are prefixed with a percent (%) symbol. + +: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: +%BN1%BN1 + +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 | |------|--------------| @@ -92,6 +102,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. | +: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 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. @@ -109,10 +126,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 | | `KE` | Key Entry | A *single* key input control | - -Peek at [/core/mci_view_factory.js](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js) to +:information_source: Peek at [/core/mci_view_factory.js](https://github.com/NuSkooler/enigma-bbs/blob/master/core/mci_view_factory.js) to 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 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. @@ -132,8 +150,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 | | `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 -`menu.hjson` and `theme.hjson` files! +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! ### 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. diff --git a/docs/art/themes.md b/docs/art/themes.md index 9c9087e1..f7b234de 100644 --- a/docs/art/themes.md +++ b/docs/art/themes.md @@ -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. ## 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 -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.! @@ -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. Two formats for `mci` blocks are allowed: -* Verbose where a form ID(s) are supplied. * 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: ```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 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 -: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` 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 theme: { default: your_board_theme 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 + } + } +} +``` \ No newline at end of file From 027d8336ed585ce8498282c1b679193292013f66 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 15:42:05 -0700 Subject: [PATCH 09/14] Fix example render --- docs/art/mci.md | 3 ++- docs/assets/images/mci-example1.png | Bin 0 -> 317 bytes 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 docs/assets/images/mci-example1.png diff --git a/docs/art/mci.md b/docs/art/mci.md index 5fde7bbd..859f25bf 100644 --- a/docs/art/mci.md +++ b/docs/art/mci.md @@ -11,7 +11,8 @@ MCI codes are composed of two characters and are prefixed with a percent (%) sym :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: -%BN1%BN1 + +![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. diff --git a/docs/assets/images/mci-example1.png b/docs/assets/images/mci-example1.png new file mode 100644 index 0000000000000000000000000000000000000000..ca3ffbcb2eb94a5018c948f4cb26c31c837cb39f GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^RY0u5!2~2v?%!zwq?n7HJVQ7*IBq}me*olu^>lFz z$!L6g?IK^Z0#ED1O>aay&u3J4lqEV@9dS}BG5)##bX2-cww4l5F%Ya^J>RbC8LH}a z<*3HTSL>cF^}1IS%2|Ek=mzt9-!n4eX1#m*fhYRp#S_2!CM}-0b@tCfb0@8 z*K4;PZ<tH35=4?*^pS+O6oh^H2M;{nVs$ zrJlx~R<}x?u8Q3E-!*xi_pHj(?z7j$n4V7FE)4NOgZ($gptnUwxP;Y{Kq8*5elF{r G5}E*q2#o6h literal 0 HcmV?d00001 From 76291a14359a4cff1eb4c41eeb301a590bb7b0f7 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 15:47:03 -0700 Subject: [PATCH 10/14] More doc updates! --- docs/art/mci.md | 6 ++++-- docs/assets/images/text-format-example1.png | Bin 0 -> 496 bytes 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 docs/assets/images/text-format-example1.png diff --git a/docs/art/mci.md b/docs/art/mci.md index 859f25bf..3fed8248 100644 --- a/docs/art/mci.md +++ b/docs/art/mci.md @@ -208,6 +208,8 @@ Additional text styles are available for numbers: #### 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 "eVIL cURRENT - Razor 1911". +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". \ No newline at end of file +![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". \ No newline at end of file diff --git a/docs/assets/images/text-format-example1.png b/docs/assets/images/text-format-example1.png new file mode 100644 index 0000000000000000000000000000000000000000..387786f2315b77660d619b44cfe678d9f05d1443 GIT binary patch literal 496 zcmVwa>O7AhOyIEbbLm~hqM=I9V&w8Y7V=6R|!!h>mN`Tz%UHs z({Mwr6952s@fMJgTIS%!O{66qSGHq6&G+J5Eg^?oSzH{Okxd+d;b5vzt2k+U*?#b~ zBGg~J;$kh>Kh}!gj%iABD`i$(bjLN7)#%~*DymIrv)bY+Jh$7$7JW!cSNeVKdt__FFpSr*OlX`( m&i`uhNB_NM7=~dO=kf!ILiJ{EP+o`t0000 Date: Sun, 22 Nov 2020 16:14:35 -0700 Subject: [PATCH 11/14] Font updates --- docs/art/general.md | 18 +++++++++++++++--- docs/assets/images/cp437.png | Bin 0 -> 308 bytes docs/assets/images/microknight.png | Bin 0 -> 401 bytes docs/assets/images/microknight_plus.png | Bin 0 -> 467 bytes docs/assets/images/mo_soul.png | Bin 0 -> 316 bytes docs/assets/images/pot_noodle.png | Bin 0 -> 340 bytes docs/assets/images/topaz.png | Bin 0 -> 270 bytes docs/assets/images/topaz_plus.png | Bin 0 -> 347 bytes 8 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 docs/assets/images/cp437.png create mode 100644 docs/assets/images/microknight.png create mode 100644 docs/assets/images/microknight_plus.png create mode 100644 docs/assets/images/mo_soul.png create mode 100644 docs/assets/images/pot_noodle.png create mode 100644 docs/assets/images/topaz.png create mode 100644 docs/assets/images/topaz_plus.png diff --git a/docs/art/general.md b/docs/art/general.md index 7b2a5917..551d231e 100644 --- a/docs/art/general.md +++ b/docs/art/general.md @@ -106,7 +106,17 @@ The most common fonts are probably as follows: * `microknight` * `topaz` -Other fonts fonts also available: +...and some examples: + + ![cp437](../assets/images/cp437.png "cp437")
+ ![pot_noodle](../assets/images/pot_noodle.png "pot_noodle")
+ ![mo_soul](../assets/images/mo_soul.png "mo_soul")
+ ![microknight_plus](../assets/images/microknight_plus.png "microknight_plus")
+ ![topaz_plus](../assets/images/topaz_plus.png "topaz_plus")
+ ![microknight](../assets/images/microknight.png "microknight")
+ ![topaz](../assets/images/topaz.png "topaz")
+ +Other "fonts" also available: * `cp1251` * `koi8_r` * `iso8859_2` @@ -139,10 +149,12 @@ Other fonts fonts also available: * `iso8859_1` * `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 -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 ```hjson diff --git a/docs/assets/images/cp437.png b/docs/assets/images/cp437.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0a511ff99db999ca12907354a6e089d02b43fc GIT binary patch literal 308 zcmV-40n7f0P)sXx`vKA^KOp}CZlGLwFBUX^B^>`pnlCm>vqJG2MMZGWm zo#de1lQc>C|H3D(AmflG3DYEDnk3)&mw$s5iZlTL?rj6XGjWbcO1!ZE0000UO-T9pw97NU@AH~`qDY{x;PP!=pmqj^hNrpH zdv@LbzMn_#`V#?j``a6pzq!0V^JMi`rjFn^m7q8ktIsj(?fc{1kC*W*T`c(eQTWyK zI{j|@`j6PF+r2LS$uqO{YPZWNFxtEKy8o2s^qM7)C2zlWS@iXIzO3P-=f5r2evICn zd-nJ~@%gTm6Fn*?zNq$?azgHmcZ&M5y4-uAsd?_Z%We01sMMYRn<;v7`DBEFPq*4` zyU$+svoiFl%=h1R%RPVXUjud(&|y-W-mdKI;Vst0P; zjv*Cu-rn&JI&2`odcdL3rSGKd;X~XpoI%GveP+MB_sB$(FdJ3hlTXT+f!aB$Zs#uf z{rqqGmGys*$!@OSa#Qg7m$Gg7S#sx}@C4dc*jq8|VCrOH6yjuBReko~zRF#*?%q7V z)$Psd?XT*K>b8FR?)5+URk^L$`Lgnj`<|Z?-ti^tZ)L^FF0d9AA(k4REi=PiKF6l5 z4q7#b`Ahl6zfx(Bn#QYF#7+&)}0`SX0y{qEXAEFLNx6FdYA zf|Px=(xoP!I_b9mZQ0sq8$+}9Ed3brE8f`NJM_`b%Yh$l`fva8nJCK11hfaJM`Go~ zXTML|e*f-n86E5B^*<&5VtKA>69dHg$Iegu_hohR8cL&wJh_$v*hDv5H z>AIHpud-dL{`<@8+g|@ZALjM-=S%k)YiC6jZ~dz8f93!AtT#U^k8UhY8h zQq{HBKQDi2x4(_oEwPO;NkXCRV{}x|&KLjN6B{JhIuaZ9NWYE}yHI7m_y4+Mcfa?& zSh48w$*;fX7yOG}Ge=SZtYxk3;wj-Li)_zc|Eir@yK-HBm)%cE!+Cvom5S3KhRD2> zWGP*LYt>G{bdZ@6Y$sx?-L_p7JvTpD@8KB+Lmq*{43bxk-R3hd+MnWb{BqF!z3P_6 z4m`|93>>1a@4i_5?Zx~lKbE&Mm!FvlcBG=`B$buh_0RApPyD_9RRPfd44$rjF6*2U FngH0ng;D?j literal 0 HcmV?d00001 diff --git a/docs/assets/images/pot_noodle.png b/docs/assets/images/pot_noodle.png new file mode 100644 index 0000000000000000000000000000000000000000..aebfb14622b74e272eebff15bbe26c1eb80b7957 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^yMS1Yg9%9fIUzO=NHG^Xd4_OsaNK_A|A2vkk;l`; zF{EP7+uIlUniM41E@asz_20C<<{F*t{Pw?^+cnE@-N1|c7@4hP7!o!-e!=ClBR22+ z`Qxw6uN7FYKmX6*J6qeHrI*w54(AJqGd*&8V6%(q%&$X*v#+%_><|D7UESzyEq@{F z_pPU!wVqa=)$3VRzxR)r^3*MM`I)gC9o&qCiW9!Z71!qe{#&$u&$Aa&x3BIG|M_b( zf92sQkbw>{91+I9#J|op;ohRhas*^*gmu}^=e1jZUwV4|;x3RKkDL~qpB1?D&yl_M zKlo=ojch-~<(K{XuVHce*5_fTmRz5|q*PG>q}gHX{a2eF3EW-1@Al$FMO$mnO7pJV f40S0(g8w_EYwe$9pB{_=1`~s)tDnm{r-UW|k^PzI literal 0 HcmV?d00001 diff --git a/docs/assets/images/topaz.png b/docs/assets/images/topaz.png new file mode 100644 index 0000000000000000000000000000000000000000..839e6ce4d9123d3888cdb1340c07c38417e91ae9 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^89=PX!2~2Pyz86@q?n7HJVQ7*IBq}me*okj^K@|x z$!L6gE0C*ILBQ={*R&f(x07wfuFjC<(LMLQB5?g59;3)ubB6!vs+ z45^s&_V&TPLkc3S7tDq23+*n~UvW*&NvYTuw0g#z%>@fZZdWmj7%(wBQvdnpQ~A#6 z*6FG%XMb4tukIJi4;w`X4gn@74h}_ymWB?CzrWx8iriMa{Cml5xvSduwSUh0^*Mi~ zg!TW8zpih6y5H&VKbs3e3M?Fq7o~-D_IlJ#vwnYg+Vwczub=kDZP11O`yvI>9I1uUsacZv}D~JYD@<);T3K0RVx=muvt4 literal 0 HcmV?d00001 From 12b36337c07bd7ea7e9a0f1d1f403c8b69927232 Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 16:24:30 -0700 Subject: [PATCH 12/14] Better Bink info --- docs/messageareas/bso-import-export.md | 68 ++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/docs/messageareas/bso-import-export.md b/docs/messageareas/bso-import-export.md index f177b52d..bf6ecc03 100644 --- a/docs/messageareas/bso-import-export.md +++ b/docs/messageareas/bso-import-export.md @@ -5,7 +5,7 @@ title: 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`. -: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 Let's look at some of the basic configuration: @@ -134,7 +134,68 @@ scannerTossers: { ``` ## 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 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 -[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. \ No newline at end of file From b645f13b7464ae2a4d874c2b7346ae366feae6eb Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 17:10:01 -0700 Subject: [PATCH 13/14] Fix typo --- docs/configuration/config-files.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/config-files.md b/docs/configuration/config-files.md index d4537dc8..dbba9816 100644 --- a/docs/configuration/config-files.md +++ b/docs/configuration/config-files.md @@ -8,7 +8,7 @@ ENiGMA½ configuration files such as the [system config](config-hjson.md), [menu ## 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. -:bulb: [Monitoring live logs](.../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 ### Includes From 66a91551a8363ee37d9875accf6874d37be56bfa Mon Sep 17 00:00:00 2001 From: Bryan Ashby Date: Sun, 22 Nov 2020 17:22:23 -0700 Subject: [PATCH 14/14] SEXYZ Win32 --- docs/configuration/external-binaries.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration/external-binaries.md b/docs/configuration/external-binaries.md index 20247764..1932a963 100644 --- a/docs/configuration/external-binaries.md +++ b/docs/configuration/external-binaries.md @@ -31,8 +31,8 @@ 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`
`ymodemSexyz`
`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) | Build from source | -| `zmodem8kSz` | Z-Modem 8K | [Wikipedia](https://en.wikipedia.org/wiki/ZMODEM) | `lrzsz` | `lrzsz` | Unknown +| `xmodemSexyz`
`ymodemSexyz`
`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