Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs into 216-waiting-for-caller
This commit is contained in:
commit
89ecbdddb0
|
@ -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**
|
|
|
@ -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
|
|
@ -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.
|
30
README.md
30
README.md
|
@ -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:
|
||||||
|
|
Binary file not shown.
|
@ -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;
|
||||||
}
|
}
|
|
@ -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, '_')
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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!
|
||||||
|
|
||||||
|
|
|
@ -6,16 +6,17 @@ title: Docker
|
||||||
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!
|
||||||
|
|
|
@ -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).
|
||||||
|
|
||||||
|
|
|
@ -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).
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
|
Loading…
Reference in New Issue