diff --git a/404.html b/404.html
index 7a43d6c9..45fd09b7 100644
--- a/404.html
+++ b/404.html
@@ -19,7 +19,7 @@
+{"description":"ENiGMA½ BBS is modern open source BBS software with a nostalgic flair, written in Node.js.","url":"/enigma-bbs/404.html","@type":"WebPage","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"ENiGMA½ BBS Software","@context":"https://schema.org"}
diff --git a/admin/administration.html b/admin/administration.html
index dd1eddad..16b1cd36 100644
--- a/admin/administration.html
+++ b/admin/administration.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/admin/administration.html"},"description":"Administration","url":"/enigma-bbs/admin/administration.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Administration","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/admin/oputil.html b/admin/oputil.html
index 19fe2624..c6322940 100644
--- a/admin/oputil.html
+++ b/admin/oputil.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/admin/oputil.html"},"description":"The oputil CLI ENiGMA½ comes with oputil.js henceforth known as oputil, a command line interface (CLI) tool for sysops to perform general system and user administration. You likely used oputil to do the initial ENiGMA configuration.","url":"/enigma-bbs/admin/oputil.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"oputil","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/admin/updating.html b/admin/updating.html
index 67e728b1..b76abcb3 100644
--- a/admin/updating.html
+++ b/admin/updating.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/admin/updating.html"},"description":"Updating Keeping your system up to date ensures you have the latest fixes, features, and general improvements. Updating ENiGMA½ can be a bit of a learning curve compared to traditional binary-release systems you may be used to, especially when running from Git cloned source.","url":"/enigma-bbs/admin/updating.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Updating","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/general.html b/art/general.html
index 190e4f1e..3f3497ab 100644
--- a/art/general.html
+++ b/art/general.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/general.html"},"description":"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.","url":"/enigma-bbs/art/general.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"General Art Information","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/mci.html b/art/mci.html
index 98bc302e..5da1d967 100644
--- a/art/mci.html
+++ b/art/mci.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/mci.html"},"description":"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.","url":"/enigma-bbs/art/mci.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"MCI Codes","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/themes.html b/art/themes.html
index d3651dcc..4e58f80e 100644
--- a/art/themes.html
+++ b/art/themes.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/themes.html"},"description":"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.","url":"/enigma-bbs/art/themes.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Themes","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/button_view.html b/art/views/button_view.html
index 5fad5f74..e1bc568c 100644
--- a/art/views/button_view.html
+++ b/art/views/button_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/button_view.html"},"description":"Button View A button view supports displaying a button on a screen.","url":"/enigma-bbs/art/views/button_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Button View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/edit_text_view.html b/art/views/edit_text_view.html
index 82ae74ef..b1362aa6 100644
--- a/art/views/edit_text_view.html
+++ b/art/views/edit_text_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/edit_text_view.html"},"description":"Edit Text View An edit text view supports editing form values on a screen. This can be for new entry as well as editing existing values defined by the module.","url":"/enigma-bbs/art/views/edit_text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Edit Text View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/full_menu_view.html b/art/views/full_menu_view.html
index 5c3da8bb..1a6bf83c 100644
--- a/art/views/full_menu_view.html
+++ b/art/views/full_menu_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/full_menu_view.html"},"description":"Full Menu View A full menu view supports displaying a list of times on a screen in a very configurable manner. A full menu view supports either a single row or column of values, similar to Horizontal Menu (HM) and Vertical Menu (VM), or in multiple columns.","url":"/enigma-bbs/art/views/full_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Full Menu View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/horizontal_menu_view.html b/art/views/horizontal_menu_view.html
index fa01f685..8cdec5c1 100644
--- a/art/views/horizontal_menu_view.html
+++ b/art/views/horizontal_menu_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/horizontal_menu_view.html"},"description":"Horizontal Menu View A horizontal menu view supports displaying a list of times on a screen horizontally (side to side, in a single row) similar to a lightbox.","url":"/enigma-bbs/art/views/horizontal_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Horizontal Menu View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/mask_edit_text_view.html b/art/views/mask_edit_text_view.html
index 3268cdb8..728544b3 100644
--- a/art/views/mask_edit_text_view.html
+++ b/art/views/mask_edit_text_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/mask_edit_text_view.html"},"description":"Mask Edit Text View A mask edit text view supports editing form values on a screen. This can be for new entry as well as editing existing values. Unlike a edit text view, the mask edit text view uses a mask pattern to specify what format the values should be entered in.","url":"/enigma-bbs/art/views/mask_edit_text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Mask Edit Text View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/multi_line_edit_text_view.html b/art/views/multi_line_edit_text_view.html
index 0fe37927..76577e80 100644
--- a/art/views/multi_line_edit_text_view.html
+++ b/art/views/multi_line_edit_text_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/multi_line_edit_text_view.html"},"description":"Multi Line Edit Text View A text display / editor designed to edit or display a message.","url":"/enigma-bbs/art/views/multi_line_edit_text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Multi Line Edit Text View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/predefined_label_view.html b/art/views/predefined_label_view.html
index 52c84a78..abaf5346 100644
--- a/art/views/predefined_label_view.html
+++ b/art/views/predefined_label_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/predefined_label_view.html"},"description":"Predefined Label View A predefined label view supports displaying a predefined MCI label on a screen.","url":"/enigma-bbs/art/views/predefined_label_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Predefined Label View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/spinner_menu_view.html b/art/views/spinner_menu_view.html
index 4dd1d9d9..eb4fd0bc 100644
--- a/art/views/spinner_menu_view.html
+++ b/art/views/spinner_menu_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/spinner_menu_view.html"},"description":"Spinner Menu View A spinner menu view supports displaying a set of times on a screen as a list, with one item displayed at a time. This is generally used to pick one option from a list. Some examples could include selecting from a list of states, themes, etc.","url":"/enigma-bbs/art/views/spinner_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Spinner Menu View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/text_view.html b/art/views/text_view.html
index a567d629..d53a2d89 100644
--- a/art/views/text_view.html
+++ b/art/views/text_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/text_view.html"},"description":"Text View A text label view supports displaying simple text on a screen.","url":"/enigma-bbs/art/views/text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Text View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/toggle_menu_view.html b/art/views/toggle_menu_view.html
index 0d39402a..b6f571cc 100644
--- a/art/views/toggle_menu_view.html
+++ b/art/views/toggle_menu_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/toggle_menu_view.html"},"description":"Toggle Menu View A toggle menu view supports displaying a list of options on a screen horizontally (side to side, in a single row) similar to a Horizontal Menu. It is designed to present one of two choices easily.","url":"/enigma-bbs/art/views/toggle_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Toggle Menu View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/art/views/vertical_menu_view.html b/art/views/vertical_menu_view.html
index 41c68f24..a2e9b082 100644
--- a/art/views/vertical_menu_view.html
+++ b/art/views/vertical_menu_view.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/vertical_menu_view.html"},"description":"Vertical Menu View A vertical menu view supports displaying a list of times on a screen vertically in a single column, similar to a lightbar. This type of control is often useful for lists of items or menu controls.","url":"/enigma-bbs/art/views/vertical_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Vertical Menu View","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/acs.html b/configuration/acs.html
index 7f3b0725..97f7e096 100644
--- a/configuration/acs.html
+++ b/configuration/acs.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/acs.html"},"description":"Access Condition System (ACS) ENiGMA½ uses an Access Condition System (ACS) that is both familiar to oldschool BBS operators and has it’s own style. With ACS, SysOp’s are able to control access to various areas of the system based on various conditions such as group membership, connection type, etc. Various touch points in the system are configured to allow for acs checks. In some cases ACS is a simple boolean check while others (via ACS blocks) allow to define what conditions must be true for certain rights such as read and write (though others exist as well).","url":"/enigma-bbs/configuration/acs.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Access Condition System (ACS)","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/archivers.html b/configuration/archivers.html
index d0a5a134..2fbde173 100644
--- a/configuration/archivers.html
+++ b/configuration/archivers.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/archivers.html"},"description":"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.","url":"/enigma-bbs/configuration/archivers.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Archivers","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/colour-codes.html b/configuration/colour-codes.html
index fb00fd41..e3deb562 100644
--- a/configuration/colour-codes.html
+++ b/configuration/colour-codes.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/colour-codes.html"},"description":"ENiGMA½ supports Renegade-style pipe colour codes for formatting strings. You’ll see them used throughout your configuration, and can also be used in places like onelinerz, rumourz, full screen editor etc.","url":"/enigma-bbs/configuration/colour-codes.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Colour Codes","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/config-files.html b/configuration/config-files.html
index 75e974bf..c07d93fb 100644
--- a/configuration/config-files.html
+++ b/configuration/config-files.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/config-files.html"},"description":"General Information ENiGMA½ configuration files such as the system config, menus and themes are formatted in the HJSON format.","url":"/enigma-bbs/configuration/config-files.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Configuration Files","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/config-hjson.html b/configuration/config-hjson.html
index 3f48bd23..e37192ee 100644
--- a/configuration/config-hjson.html
+++ b/configuration/config-hjson.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/config-hjson.html"},"description":"System Configuration The main system configuration file, config.hjson both overrides defaults and provides additional configuration such as message areas. Defaults lived in core/config_default.js.","url":"/enigma-bbs/configuration/config-hjson.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"System Configuration","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/creating-config.html b/configuration/creating-config.html
index c41bba6c..e38a6fe1 100644
--- a/configuration/creating-config.html
+++ b/configuration/creating-config.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/creating-config.html"},"description":"Configuration files in ENiGMA½ are simple UTF-8 encoded HJSON files. HJSON is just like JSON but simplified and much more resilient to human error.","url":"/enigma-bbs/configuration/creating-config.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Creating Initial Config Files","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/directory-structure.html b/configuration/directory-structure.html
index e4498713..7d0bccb7 100644
--- a/configuration/directory-structure.html
+++ b/configuration/directory-structure.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/directory-structure.html"},"description":"All paths mentioned here are relative to the ENiGMA½ checkout directory.","url":"/enigma-bbs/configuration/directory-structure.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Directory Structure","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/email.html b/configuration/email.html
index 0f322c72..b1ce1d95 100644
--- a/configuration/email.html
+++ b/configuration/email.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/email.html"},"description":"Email Support ENiGMA½ uses email to send password reset information to users. For it to work, you need to provide valid Nodemailer compatible email block in your config.hjson. Nodemailer supports SMTP in addition to many pre-defined services for ease of use. The transport block within email must be Nodemailer compatible.","url":"/enigma-bbs/configuration/email.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Email","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/event-scheduler.html b/configuration/event-scheduler.html
index 094c85ef..61e45522 100644
--- a/configuration/event-scheduler.html
+++ b/configuration/event-scheduler.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/event-scheduler.html"},"description":"Event Scheduler The ENiGMA½ scheduler allows system operators to configure arbitrary events that can can fire based on date and/or time, or by watching for changes in a file. Events can kick off internal handlers, custom modules, or binaries & scripts.","url":"/enigma-bbs/configuration/event-scheduler.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Event Scheduler","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/external-binaries.html b/configuration/external-binaries.html
index c2d9d2a8..9d3ac6bd 100644
--- a/configuration/external-binaries.html
+++ b/configuration/external-binaries.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/external-binaries.html"},"description":"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.","url":"/enigma-bbs/configuration/external-binaries.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"External Support Binaries","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/file-transfer-protocols.html b/configuration/file-transfer-protocols.html
index 2b3a4b77..e650e3e7 100644
--- a/configuration/file-transfer-protocols.html
+++ b/configuration/file-transfer-protocols.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/file-transfer-protocols.html"},"description":"ENiGMA½ currently relies on external executable binaries for “legacy” file transfer protocols such as X, Y, and ZModem. Remember that ENiGMA½ also support modern web (HTTP/HTTPS) downloads!","url":"/enigma-bbs/configuration/file-transfer-protocols.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Transfer Protocols","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/hjson.html b/configuration/hjson.html
index a3668b27..432204ad 100644
--- a/configuration/hjson.html
+++ b/configuration/hjson.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/hjson.html"},"description":"JSON for Humans! HJSON is the configuration file format used by ENiGMA½ for System Configuration, Menus, etc. HJSON is is JSON for humans!","url":"/enigma-bbs/configuration/hjson.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"HJSON Config Files","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/menu-hjson.html b/configuration/menu-hjson.html
index 8fbe17c6..802e692c 100644
--- a/configuration/menu-hjson.html
+++ b/configuration/menu-hjson.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/menu-hjson.html"},"description":"Menu HJSON The core of a ENiGMA½ based BBS is it’s menus driven by what will be referred to as menu.hjson. Throughout ENiGMA½ documentation, when menu.hjson is referenced, we’re actually talking about config/menus/yourboardname-*.hjson. These files determine the menus (or screens) a user can see, the order they come in, how they interact with each other, ACS configuration, and so on. Like all configuration within ENiGMA½, menu configuration is done in HJSON format.","url":"/enigma-bbs/configuration/menu-hjson.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Menu HSJON","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
@@ -2420,7 +2420,7 @@
For more information on views and associated MCI codes, see MCI Codes.
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. Note: Setting the value explicitly to null matches against any value.
Submit Actions
Submit actions are declared using the action
member of a submit handler block. Actions can be kick off system/global or local-to-module methods, launch other menus, etc.
@@ -2523,6 +2523,10 @@
nextArea |
Sets the users message area to the next available. |
+
+ setClientEncoding |
+ Sets the client encoding (such as cp437 and utf-8.) |
+
@@ -2757,6 +2761,169 @@
}
+Case Study: Manual Encoding Selection
+
+Enigma½ tries to automatically determine the proper encoding for a client when it connects. Unfortunately, there are cases where the wrong encoding can be selected, resulting in terminal programs that are not supported. If your user base contains users that would like to connect with unsupported clients, one solution is to offer manual encoding selection.
+
+This can be accomplished with the system method @systemMethod:setClientEncoding
.
+
+Simple example
+
+A basic config to use this could look something like the following:
+
+telnetConnected: {
+ art: CONNECT
+ next: clientSelectEncoding
+ config: { nextTimeout: 1500 }
+}
+
+clientSelectEncoding: {
+ art: CLTSEL.ASC
+ next: matrix
+ form: {
+ 0: {
+ mci: {
+ HM1: {
+ submit: true
+ hotKeys: { U: 0, C: 1 }
+ hotKeysSubmit: true
+ focus: true
+ argName: encoding
+ items: [
+ {
+ text: U) UTF-8
+ data: utf-8
+ }
+ {
+ text: C) CP437
+ data: cp437
+ }
+ ]
+ }
+ }
+ submit: {
+ *: [
+ {
+ value: { encoding: null }
+ action: @systemMethod:setClientEncoding
+ }
+ ]
+ }
+ }
+ }
+}
+
+
+The artfile for this should not contain extended characters, a simple file list
+the following should work:
+
+Choose your encoding:
+
+%HM1
+
+
+Auto selection example
+
+The above example can be further extended to default to the automatically detected encoding by using a slightly more complicated menu system:
+
+```hjson
+
+telnetConnected: {
+ art: CONNECT
+ next: [
+ {
+ acs: EC0
+ next: clientSelectCP437
+ }
+ {
+ next: clientSelectUTF8
+ }
+ ]
+ config: { nextTimeout: 1500 }
+}
+
+clientSelectUTF8: {
+ art: CLTSEL.ASC
+ next: matrix
+ config: { font: utf-8 }
+ form: {
+ 0: {
+ mci: {
+ HM1: {
+ submit: true
+ hotKeys: { U: 0, C: 1 }
+ hotKeysSubmit: true
+ focus: true
+ argName: encoding
+ focusItemIndex: 0
+ items: [
+ {
+ text: U) UTF-8
+ data: utf-8
+ }
+ {
+ text: C) CP437
+ data: cp437
+ }
+ ]
+ }
+ }
+ submit: {
+ *: [
+ {
+ value: { encoding: null }
+ action: @systemMethod:setClientEncoding
+ }
+ ]
+ }
+ }
+ }
+}
+
+clientSelectCP437: {
+ art: CLTSEL.ASC
+ next: matrix
+ config: { font: cp437 }
+ form: {
+ 0: {
+ mci: {
+ HM1: {
+ submit: true
+ hotKeys: { U: 0, C: 1 }
+ hotKeysSubmit: true
+ focus: true
+ argName: encoding
+ focusItemIndex: 1
+ items: [
+ {
+ text: U) UTF-8
+ data: utf-8
+ }
+ {
+ text: C) CP437
+ data: cp437
+ }
+ ]
+ }
+ }
+ submit: {
+ *: [
+ {
+ value: { encoding: null }
+ action: @systemMethod:setClientEncoding
+ }
+ ]
+ }
+ }
+ }
+}
+
+Use the same artfile as the previous example.
+
+Note: This example can be shortened by using @reference sections if desired.
+
+The acs:
sections above will send the user to a different menu depending on whether they have encoding CP437 using EC0
or anything else sent to the UTF8 menu. From there focusItemIndex
chooses the default item.
+
diff --git a/configuration/security.html b/configuration/security.html
index 855104ef..777f0ad0 100644
--- a/configuration/security.html
+++ b/configuration/security.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/security.html"},"description":"Security Unlike in the golden era of BBSing, modern Internet-connected systems are prone to hacking attempts, eavesdropping, etc. While plain-text passwords, insecure data over Plain Old Telephone Service (POTS), and so on was good enough then, modern systems must employ protections against attacks. ENiGMA½ comes with many security features that help keep the system and your users secure — not limited to: Passwords are never stored in plain-text, but instead are stored using Password-Based Key Derivation Function 2 (PBKDF2). Even the system operator can never know your password! Alternatives to insecure Telnet logins are built in: SSH and secure WebSockets for example. A built in web server with TLS support (aka HTTPS). Optional Two-Factor Authentication (2FA) via One-Time-Password (OTP) for users, supporting Google Authenticator, Time-Based One-Time Password Algorithm (TOTP, RFC-6238), and HMAC-Based One-Time Password Algorithm (HOTP, RFC-4266).","url":"/enigma-bbs/configuration/security.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Security","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/configuration/sysop-setup.html b/configuration/sysop-setup.html
index ae783784..5d512008 100644
--- a/configuration/sysop-setup.html
+++ b/configuration/sysop-setup.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/sysop-setup.html"},"description":"SySop privileges will be granted to the first user to log into a fresh ENiGMA½ installation. +ops belong to the sysop user group by default.","url":"/enigma-bbs/configuration/sysop-setup.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"SysOp Setup","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/acs.html b/filebase/acs.html
index e73657a4..824153fa 100644
--- a/filebase/acs.html
+++ b/filebase/acs.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/acs.html"},"description":"File Base ACS ACS Codes 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.","url":"/enigma-bbs/filebase/acs.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"ACS","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/first-file-area.html b/filebase/first-file-area.html
index facd9362..9670ae3f 100644
--- a/filebase/first-file-area.html
+++ b/filebase/first-file-area.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/first-file-area.html"},"description":"Configuring a File Base ENiGMA½ offers a powerful and flexible file base. Configuration of file the file base and areas is handled via the fileBase section of config.hjson.","url":"/enigma-bbs/filebase/first-file-area.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Configuring a File Base","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/index.html b/filebase/index.html
index 44afca39..6ec6d30c 100644
--- a/filebase/index.html
+++ b/filebase/index.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/"},"description":"About File Areas","url":"/enigma-bbs/filebase/","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"About File Areas","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/network-mounts-and-symlinks.html b/filebase/network-mounts-and-symlinks.html
index cf8e9f82..877f8cb1 100644
--- a/filebase/network-mounts-and-symlinks.html
+++ b/filebase/network-mounts-and-symlinks.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/network-mounts-and-symlinks.html"},"description":"Network Mounts & Symlinks With many Bulletin Board Systems running on small headless boxes such as Raspberry Pis, it may not be practical to have all files you would like to make available in your file base. One solution to this is to utilize network mounts. Add in symbolic links to make things even easier!","url":"/enigma-bbs/filebase/network-mounts-and-symlinks.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Network Mounts & Symlinks","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/tic-support.html b/filebase/tic-support.html
index 22215691..27ae492b 100644
--- a/filebase/tic-support.html
+++ b/filebase/tic-support.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/tic-support.html"},"description":"TIC Support ENiGMA½ supports FidoNet-Style TIC file attachments by mapping TIC areas to local file areas.","url":"/enigma-bbs/filebase/tic-support.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"TIC Support","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/uploads.html b/filebase/uploads.html
index 822878fc..1635a06f 100644
--- a/filebase/uploads.html
+++ b/filebase/uploads.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/uploads.html"},"description":"Uploads The default ACS for file areas in ENiGMA½ is to allow regular users ‘read’ and sysops ‘read/write’. Read ACS includes listing and downloading while write allows for uploading. See File Base ACS for more information.","url":"/enigma-bbs/filebase/uploads.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Uploads","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/filebase/web-access.html b/filebase/web-access.html
index 8445828f..7af9e095 100644
--- a/filebase/web-access.html
+++ b/filebase/web-access.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/web-access.html"},"description":"Temporary web HTTP(S) URLs can be used to download files using the built in web server. Temporary links expire after fileBase::web::expireMinutes (default 24 hours). The full URL given to users is built using contentServers::web::domain and will default to HTTPS (https://) if enabled with a fallback to HTTP. The end result is users are given a temporary web link that may look something like this: https://xibalba.l33t.codes:44512/f/h7JK","url":"/enigma-bbs/filebase/web-access.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Web Access","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/index.html b/index.html
index c664d9b7..42b5eb1e 100644
--- a/index.html
+++ b/index.html
@@ -19,7 +19,7 @@
+{"description":"ENiGMA½ BBS is modern open source BBS software with a nostalgic flair, written in Node.js.","url":"/enigma-bbs/","@type":"WebSite","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Home","name":"ENiGMA½ BBS Software","@context":"https://schema.org"}
diff --git a/installation/docker.html b/installation/docker.html
index 4801a9ad..6f664658 100644
--- a/installation/docker.html
+++ b/installation/docker.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/docker.html"},"description":"You’ll need Docker installed before going any further. How to do so are out of scope of these docs, but you can find full instructions for every operating system on the Docker website.","url":"/enigma-bbs/installation/docker.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Docker","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/hardware/rpi.html b/installation/hardware/rpi.html
index 3c0ad461..eed3d3db 100644
--- a/installation/hardware/rpi.html
+++ b/installation/hardware/rpi.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/hardware/rpi.html"},"description":"All Raspberry Pi models work great with ENiGMA½! Keep in mind compiling the dependencies with npm install will take some time and may appear to hang. It’s still working - just be patient and let it complete.","url":"/enigma-bbs/installation/hardware/rpi.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Raspberry Pi","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/hardware/windows.html b/installation/hardware/windows.html
index f41e5f17..34c9d27b 100644
--- a/installation/hardware/windows.html
+++ b/installation/hardware/windows.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/hardware/windows.html"},"description":"Installation Under Windows","url":"/enigma-bbs/installation/hardware/windows.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Installation Under Windows","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/install-script.html b/installation/install-script.html
index 7286998e..d430c240 100644
--- a/installation/install-script.html
+++ b/installation/install-script.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/install-script.html"},"description":"Install Script Under most Linux/UNIX like environments (Linux, BSD, OS X, …) new users can simply execute the install.sh script to get everything up and running. Cut + paste the following into your terminal:","url":"/enigma-bbs/installation/install-script.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Install Script","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/installation-methods.html b/installation/installation-methods.html
index 221c5f9a..8d1a3f5b 100644
--- a/installation/installation-methods.html
+++ b/installation/installation-methods.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/installation-methods.html"},"description":"Installation Methods There are multiple ways of installing ENiGMA BBS, depending on your level of experience and desire to do things manually versus have it automated for you.","url":"/enigma-bbs/installation/installation-methods.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Installation Methods","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/manual.html b/installation/manual.html
index 3d8e63c1..ac8872d4 100644
--- a/installation/manual.html
+++ b/installation/manual.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/manual.html"},"description":"For Linux environments it’s recommended you run the install script. If you like to do things manually, read on…","url":"/enigma-bbs/installation/manual.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Manual Installation","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/network.html b/installation/network.html
index 770b1265..3f97de46 100644
--- a/installation/network.html
+++ b/installation/network.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/network.html"},"description":"Hosting an ENIGMA instance from your Home Network","url":"/enigma-bbs/installation/network.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Network Setup","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/production.html b/installation/production.html
index 5cbecf3d..529e1f4e 100644
--- a/installation/production.html
+++ b/installation/production.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/production.html"},"description":"If you’ve become convinced you would like a “production” BBS running ENiGMA½ a more advanced installation may be in order.","url":"/enigma-bbs/installation/production.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Production Installation","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/installation/testing.html b/installation/testing.html
index e0ed0b5c..1ed33fad 100644
--- a/installation/testing.html
+++ b/installation/testing.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/testing.html"},"description":"Once you’ve completed your chosen installation method, it’s time to test!","url":"/enigma-bbs/installation/testing.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Testing Your Installation","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/messageareas/bso-import-export.html b/messageareas/bso-import-export.html
index b601eedb..dad83b40 100644
--- a/messageareas/bso-import-export.html
+++ b/messageareas/bso-import-export.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/bso-import-export.html"},"description":"BSO Import / Export The scanner/tosser module ftn_bso provides Binkley Style Outbound (BSO) import/toss and scan/export of messages EchoMail and NetMail messages. Configuration is supplied in config.hjson under scannerTossers.ftn_bso.","url":"/enigma-bbs/messageareas/bso-import-export.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"BSO Import / Export","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/messageareas/configuring-a-message-area.html b/messageareas/configuring-a-message-area.html
index 33e9ed17..deb8ea7f 100644
--- a/messageareas/configuring-a-message-area.html
+++ b/messageareas/configuring-a-message-area.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/configuring-a-message-area.html"},"description":"General Information In ENiGMA½, a message base is divided into two logical grouping components: Message Conferences and Areas. Message conferences are top level containers while areas are for a specific topic. Messages are always stored internally with a area tag.","url":"/enigma-bbs/messageareas/configuring-a-message-area.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Base","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/messageareas/ftn.html b/messageareas/ftn.html
index f536d810..298e005b 100644
--- a/messageareas/ftn.html
+++ b/messageareas/ftn.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/ftn.html"},"description":"FidoNet-Style Networks (FTN) FidoNet proper and other FidoNet-Style networks are supported by ENiGMA½. A bit of configuration and you’ll be up and running in no time!","url":"/enigma-bbs/messageareas/ftn.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"FidoNet-Style Networks (FTN)","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/messageareas/message-networks.html b/messageareas/message-networks.html
index 4c1ba30f..69ef3973 100644
--- a/messageareas/message-networks.html
+++ b/messageareas/message-networks.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/message-networks.html"},"description":"Message Networks ENiGMA½ supports external networks such as FidoNet-Style (FTN) and QWK by the way of importing and exporting to/from it’s own internal format. This allows for a very flexible system that can easily be extended by creating new network modules.","url":"/enigma-bbs/messageareas/message-networks.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Networks","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/messageareas/netmail.html b/messageareas/netmail.html
index aeaa25dc..3f9bf18a 100644
--- a/messageareas/netmail.html
+++ b/messageareas/netmail.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/netmail.html"},"description":"ENiGMA support import and export of Netmail from the Private Mail area. RiPuk @ 21:1/136 and RiPuk <21:1/136> ‘To’ address formats are supported.","url":"/enigma-bbs/messageareas/netmail.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Netmail","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/messageareas/qwk.html b/messageareas/qwk.html
index e5891370..5a8e2b72 100644
--- a/messageareas/qwk.html
+++ b/messageareas/qwk.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/qwk.html"},"description":"QWK and QWK-Net Style Networks As like all other networks such as FidoNet-Style (FTN) networks, ENiGMA½ considers QWK external to the system but can import and export the format.","url":"/enigma-bbs/messageareas/qwk.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"QWK Support","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/misc/user-interrupt.html b/misc/user-interrupt.html
index 02e145c2..6d9f5996 100644
--- a/misc/user-interrupt.html
+++ b/misc/user-interrupt.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/misc/user-interrupt.html"},"description":"User Interruptions ENiGMA½ provides functionality to “interrupt” a user for various purposes such as a node-to-node message. User interruptions can be queued and displayed at the next opportune time such as when switching to a new menu, or realtime if appropriate.","url":"/enigma-bbs/misc/user-interrupt.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"User Interruptions","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/autosig-edit.html b/modding/autosig-edit.html
index a166961b..3deb25db 100644
--- a/modding/autosig-edit.html
+++ b/modding/autosig-edit.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/autosig-edit.html"},"description":"The Auto Signature Editor The built in autosig_edit module allows users to edit their auto signatures (AKA “autosig”).","url":"/enigma-bbs/modding/autosig-edit.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Auto Signature Editor","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/bbs-list.html b/modding/bbs-list.html
index 067482fd..c52af6d6 100644
--- a/modding/bbs-list.html
+++ b/modding/bbs-list.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/bbs-list.html"},"description":"The BBS List Module The built in bbs_list module provides the ability for users to manage entries to other Bulletin Board Systems.","url":"/enigma-bbs/modding/bbs-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"BBS List","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/door-servers.html b/modding/door-servers.html
index 569e4610..726831ef 100644
--- a/modding/door-servers.html
+++ b/modding/door-servers.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/door-servers.html"},"description":"The bbs_link Module Native support for BBSLink doors is provided via the bbs_link module.","url":"/enigma-bbs/modding/door-servers.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Door Servers","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/existing-mods.html b/modding/existing-mods.html
index a31370dc..47f503ba 100644
--- a/modding/existing-mods.html
+++ b/modding/existing-mods.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/existing-mods.html"},"description":"Many “addon” modules exist and have been released. Below are a few:","url":"/enigma-bbs/modding/existing-mods.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Existing Mods","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/file-area-list.html b/modding/file-area-list.html
index 87859e81..85f09ca4 100644
--- a/modding/file-area-list.html
+++ b/modding/file-area-list.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-area-list.html"},"description":"The File Area List Module The built in file_area_list module provides a very flexible file listing UI.","url":"/enigma-bbs/modding/file-area-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Area List","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/file-base-download-manager.html b/modding/file-base-download-manager.html
index 7afcf282..6deb88e0 100644
--- a/modding/file-base-download-manager.html
+++ b/modding/file-base-download-manager.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-base-download-manager.html"},"description":"File Base Download Manager Module The file_base_download_manager module provides a download queue manager for “legacy” (X/Y/Z-Modem, etc.) downloads. Web (HTTP/HTTPS) download functionality can be optionally available when the web content server is enabled.","url":"/enigma-bbs/modding/file-base-download-manager.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Base Download Manager","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/file-base-web-download-manager.html b/modding/file-base-web-download-manager.html
index f9e16aed..e03d25e1 100644
--- a/modding/file-base-web-download-manager.html
+++ b/modding/file-base-web-download-manager.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-base-web-download-manager.html"},"description":"File Base Web Download Manager Module The file_base_web_download_manager module provides a download queue manager for web (HTTP/HTTPS) based downloads. This module relies on having the web server enabled at a minimum.","url":"/enigma-bbs/modding/file-base-web-download-manager.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Base Web Download Manager","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/file-transfer-protocol-select.html b/modding/file-transfer-protocol-select.html
index 444272ca..f52e3d1c 100644
--- a/modding/file-transfer-protocol-select.html
+++ b/modding/file-transfer-protocol-select.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-transfer-protocol-select.html"},"description":"The Rumorz Module The built in file_transfer_protocol_select module provides a way to select a legacy file transfer protocol (X/Y/Z-Modem, etc.) for upload/downloads.","url":"/enigma-bbs/modding/file-transfer-protocol-select.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Transfer Protocol Select","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/last-callers.html b/modding/last-callers.html
index 116581bb..020bb5c5 100644
--- a/modding/last-callers.html
+++ b/modding/last-callers.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/last-callers.html"},"description":"The Last Callers Module The built in last_callers module provides flexible retro last callers mod.","url":"/enigma-bbs/modding/last-callers.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Last Callers","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/local-doors.html b/modding/local-doors.html
index c04bcdea..f3888609 100644
--- a/modding/local-doors.html
+++ b/modding/local-doors.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/local-doors.html"},"description":"Local Doors ENiGMA½ has many ways to add doors to your system. In addition to the many built in door server modules, local doors are of course also supported using the ! The abracadabra module!","url":"/enigma-bbs/modding/local-doors.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Local Doors","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/menu-modules.html b/modding/menu-modules.html
index 15946ba7..f8283c4a 100644
--- a/modding/menu-modules.html
+++ b/modding/menu-modules.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/menu-modules.html"},"description":"Menu Modules Menu entries found within menu.hjson are backed by menu modules.","url":"/enigma-bbs/modding/menu-modules.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Menu Modules","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/msg-area-list.html b/modding/msg-area-list.html
index 9a0c7df3..cd514b40 100644
--- a/modding/msg-area-list.html
+++ b/modding/msg-area-list.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/msg-area-list.html"},"description":"The Message Area List Module The built in msg_area_list module provides a menu to display and change between message areas in the users current conference.","url":"/enigma-bbs/modding/msg-area-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Area List","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/msg-conf-list.html b/modding/msg-conf-list.html
index 9af8d4b2..c4305f5a 100644
--- a/modding/msg-conf-list.html
+++ b/modding/msg-conf-list.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/msg-conf-list.html"},"description":"The Message Conference List Module The built in msg_conf_list module provides a menu to display and change between message conferences.","url":"/enigma-bbs/modding/msg-conf-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Conference List","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/node-msg.html b/modding/node-msg.html
index faab5926..962d70b9 100644
--- a/modding/node-msg.html
+++ b/modding/node-msg.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/node-msg.html"},"description":"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 rules.","url":"/enigma-bbs/modding/node-msg.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Node to Node Messaging","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/onelinerz.html b/modding/onelinerz.html
index 91f4372e..9c63dddd 100644
--- a/modding/onelinerz.html
+++ b/modding/onelinerz.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/onelinerz.html"},"description":"The Onelinerz Module The built in onelinerz module provides a retro onelinerz system.","url":"/enigma-bbs/modding/onelinerz.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Onelinerz","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/rumorz.html b/modding/rumorz.html
index f614e71e..21c1cc85 100644
--- a/modding/rumorz.html
+++ b/modding/rumorz.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/rumorz.html"},"description":"The Rumorz Module The built in rumorz module provides a classic interface for users to add and view rumorz!","url":"/enigma-bbs/modding/rumorz.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Rumorz","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/set-newscan-date.html b/modding/set-newscan-date.html
index 117c6ad0..bd59cf99 100644
--- a/modding/set-newscan-date.html
+++ b/modding/set-newscan-date.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/set-newscan-date.html"},"description":"Set Newscan Date Module The set_newscan_date module allows setting newscan dates (aka pointers) for message conferences and areas as well as within the file base. Users can select specific conferences/areas or all (where applicable).","url":"/enigma-bbs/modding/set-newscan-date.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Set Newscan Date Module","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/show-art.html b/modding/show-art.html
index 87d09916..5a96d87e 100644
--- a/modding/show-art.html
+++ b/modding/show-art.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/show-art.html"},"description":"The Show Art Module The built in show_art module add some advanced ways in which you can configure your system to display art assets beyond what a standard menu entry can provide. For example, based on user selection of a file or message base area.","url":"/enigma-bbs/modding/show-art.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"The Show Art Module","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/telnet-bridge.html b/modding/telnet-bridge.html
index a47e1325..a62010eb 100644
--- a/modding/telnet-bridge.html
+++ b/modding/telnet-bridge.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/telnet-bridge.html"},"description":"Telnet Bridge The telnet_bridge module allows “bridged” Telnet connections from your board to other Telnet services (such as other BBSes!).","url":"/enigma-bbs/modding/telnet-bridge.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Telnet Bridge","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/top-x.html b/modding/top-x.html
index df489b71..9b122ec1 100644
--- a/modding/top-x.html
+++ b/modding/top-x.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/top-x.html"},"description":"The TopX Module The built in top_x module allows for displaying oLDSKOOL (?!) top user stats for the week, month, etc. Ops can configure what stat(s) are displayed and how far back in days the stats are considered.","url":"/enigma-bbs/modding/top-x.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"TopX","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/user-2fa-otp-config.html b/modding/user-2fa-otp-config.html
index 77866244..4ae627e6 100644
--- a/modding/user-2fa-otp-config.html
+++ b/modding/user-2fa-otp-config.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/user-2fa-otp-config.html"},"description":"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 for more information.","url":"/enigma-bbs/modding/user-2fa-otp-config.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"2FA/OTP Config","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/user-list.html b/modding/user-list.html
index 9ee43f60..e1a300e4 100644
--- a/modding/user-list.html
+++ b/modding/user-list.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/user-list.html"},"description":"The User List Module The built in user_list module provides basic user list functionality.","url":"/enigma-bbs/modding/user-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"User List","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/modding/whos-online.html b/modding/whos-online.html
index 365e8dea..ce6be409 100644
--- a/modding/whos-online.html
+++ b/modding/whos-online.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/whos-online.html"},"description":"The Who’s Online Module The built in whos_online module provides a basic who’s online mod.","url":"/enigma-bbs/modding/whos-online.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Who’s Online","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/servers/contentservers/gopher.html b/servers/contentservers/gopher.html
index 07c0b61e..eae08135 100644
--- a/servers/contentservers/gopher.html
+++ b/servers/contentservers/gopher.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/contentservers/gopher.html"},"description":"The Gopher Content Server The Gopher content server provides access to publicly exposed message conferences and areas over Gopher (gopher://) as well as any other content you wish to serve in your Gopher Hole!","url":"/enigma-bbs/servers/contentservers/gopher.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Gopher Server","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/servers/contentservers/nntp.html b/servers/contentservers/nntp.html
index 232226ce..07af7499 100644
--- a/servers/contentservers/nntp.html
+++ b/servers/contentservers/nntp.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/contentservers/nntp.html"},"description":"The NNTP Content Server The NNTP content server provides access to publicly exposed message conferences and areas over either secure NNTPS (NNTP over TLS or nttps://) and/or non-secure NNTP (nntp://).","url":"/enigma-bbs/servers/contentservers/nntp.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"NNTP Server","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/servers/contentservers/web-server.html b/servers/contentservers/web-server.html
index 39fb87ff..17bce1a6 100644
--- a/servers/contentservers/web-server.html
+++ b/servers/contentservers/web-server.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/contentservers/web-server.html"},"description":"ENiGMA½ comes with a built in content server for supporting both HTTP and HTTPS. Currently the File Bases registers routes for file downloads, password reset email links are handled via the server, and static files can also be served for your BBS. Other features will likely come in the future or you can easily write your own!","url":"/enigma-bbs/servers/contentservers/web-server.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Web Server","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/servers/loginservers/ssh.html b/servers/loginservers/ssh.html
index 0de33d99..2cde9d1a 100644
--- a/servers/loginservers/ssh.html
+++ b/servers/loginservers/ssh.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/loginservers/ssh.html"},"description":"SSH Login Server The ENiGMA½ SSH login server allows secure user logins over SSH (ssh://).","url":"/enigma-bbs/servers/loginservers/ssh.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"SSH Server","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/servers/loginservers/telnet.html b/servers/loginservers/telnet.html
index ef1bfa96..dab03b4c 100644
--- a/servers/loginservers/telnet.html
+++ b/servers/loginservers/telnet.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/loginservers/telnet.html"},"description":"Telnet Login Server The Telnet login server provides a standard non-secure Telnet login experience.","url":"/enigma-bbs/servers/loginservers/telnet.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Telnet Server","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/servers/loginservers/websocket.html b/servers/loginservers/websocket.html
index a7224a86..a94a4458 100644
--- a/servers/loginservers/websocket.html
+++ b/servers/loginservers/websocket.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/loginservers/websocket.html"},"description":"WebSocket Login Server The WebSocket Login Server provides secure (wss://) as well as non-secure (ws://) WebSocket login access. This is often combined with a browser based WebSocket client such as VTX or fTelnet.","url":"/enigma-bbs/servers/loginservers/websocket.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Web Socket / Web Interface Server","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}
diff --git a/sitemap.xml b/sitemap.xml
index 9ed14028..ee672f9e 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -2,343 +2,343 @@
/enigma-bbs/installation/installation-methods.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/install-script.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/docker.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/manual.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/hardware/rpi.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/hardware/windows.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/network.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/testing.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/installation/production.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/creating-config.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/sysop-setup.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/config-files.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/config-hjson.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/hjson.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/menu-hjson.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/directory-structure.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/external-binaries.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/archivers.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/file-transfer-protocols.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/email.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/colour-codes.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/event-scheduler.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/acs.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/configuration/security.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/misc/user-interrupt.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/first-file-area.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/acs.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/uploads.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/web-access.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/tic-support.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/filebase/network-mounts-and-symlinks.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/messageareas/configuring-a-message-area.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/messageareas/message-networks.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/messageareas/bso-import-export.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/messageareas/netmail.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/messageareas/qwk.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/messageareas/ftn.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/general.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/themes.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/mci.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/button_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/edit_text_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/full_menu_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/horizontal_menu_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/mask_edit_text_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/multi_line_edit_text_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/predefined_label_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/spinner_menu_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/text_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/toggle_menu_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/art/views/vertical_menu_view.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/servers/loginservers/telnet.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/servers/loginservers/ssh.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/servers/loginservers/websocket.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/servers/contentservers/web-server.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/servers/contentservers/gopher.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/servers/contentservers/nntp.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/local-doors.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/door-servers.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/telnet-bridge.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/existing-mods.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/file-area-list.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/last-callers.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/whos-online.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/user-list.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/msg-conf-list.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/msg-area-list.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/bbs-list.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/rumorz.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/file-transfer-protocol-select.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/onelinerz.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/show-art.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/file-base-download-manager.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/file-base-web-download-manager.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/set-newscan-date.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/node-msg.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/top-x.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/user-2fa-otp-config.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/autosig-edit.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/modding/menu-modules.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/admin/administration.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/admin/oputil.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/admin/updating.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/troubleshooting/monitoring-logs.html
-2022-07-12T05:19:33+00:00
+2022-08-01T21:06:07+00:00
/enigma-bbs/
diff --git a/troubleshooting/monitoring-logs.html b/troubleshooting/monitoring-logs.html
index e4efdaa0..93dfd0b7 100644
--- a/troubleshooting/monitoring-logs.html
+++ b/troubleshooting/monitoring-logs.html
@@ -17,11 +17,11 @@
-
+
+{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/troubleshooting/monitoring-logs.html"},"description":"Monitoring Logs ENiGMA½ does not produce much to stdout. Logs are produced by Bunyan which outputs each entry as a JSON object.","url":"/enigma-bbs/troubleshooting/monitoring-logs.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Monitoring Logs","dateModified":"2022-08-01T21:06:07+00:00","datePublished":"2022-08-01T21:06:07+00:00","@context":"https://schema.org"}