diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index b6d1464a..00000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,16 +0,0 @@
-For :bug: bug reports, please fill out the information below plus any additional relevant information. If this is a feature request, feel free to clear the form.
-
-**Short problem description**
-
-**Environment**
-- [ ] I am using Node.js v12.x LTS or higher
-- [ ] `npm install` or `yarn` reports success
-- Actual Node.js version (`node --version`):
-- Operating system (`uname -a` on *nix systems):
-- Revision (`git rev-parse --short HEAD`):
-
-**Expected behavior**
-
-**Actual behavior**
-
-**Steps to reproduce**
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 00000000..91f99583
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,30 @@
+---
+name: Bug report
+about: Help improve ENiGMA½!
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Describe the Bug**
+A clear and concise description of what the :bug: bug is.
+
+**To Reproduce**
+Any relevant steps to reproduce the behavior:
+
+**Expected Behavior**
+A clear and concise description of what you expected to happen.
+
+**Actual Behavior**
+
+**Screenshots**
+If applicable, add screenshots to help explain your problem.
+
+**Environment**
+* [ ] I am using Node.js v12.x LTS or higher
+* [ ] `npm install` or `yarn` reports success
+* Actual Node.js version (`node --version`):
+* Operating system (`uname -a` on *nix systems):
+* Revision (`git rev-parse --short HEAD`):
+* Any additional relevant information about your setup
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 00000000..011200ae
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,20 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here. Links to relevant specs such as FTN or documentation are appreciated if relevant.
diff --git a/README.md b/README.md
index 4137ae0d..a3013a0c 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,6 @@
ENiGMA½ is a modern BBS software with a nostalgic flair!
-
## Features Available Now
* Multi platform: Anywhere [Node.js](https://nodejs.org/) runs likely works (known to work under Linux, FreeBSD, OpenBSD, OS X and Windows)
* Unlimited multi node support (for all those BBS "callers"!)
@@ -26,16 +25,23 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
* ANSI support in the Full Screen Editor (FSE), file descriptions, etc.
* A built in achievement system. BBSing gamified!
+ ...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.
-## In the Works
-Many more features are in the pipeline. Checkout the [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues) and feel free to request features (or contribute!) features.
+## Installation
+On most *nix systems simply run the following from your terminal:
+```
+curl -o- https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh | bash
+```
-## Known Issues
-As of now this is considered **beta** code! Please **expect bugs** :bug: -- and when you find them, log issues and/or submit pull requests. With that said, the code is actually quite stable and is used by a number of boards.
+Please see [Installation Methods](https://nuskooler.github.io/enigma-bbs/installation/installation-methods.html) for Windows, Docker, and so on...
-See [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues) for more information.
+## Donating
+If you feel the urge to donate, [you can do so here](https://liberapay.com/NuSkooler/donate)
+
+
## Support
* Use [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues)
@@ -60,14 +66,6 @@ ENiGMA has been tested with many terminals. However, the following are suggested
* [PlaneT Afr0](https://planetafr0.org/): (**ssh://planetafr0.org:8889**)
* [Goblin Studio](https://goblin.strangled.net): (**ssh://goblin.strangled.net:8889**)
-## Installation
-On *nix type systems:
-```
-curl -o- https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh | bash
-```
-
-Please see [Installation Methods](https://nuskooler.github.io/enigma-bbs/installation/installation-methods.html) for Windows, Docker, and so on...
-
## Special Thanks
* [Dave Stephens aka RiPuk](https://github.com/davestephens) for the awesome [ENiGMA website](https://enigma-bbs.github.io/) and [KICK ASS documentation](https://nuskooler.github.io/enigma-bbs/), code contributions, etc.
* [Daniel Mecklenburg Jr.](https://github.com/codewar65) for the awesome VTX terminal and general coding talk
@@ -83,6 +81,10 @@ Please see [Installation Methods](https://nuskooler.github.io/enigma-bbs/install
* [nail/blocktronics](http://blocktronics.org/tag/nail/) for the [sickmade Xibalba logo](http://pc.textmod.es/pack/blocktronics-420/n-xbalba.ans)!
* [Whazzit/blocktronics](http://blocktronics.org/tag/whazzit/) for the amazing Mayan ANSI pieces scattered about Xibalba BBS!
* [Smooth](https://16colo.rs/tags/artist/smooth)/[fUEL](https://fuel.wtf/) for lots of dope art. Why not [snag a T-Shirt](https://www.redbubble.com/people/araknet/works/39126831-enigma-1-2-software-logo-design-by-smooth-of-fuel?p=t-shirt)?
+* Al's Geek Lab for the [installation video](https://youtu.be/WnN-ucVi3ZU)!
+* Alpha for the [FTN-style configuration guide](https://medium.com/@alpha_11845/setting-up-ftn-style-message-networks-with-enigma%C2%BD-bbs-709b22a1ae0d)!
+
+...and so many others! This project would be nothing without the BBS and artscene communities!
## License
Released under the [BSD 2-clause](https://opensource.org/licenses/BSD-2-Clause) license:
diff --git a/art/themes/luciano_blocktronics/MMENU.ANS b/art/themes/luciano_blocktronics/MMENU.ANS
index 9db39ca9..28792570 100644
Binary files a/art/themes/luciano_blocktronics/MMENU.ANS and b/art/themes/luciano_blocktronics/MMENU.ANS differ
diff --git a/core/ftn_util.js b/core/ftn_util.js
index 9d53c9a3..9a171a52 100644
--- a/core/ftn_util.js
+++ b/core/ftn_util.js
@@ -375,14 +375,8 @@ function getCharacterSetIdentifierByEncoding(encodingName) {
return value ? `${value[0]} ${value[1]}` : encodingName.toUpperCase();
}
-// http://ftsc.org/docs/fts-5003.001
-// http://www.unicode.org/L2/L1999/99325-N.htm
-function getEncodingFromCharacterSetIdentifier(chrs) {
- const ident = chrs.split(' ')[0].toUpperCase();
-
- // :TODO: fill in the rest!!!
- return {
- // level 1
+const CHRSToEncodingTable = {
+ Level1 : {
'ASCII' : 'ascii', // ISO-646-1
'DUTCH' : 'ascii', // ISO-646
'FINNISH' : 'ascii', // ISO-646-10
@@ -397,8 +391,8 @@ function getEncodingFromCharacterSetIdentifier(chrs) {
'SWISS' : 'ascii', // ISO-646
'UK' : 'ascii', // ISO-646
'ISO-10' : 'ascii', // ISO-646-10
-
- // level 2
+ },
+ Level2 : {
'CP437' : 'cp437',
'CP850' : 'cp850',
'CP852' : 'cp852',
@@ -412,15 +406,52 @@ function getEncodingFromCharacterSetIdentifier(chrs) {
'LATIN-2' : 'iso-8859-2',
'LATIN-5' : 'iso-8859-9',
'LATIN-9' : 'iso-8859-15',
+ },
- // level 4
+ Level4 : {
'UTF-8' : 'utf8',
+ },
- // deprecated stuff
+ DeprecatedMisc : {
'IBMPC' : 'cp1250', // :TODO: validate
'+7_FIDO' : 'cp866',
'+7' : 'cp866',
'MAC' : 'macroman', // :TODO: validate
+ }
+};
- }[ident];
-}
\ No newline at end of file
+// Given 1:N CHRS kludge IDs, try to pick the best encoding we can
+// http://ftsc.org/docs/fts-5003.001
+// http://www.unicode.org/L2/L1999/99325-N.htm
+function getEncodingFromCharacterSetIdentifier(chrs) {
+ if (!Array.isArray(chrs)) {
+ chrs = [ chrs ];
+ }
+
+ const encLevel = (ident, table, level) => {
+ const enc = table[ident];
+ if (enc) {
+ return { enc, level };
+ }
+ };
+
+ const mapping = [];
+ chrs.forEach(c => {
+ const ident = c.split(' ')[0].toUpperCase();
+ const mapped =
+ encLevel(ident, CHRSToEncodingTable.Level1, 2) ||
+ encLevel(ident, CHRSToEncodingTable.Level2, 1) ||
+ encLevel(ident, CHRSToEncodingTable.Level4, 0) ||
+ encLevel(ident, CHRSToEncodingTable.DeprecatedMisc, 3);
+
+ if (mapped) {
+ mapping.push(mapped);
+ }
+ });
+
+ mapping.sort( (l, r) => {
+ return l.level - r.level;
+ });
+
+ return mapping[0] && mapping[0].enc;
+}
diff --git a/core/oputil/oputil_config.js b/core/oputil/oputil_config.js
index b1490c28..bcd6529f 100644
--- a/core/oputil/oputil_config.js
+++ b/core/oputil/oputil_config.js
@@ -224,9 +224,13 @@ const copyFileSyncSilent = (to, from, flags) => {
function buildNewConfig() {
askNewConfigQuestions( (err, configPath, config) => {
- if(err) { return;
+ if(err) {
+ return err;
}
+ // ensure 'menus' exists
+ mkdirsSync(paths.join(__dirname, '../../config/menus'));
+
const boardName = sanatizeFilename(config.general.boardName)
.replace(/[^a-z0-9_-]/ig, '_')
.replace(/_+/g, '_')
diff --git a/core/qwk_mail_packet.js b/core/qwk_mail_packet.js
index 6bdfe8ad..eab57eb7 100644
--- a/core/qwk_mail_packet.js
+++ b/core/qwk_mail_packet.js
@@ -1089,7 +1089,7 @@ class QWKPacketWriter extends EventEmitter {
// indicator such as FTN-style CHRS, try to use that.
encoding = _.get(message.meta, 'FtnKludge.CHRS');
if (encoding) {
- // convert from CHRS to something standard
+ // Convert from CHRS to something standard
encoding = getEncodingFromCharacterSetIdentifier(encoding);
if (encoding) {
return encoding;
diff --git a/docs/index.md b/docs/index.md
index edeab5a6..1f5eba1d 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -10,18 +10,21 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
## Features Available Now
* Multi platform: Anywhere [Node.js](https://nodejs.org/) runs likely works (known to work under Linux, FreeBSD, OpenBSD, OS X and Windows)
* Unlimited multi node support (for all those BBS "callers"!)
- * **Highly** customizable via [HJSON](http://hjson.org/) based configuration, menus, and themes in addition to JavaScript based [mods](modding/)
- * [MCI support](art/mci.md) for lightbars, toggles, input areas, and so on plus many other other bells and whistles
+ * **Highly** customizable via [HJSON](http://hjson.org/) based configuration, menus, and themes in addition to JavaScript based [mods](docs/modding/existing-mods.md)
+ * [MCI support](docs/art/mci.md) for lightbars, toggles, input areas, and so on plus many other other bells and whistles
* Telnet, **SSH**, and both secure and non-secure [WebSocket](https://en.wikipedia.org/wiki/WebSocket) access built in! Additional servers are easy to implement
* [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
- * [SQLite](http://sqlite.org/) storage of users, message areas, and so on
- * Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption
- * [Door support](modding/local-doors.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), [Exodus](https://oddnetwork.org/exodus/) and [CombatNet](http://combatnet.us/) support!
- * [Bunyan](https://github.com/trentm/node-bunyan) logging
- * [Message networks](messageareas/message_networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export
- * [Gazelle](https://github.com/WhatCD/Gazelle) inspired File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](servers/web-server.md). Legacy X/Y/Z modem also supported!
+ * [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).
+ * [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
+ * [Door support](docs/modding/door-servers.md) including common dropfile formats for legacy DOS doors. Built in [BBSLink](http://bbslink.net/), [DoorParty](http://forums.throwbackbbs.com/), [Exodus](https://oddnetwork.org/exodus/) and [CombatNet](http://combatnet.us/) support!
+ * [Bunyan](https://github.com/trentm/node-bunyan) logging!
+ * [Message networks](docs/messageareas/message-networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export. Messages Bases can also be exposed via [Gopher](docs/servers/gopher.md), or [NNTP](docs/servers/nntp.md)!
+ * [Gazelle](https://github.com/WhatCD/Gazelle) inspired File Bases including fast fully indexed full text search (FTS), #tags, and HTTP(S) temporary download URLs using a built in [web server](docs/servers/web-server.md). Legacy X/Y/Z modem also supported!
* Upload processor supporting [FILE_ID.DIZ](https://en.wikipedia.org/wiki/FILE_ID.DIZ) and [NFO](https://en.wikipedia.org/wiki/.nfo) extraction, year estimation, and more!
- * ANSI support in the Full Screen Editor (FSE), file descriptions, and so on
+ * ANSI support in the Full Screen Editor (FSE), file descriptions, etc.
+ * A built in achievement system. BBSing gamified!
+
diff --git a/docs/installation/docker.md b/docs/installation/docker.md
index 82e03e5c..4071a018 100644
--- a/docs/installation/docker.md
+++ b/docs/installation/docker.md
@@ -2,20 +2,21 @@
layout: page
title: Docker
---
-**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
+**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](https://docs.docker.com/engine/installation/).**
## Quick Start
-
-Download and run the ENiGMA½ BBS image:
+Download and run the ENiGMA½ BBS image:
docker run -d \
-p 8888:8888 \
davestephens/enigma-bbs:latest
-As no config has been supplied the container will use a basic one so that it starts successfully. Note that as no persistence
-directory has been supplied, once the container stops any changes made will be lost!
+:information_source: This is a **very basic** example! As no config has been supplied the container will use a basic one so that it starts successfully. Note that as no persistence directory has been supplied, once the container stops any changes made will be lost!
-## Customised Docker Setup
+:information_source: [Volumes](https://docs.docker.com/storage/volumes/) may be used for things such as your configuration and database path.
+## Customized Docker Setup
TBC using Docker Compose
+
+:pencil: This area is looking for contributors!
diff --git a/docs/installation/install-script.md b/docs/installation/install-script.md
index 2f92db79..56da80cf 100644
--- a/docs/installation/install-script.md
+++ b/docs/installation/install-script.md
@@ -9,10 +9,10 @@ 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
```
-You may review the [installation script](https://raw.githubusercontent.com/NuSkooler/enigma-bbs/master/misc/install.sh)
-on GitHub before running it.
+:information_source: 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 6 and grab the latest ENiGMA BBS from GitHub. It will also guide you through creating a basic configuration file, and recommend some packages to install.
+The script will install `nvm`, Node.js and grab the latest ENiGMA BBS from GitHub. It will also guide you through creating a basic configuration file, and recommend some packages to install.
After installing, see [Updating](/docs/admin/updating.md).
diff --git a/docs/installation/installation-methods.md b/docs/installation/installation-methods.md
index 5d751ea0..1b2f64e4 100644
--- a/docs/installation/installation-methods.md
+++ b/docs/installation/installation-methods.md
@@ -3,14 +3,16 @@ layout: page
title: Installation Methods
---
## 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.
+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.
| Method | Operating System Compatibility | Notes |
|--------|--------------------------------|-------|
| [Installation Script](install-script.md) | Linux, BSD, OSX | Quick and easy installation under most Linux/UNIX like environments (Linux, BSD, OS X, ...) |
| [Docker Images](docker.md) | Linux, BSD, OSX, Windows | Easy upgrades, compatible with all operating systems, no dependencies to install |
-| [Manual](manual.md) | Linux, Windows (probably others but untested! | If you like doing things manually, or are running Windows |
+| [Manual](manual.md) | Linux, Windows, BSD (And others; YMMV!) | If you like doing things manually, or are running Windows |
+
+## Community HOWTO's
+: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
diff --git a/docs/installation/manual.md b/docs/installation/manual.md
index 0965a870..46fc301d 100644
--- a/docs/installation/manual.md
+++ b/docs/installation/manual.md
@@ -6,17 +6,16 @@ For Linux environments it's recommended you run the [install script](install-scr
do things manually, read on...
## Prerequisites
-* [Node.js](https://nodejs.org/) version **v10.x LTS or higher** (Note that 8.x LTS *probably* works but is unsupported).
- * :information_source: It is **highly** recommended to use [nvm](https://github.com/creationix/nvm) to manage your
- Node.js installation if you're on a Linux/Unix environment.
+* [Node.js](https://nodejs.org/) version **v12.x LTS or higher** (Other versions may work but are not supported).
+ * :information_source: It is **highly** recommended to use [Node Version Manager (NVM)](https://github.com/creationix/nvm) to manage your Node.js installation if you're on a Linux/Unix environment.
-* [Python](https://www.python.org/downloads/) 2.7.x for compiling Node.js packages with native extensions.
+* [Python](https://www.python.org/downloads/) for compiling Node.js packages with native extensions via `node-gyp`.
* A compiler such as Clang or GCC for Linux/UNIX systems or a recent copy of Visual Studio
([Visual Studio Express](https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx) editions
are OK) for Windows users. Note that you **should only need the Visual C++ component**.
-* [git](https://git-scm.com/downloads) to check out the ENiGMA source code.
+* [Git](https://git-scm.com/downloads) to check out the ENiGMA source code.
## Node.js
### With NVM
@@ -29,9 +28,9 @@ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh |
Next, install Node.js with NVM:
```bash
-nvm install 10
-nvm use 10
-nvm alias default 10
+nvm install 12
+nvm use 12
+nvm alias default 12
```
If the above steps completed without errors, you should now have `nvm`, `node`, and `npm` installed and in your environment.
@@ -64,6 +63,8 @@ ENiGMA BBS makes use of a few packages for archive and legacy protocol support.
| exiftool | [ExifTool](https://www.sno.phy.queensu.ca/~phil/exiftool/) | libimage-exiftool-perl | perl-Image-ExifTool | Unknown
| xdms | Unpack/view Amiga DMS | [xdms](http://manpages.ubuntu.com/manpages/trusty/man1/xdms.1.html) | xdms | Unknown
+:information_source: Please see also [Archivers](/docs/configuration/archivers.md) and [File Transfer Protocols](/docs/configuration/file-transfer-protocols.md) for additional recommended binaries and configuration.
+
## 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.
diff --git a/docs/messageareas/configuring-a-message-area.md b/docs/messageareas/configuring-a-message-area.md
index 444cb091..394b3aa6 100644
--- a/docs/messageareas/configuring-a-message-area.md
+++ b/docs/messageareas/configuring-a-message-area.md
@@ -55,6 +55,7 @@ Message Areas are topic specific containers for messages that live within a part
| `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. |
| `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:
diff --git a/docs/messageareas/ftn.md b/docs/messageareas/ftn.md
index 34f90862..54face6b 100644
--- a/docs/messageareas/ftn.md
+++ b/docs/messageareas/ftn.md
@@ -6,6 +6,8 @@ title: FidoNet-Style Networks (FTN)
## FidoNet-Style Networks (FTN)
[FidoNet](https://en.wikipedia.org/wiki/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!
+:scroll: Before proceeding you may wish to check [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. An excellent guide detailing some of the setup described here!
+
### Configuration
Getting a fully running FTN enabled system requires a few configuration points:
diff --git a/misc/install.sh b/misc/install.sh
index ed81d205..741c4585 100755
--- a/misc/install.sh
+++ b/misc/install.sh
@@ -12,7 +12,7 @@ WAIT_BEFORE_INSTALL=10
enigma_header() {
clear
cat << EndOfMessage
- ______
+ ______
_____________________ _____ ____________________ __________\\_ /
\\__ ____/\\_ ____ \\ /____/ / _____ __ \\ / ______/ // /___jp!
// __|___// | \\// |// | \\// | | \\// \\ /___ /_____
@@ -21,14 +21,24 @@ _____________________ _____ ____________________ __________\\_ /
/__ _\\
<*> ENiGMA½ // https://github.com/NuSkooler/enigma-bbs <*> /__/
-ENiGMA½ will be installed to ${ENIGMA_INSTALL_DIR}, from source ${ENIGMA_SOURCE}, branch ${ENIGMA_BRANCH}.
-ENiGMA½ requires Node.js. Version ${ENIGMA_NODE_VERSION}.x current will be installed via nvm. If you already have nvm installed, this install script will update it to the latest version.
+Installing ENiGMA½:
+ Source : ${ENIGMA_SOURCE} (${ENIGMA_BRANCH} branch)
+ Destination: ${ENIGMA_INSTALL_DIR}
+ Node.js : ${ENIGMA_NODE_VERSION}.x via NVM (If you have NVM it will be updated to the latest version)
-If this isn't what you were expecting, hit CTRL-C now. Installation will continue in ${WAIT_BEFORE_INSTALL} seconds...
+>> If this isn't what you were expecting, hit CTRL-C now!
+>> Installation will continue in ${WAIT_BEFORE_INSTALL} seconds...
EndOfMessage
- sleep ${WAIT_BEFORE_INSTALL}
+
+ SECS=10
+ while [ $SECS -gt 0 ]; do
+ echo -ne "${SECS}... "
+ sleep 1
+ ((SECS --))
+ done
+ echo ""
}
fatal_error() {
@@ -36,9 +46,32 @@ fatal_error() {
exit 1
}
+check_exists() {
+ command -v $1 >/dev/null 2>&1 ;
+}
+
+enigma_install_needs_ex() {
+ echo -ne "Checking for '$1'..."
+ if check_exists $1 ; then
+ echo " Found!"
+ else
+ echo ""
+ fatal_error "ENiGMA½ requires '$1' but it was not found. Please install it and/or make sure it is in your path then restart the installer.\n\n$2"
+ fi
+}
+
+enigma_install_needs_python() {
+ echo -ne "Checking for a suitable Python installation..."
+ if check_exists "python" || check_exists "python7" || check_exists "python3" ; then
+ echo " Found!"
+ else
+ echo ""
+ fatal_error "ENiGMA½ requires Python for node-gyp to build binaries. Please see https://www.npmjs.com/package/node-gyp for details."
+ fi
+}
+
enigma_install_needs() {
- echo "Checking $1 installation"
- command -v $1 >/dev/null 2>&1 || fatal_error "ENiGMA½ requires $1 but it's not installed. Please install it and restart the installer."
+ enigma_install_needs_ex $1 "Examples:\n sudo apt install $1 # Debian/Ubuntu\n sudo yum install $1 # CentOS"
}
log() {
@@ -48,7 +81,8 @@ log() {
enigma_install_init() {
enigma_install_needs git
enigma_install_needs curl
- enigma_install_needs python
+ enigma_install_needs_python
+ enigma_install_needs_ex make "Examples:\n sudo apt install build-essential # Debian/Ubuntu\n sudo yum groupinstall 'Development Tools' # CentOS"
enigma_install_needs make
enigma_install_needs gcc
}
@@ -114,14 +148,21 @@ install_node_packages() {
enigma_footer() {
log "ENiGMA½ installation complete!"
- echo -e "\e[33m"
+ echo -e "\e[1;33m"
cat << EndOfMessage
-If this is the first time you've installed ENiGMA½, you now need to generate a minimal configuration. To do so, run the following commands (note: if you did not already have node.js installed, you may need to log out/back in to refresh your path):
+
+ADDITIONAL ACTIONS ARE REQUIRED!
+--------------------------------
+
+1 - If you did not have Node.js and/or NVM installed previous to this please open a new shell/terminal now!
+ (!) Not doing so will prevent 'nvm' or 'node' commands from functioning!
+
+2 - If this is the first time you've installed ENiGMA½, you now need to generate a minimal configuration:
cd ${ENIGMA_INSTALL_DIR}
./oputil.js config new
-Additionally, the following support binaires are recommended:
+3 - Additionally, a minimum of the following support binaires are recommended:
7zip: Archive support
Debian/Ubuntu : apt-get install p7zip
CentOS : yum install p7zip
@@ -136,7 +177,7 @@ Additionally, the following support binaires are recommended:
Debian/Ubuntu : apt-get install lrzsz
CentOS : yum install lrzsz
- See docs for more information!
+ See docs for more information including other useful binaries!
EndOfMessage
echo -e "\e[39m"