Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs into 216-waiting-for-caller

This commit is contained in:
Bryan Ashby 2020-11-08 17:34:39 -07:00
commit 89ecbdddb0
No known key found for this signature in database
GPG Key ID: B49EB437951D2542
16 changed files with 212 additions and 90 deletions

View File

@ -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**

30
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -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

View File

@ -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.

View File

@ -4,7 +4,6 @@
ENiGMA½ is a modern BBS software with a nostalgic flair! ENiGMA½ is a modern BBS software with a nostalgic flair!
## Features Available Now ## 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) * 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"!) * 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. * ANSI support in the Full Screen Editor (FSE), file descriptions, etc.
* A built in achievement system. BBSing gamified! * 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 ## Documentation
[Browse the docs online](https://nuskooler.github.io/enigma-bbs/). Be sure to checkout the [/docs/](/docs/) folder as well for the latest and greatest documentation. [Browse the docs online](https://nuskooler.github.io/enigma-bbs/). Be sure to checkout the [/docs/](/docs/) folder as well for the latest and greatest documentation.
## In the Works ## Installation
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. 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 Please see [Installation Methods](https://nuskooler.github.io/enigma-bbs/installation/installation-methods.html) for Windows, Docker, and so on...
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.
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)<br/>
<a href="https://liberapay.com/NuSkooler/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a>
## Support ## Support
* Use [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues) * 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**) * [PlaneT Afr0](https://planetafr0.org/): (**ssh://planetafr0.org:8889**)
* [Goblin Studio](https://goblin.strangled.net): (**ssh://goblin.strangled.net: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 ## 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. * [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 * [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)! * [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! * [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)? * [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 ## License
Released under the [BSD 2-clause](https://opensource.org/licenses/BSD-2-Clause) license: Released under the [BSD 2-clause](https://opensource.org/licenses/BSD-2-Clause) license:

View File

@ -375,14 +375,8 @@ function getCharacterSetIdentifierByEncoding(encodingName) {
return value ? `${value[0]} ${value[1]}` : encodingName.toUpperCase(); return value ? `${value[0]} ${value[1]}` : encodingName.toUpperCase();
} }
// http://ftsc.org/docs/fts-5003.001 const CHRSToEncodingTable = {
// http://www.unicode.org/L2/L1999/99325-N.htm Level1 : {
function getEncodingFromCharacterSetIdentifier(chrs) {
const ident = chrs.split(' ')[0].toUpperCase();
// :TODO: fill in the rest!!!
return {
// level 1
'ASCII' : 'ascii', // ISO-646-1 'ASCII' : 'ascii', // ISO-646-1
'DUTCH' : 'ascii', // ISO-646 'DUTCH' : 'ascii', // ISO-646
'FINNISH' : 'ascii', // ISO-646-10 'FINNISH' : 'ascii', // ISO-646-10
@ -397,8 +391,8 @@ function getEncodingFromCharacterSetIdentifier(chrs) {
'SWISS' : 'ascii', // ISO-646 'SWISS' : 'ascii', // ISO-646
'UK' : 'ascii', // ISO-646 'UK' : 'ascii', // ISO-646
'ISO-10' : 'ascii', // ISO-646-10 'ISO-10' : 'ascii', // ISO-646-10
},
// level 2 Level2 : {
'CP437' : 'cp437', 'CP437' : 'cp437',
'CP850' : 'cp850', 'CP850' : 'cp850',
'CP852' : 'cp852', 'CP852' : 'cp852',
@ -412,15 +406,52 @@ function getEncodingFromCharacterSetIdentifier(chrs) {
'LATIN-2' : 'iso-8859-2', 'LATIN-2' : 'iso-8859-2',
'LATIN-5' : 'iso-8859-9', 'LATIN-5' : 'iso-8859-9',
'LATIN-9' : 'iso-8859-15', 'LATIN-9' : 'iso-8859-15',
},
// level 4 Level4 : {
'UTF-8' : 'utf8', 'UTF-8' : 'utf8',
},
// deprecated stuff DeprecatedMisc : {
'IBMPC' : 'cp1250', // :TODO: validate 'IBMPC' : 'cp1250', // :TODO: validate
'+7_FIDO' : 'cp866', '+7_FIDO' : 'cp866',
'+7' : 'cp866', '+7' : 'cp866',
'MAC' : 'macroman', // :TODO: validate 'MAC' : 'macroman', // :TODO: validate
}
};
}[ident]; // 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;
}

View File

@ -224,9 +224,13 @@ const copyFileSyncSilent = (to, from, flags) => {
function buildNewConfig() { function buildNewConfig() {
askNewConfigQuestions( (err, configPath, config) => { 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) const boardName = sanatizeFilename(config.general.boardName)
.replace(/[^a-z0-9_-]/ig, '_') .replace(/[^a-z0-9_-]/ig, '_')
.replace(/_+/g, '_') .replace(/_+/g, '_')

View File

@ -1089,7 +1089,7 @@ class QWKPacketWriter extends EventEmitter {
// indicator such as FTN-style CHRS, try to use that. // indicator such as FTN-style CHRS, try to use that.
encoding = _.get(message.meta, 'FtnKludge.CHRS'); encoding = _.get(message.meta, 'FtnKludge.CHRS');
if (encoding) { if (encoding) {
// convert from CHRS to something standard // Convert from CHRS to something standard
encoding = getEncodingFromCharacterSetIdentifier(encoding); encoding = getEncodingFromCharacterSetIdentifier(encoding);
if (encoding) { if (encoding) {
return encoding; return encoding;

View File

@ -10,18 +10,21 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
## Features Available Now ## 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) * 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"!) * 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/) * **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](art/mci.md) for lightbars, toggles, input areas, and so on plus many other other bells and whistles * [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 * 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 * [CP437](http://www.ascii-codes.com/) and UTF-8 output
* [SyncTerm](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior * [SyncTERM](http://syncterm.bbsdev.net/) style font and baud emulation support. Display PC/DOS and Amiga style artwork as it's intended! In general, ANSI-BBS / [cterm.txt](http://cvs.synchro.net/cgi-bin/viewcvs.cgi/*checkout*/src/conio/cterm.txt?content-type=text%2Fplain&revision=HEAD) / [bansi.txt](http://www.bbsdocumentary.com/library/PROGRAMS/GRAPHICS/ANSI/bansi.txt) are followed for expected BBS behavior.
* Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support * Full [SAUCE](http://www.acid.org/info/sauce/sauce.htm) support.
* Renegade style pipe color codes * Renegade style [pipe color codes](/docs/configuration/colour-codes.md).
* [SQLite](http://sqlite.org/) storage of users, message areas, and so on * [SQLite](http://sqlite.org/) storage of users, message areas, etc.
* Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption * Strong [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) backed password encryption.
* [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! * Support for 2-Factor Authentication with One-Time-Passwords
* [Bunyan](https://github.com/trentm/node-bunyan) logging * [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!
* [Message networks](messageareas/message_networks.md) with FidoNet Type Network (FTN) + BinkleyTerm Style Outbound (BSO) message import/export * [Bunyan](https://github.com/trentm/node-bunyan) logging!
* [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! * [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! * 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!

View File

@ -2,20 +2,21 @@
layout: page layout: page
title: Docker 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/).** for every operating system on the [Docker website](https://docs.docker.com/engine/installation/).**
## Quick Start ## Quick Start
Download and run the ENiGMA½ BBS image:
Download and run the ENiGMA½ BBS image:
docker run -d \ docker run -d \
-p 8888:8888 \ -p 8888:8888 \
davestephens/enigma-bbs:latest 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 :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!
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 TBC using Docker Compose
:pencil: This area is looking for contributors!

View File

@ -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 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) :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. 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). After installing, see [Updating](/docs/admin/updating.md).

View File

@ -3,14 +3,16 @@ layout: page
title: Installation Methods title: Installation Methods
--- ---
## Installation Methods ## Installation Methods
There are multiple ways of installing ENiGMA BBS, depending on your level of experience and desire to do 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.
things manually versus have it automated for you.
| Method | Operating System Compatibility | Notes | | 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, ...) | | [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 | | [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 ## Keeping Up To Date
After installing, you'll want to [keep your system updated](/docs/admin/updating.md). After installing, you'll want to [keep your system updated](/docs/admin/updating.md).

View File

@ -6,17 +6,16 @@ For Linux environments it's recommended you run the [install script](install-scr
do things manually, read on... do things manually, read on...
## Prerequisites ## Prerequisites
* [Node.js](https://nodejs.org/) version **v10.x LTS or higher** (Note that 8.x LTS *probably* works but is unsupported). * [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 [nvm](https://github.com/creationix/nvm) to manage your * :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.
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 * 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 ([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**. 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 ## Node.js
### With NVM ### 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: Next, install Node.js with NVM:
```bash ```bash
nvm install 10 nvm install 12
nvm use 10 nvm use 12
nvm alias default 10 nvm alias default 12
``` ```
If the above steps completed without errors, you should now have `nvm`, `node`, and `npm` installed and in your environment. 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 | 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 | 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 ## Config Files
You'll need a basic configuration to get started. The main system configuration is handled via `config/config.hjson`. This is an [HJSON](http://hjson.org/) file (compiliant JSON is also OK). See [Configuration](../configuration/) for more information. You'll need a basic configuration to get started. The main system configuration is handled via `config/config.hjson`. This is an [HJSON](http://hjson.org/) file (compiliant JSON is also OK). See [Configuration](../configuration/) for more information.

View File

@ -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) | | `default` | :-1: | Specify `true` to make this the default area (e.g. assigned to new users) |
| `acs` | :-1: | A standard [ACS](/docs/configuration/acs.md) block. See **ACS** below. | | `acs` | :-1: | A standard [ACS](/docs/configuration/acs.md) block. See **ACS** below. |
| `autoSignatures` | :-1: | Set to `false` to disable auto-signatures in this area. | | `autoSignatures` | :-1: | Set to `false` to disable auto-signatures in this area. |
| `realNames` | :-1: | Set to `true` to use real names in this area. |
### ACS ### ACS
An optional standard [ACS](/docs/configuration/acs.md) block can be supplied with the following rules: An optional standard [ACS](/docs/configuration/acs.md) block can be supplied with the following rules:

View File

@ -6,6 +6,8 @@ title: FidoNet-Style Networks (FTN)
## 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! [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 ### Configuration
Getting a fully running FTN enabled system requires a few configuration points: Getting a fully running FTN enabled system requires a few configuration points:

View File

@ -12,7 +12,7 @@ WAIT_BEFORE_INSTALL=10
enigma_header() { enigma_header() {
clear clear
cat << EndOfMessage cat << EndOfMessage
______ ______
_____________________ _____ ____________________ __________\\_ / _____________________ _____ ____________________ __________\\_ /
\\__ ____/\\_ ____ \\ /____/ / _____ __ \\ / ______/ // /___jp! \\__ ____/\\_ ____ \\ /____/ / _____ __ \\ / ______/ // /___jp!
// __|___// | \\// |// | \\// | | \\// \\ /___ /_____ // __|___// | \\// |// | \\// | | \\// \\ /___ /_____
@ -21,14 +21,24 @@ _____________________ _____ ____________________ __________\\_ /
/__ _\\ /__ _\\
<*> ENiGMA½ // https://github.com/NuSkooler/enigma-bbs <*> /__/ <*> 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 EndOfMessage
sleep ${WAIT_BEFORE_INSTALL}
SECS=10
while [ $SECS -gt 0 ]; do
echo -ne "${SECS}... "
sleep 1
((SECS --))
done
echo ""
} }
fatal_error() { fatal_error() {
@ -36,9 +46,32 @@ fatal_error() {
exit 1 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() { enigma_install_needs() {
echo "Checking $1 installation" enigma_install_needs_ex $1 "Examples:\n sudo apt install $1 # Debian/Ubuntu\n sudo yum install $1 # CentOS"
command -v $1 >/dev/null 2>&1 || fatal_error "ENiGMA½ requires $1 but it's not installed. Please install it and restart the installer."
} }
log() { log() {
@ -48,7 +81,8 @@ log() {
enigma_install_init() { enigma_install_init() {
enigma_install_needs git enigma_install_needs git
enigma_install_needs curl 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 make
enigma_install_needs gcc enigma_install_needs gcc
} }
@ -114,14 +148,21 @@ install_node_packages() {
enigma_footer() { enigma_footer() {
log "ENiGMA½ installation complete!" log "ENiGMA½ installation complete!"
echo -e "\e[33m" echo -e "\e[1;33m"
cat << EndOfMessage 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} cd ${ENIGMA_INSTALL_DIR}
./oputil.js config new ./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 7zip: Archive support
Debian/Ubuntu : apt-get install p7zip Debian/Ubuntu : apt-get install p7zip
CentOS : yum install p7zip CentOS : yum install p7zip
@ -136,7 +177,7 @@ Additionally, the following support binaires are recommended:
Debian/Ubuntu : apt-get install lrzsz Debian/Ubuntu : apt-get install lrzsz
CentOS : yum install lrzsz CentOS : yum install lrzsz
See docs for more information! See docs for more information including other useful binaries!
EndOfMessage EndOfMessage
echo -e "\e[39m" echo -e "\e[39m"