Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs
This commit is contained in:
commit
566a34da7b
|
@ -24,9 +24,9 @@ ENiGMA½ is a modern BBS software with a nostalgic flair!
|
||||||
## In the Works
|
## In the Works
|
||||||
* More ES6+ usage, and **documentation**!
|
* More ES6+ usage, and **documentation**!
|
||||||
* File areas
|
* File areas
|
||||||
* ACS support for more areas
|
* More ACS support coverage
|
||||||
* SysOp dashboard (ye ol' WFC)
|
* SysOp dashboard (ye ol' WFC)
|
||||||
* Missing functionality such as searching, pipe code support in message areas, etc.
|
* Missing functionality such as searching, message area coloring, etc.
|
||||||
* String localization
|
* String localization
|
||||||
* A lot more! Feel free to request features via [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues)
|
* A lot more! Feel free to request features via [the issue tracker](https://github.com/NuSkooler/enigma-bbs/issues)
|
||||||
|
|
||||||
|
@ -61,6 +61,9 @@ Please see the [Quickstart](docs/index.md#quickstart)
|
||||||
* [M. Griffin](https://github.com/M-griffin), author of [Enthral BBS](https://github.com/M-griffin/Enthral), [Oblivion/2 XRM](https://github.com/M-griffin/Oblivion2-XRM) and [EtherTerm](https://github.com/M-griffin/EtherTerm)!
|
* [M. Griffin](https://github.com/M-griffin), author of [Enthral BBS](https://github.com/M-griffin/Enthral), [Oblivion/2 XRM](https://github.com/M-griffin/Oblivion2-XRM) and [EtherTerm](https://github.com/M-griffin/EtherTerm)!
|
||||||
* [Caphood](http://www.reddit.com/user/Caphood), supreme SysOp of [BLACK ƒlag](http://www.bbsnexus.com/directory/listing/blackflag.html) BBS
|
* [Caphood](http://www.reddit.com/user/Caphood), supreme SysOp of [BLACK ƒlag](http://www.bbsnexus.com/directory/listing/blackflag.html) BBS
|
||||||
* Luciano Ayres of [Blocktronics](http://blocktronics.org/), creator of the "Mystery Skulls" default ENiGMA½ theme!
|
* Luciano Ayres of [Blocktronics](http://blocktronics.org/), creator of the "Mystery Skulls" default ENiGMA½ theme!
|
||||||
|
* Sudndeath for Xibalba ANSI work!
|
||||||
|
* Jack Phlash for kick ass ENiGMA½ and Xibalba ASCII (Check out [IMPURE60](http://pc.textmod.es/pack/impure60/)!!)
|
||||||
|
* Avon of [Agency BBS](http://bbs.geek.nz/) and fsxNet
|
||||||
|
|
||||||
## 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:
|
||||||
|
|
|
@ -59,19 +59,35 @@ function FTNMessageScanTossModule() {
|
||||||
|
|
||||||
this.getDefaultNetworkName = function() {
|
this.getDefaultNetworkName = function() {
|
||||||
if(this.moduleConfig.defaultNetwork) {
|
if(this.moduleConfig.defaultNetwork) {
|
||||||
return this.moduleConfig.defaultNetwork;
|
return this.moduleConfig.defaultNetwork.toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
const networkNames = Object.keys(Config.messageNetworks.ftn.networks);
|
const networkNames = Object.keys(Config.messageNetworks.ftn.networks);
|
||||||
if(1 === networkNames.length) {
|
if(1 === networkNames.length) {
|
||||||
return networkNames[0];
|
return networkNames[0].toLowerCase();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
this.getDefaultZone = function(networkName) {
|
||||||
|
if(_.isNumber(Config.messageNetworks.ftn.networks[networkName].defaultZone)) {
|
||||||
|
return Config.messageNetworks.ftn.networks[networkName].defaultZone;
|
||||||
|
}
|
||||||
|
|
||||||
|
// non-explicit: default to local address zone
|
||||||
|
const networkLocalAddress = Config.messageNetworks.ftn.networks[networkName].localAddress;
|
||||||
|
if(networkLocalAddress) {
|
||||||
|
const addr = Address.fromString(networkLocalAddress);
|
||||||
|
return addr.zone;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
this.isDefaultDomainZone = function(networkName, address) {
|
this.isDefaultDomainZone = function(networkName, address) {
|
||||||
const defaultNetworkName = this.getDefaultNetworkName();
|
const defaultNetworkName = this.getDefaultNetworkName();
|
||||||
return(networkName === defaultNetworkName && address.zone === this.moduleConfig.defaultZone);
|
return(networkName === defaultNetworkName && address.zone === this.moduleConfig.defaultZone);
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
this.getNetworkNameByAddress = function(remoteAddress) {
|
this.getNetworkNameByAddress = function(remoteAddress) {
|
||||||
return _.findKey(Config.messageNetworks.ftn.networks, network => {
|
return _.findKey(Config.messageNetworks.ftn.networks, network => {
|
||||||
|
@ -115,6 +131,7 @@ function FTNMessageScanTossModule() {
|
||||||
return _.isString(msg.meta.FtnKludge.MSGID) && msg.meta.FtnKludge.MSGID.length > 0;
|
return _.isString(msg.meta.FtnKludge.MSGID) && msg.meta.FtnKludge.MSGID.length > 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
this.getOutgoingPacketDir = function(networkName, destAddress) {
|
this.getOutgoingPacketDir = function(networkName, destAddress) {
|
||||||
let dir = this.moduleConfig.paths.outbound;
|
let dir = this.moduleConfig.paths.outbound;
|
||||||
if(!this.isDefaultDomainZone(networkName, destAddress)) {
|
if(!this.isDefaultDomainZone(networkName, destAddress)) {
|
||||||
|
@ -123,6 +140,31 @@ function FTNMessageScanTossModule() {
|
||||||
}
|
}
|
||||||
return dir;
|
return dir;
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
this.getOutgoingPacketDir = function(networkName, destAddress) {
|
||||||
|
networkName = networkName.toLowerCase();
|
||||||
|
|
||||||
|
let dir = this.moduleConfig.paths.outbound;
|
||||||
|
|
||||||
|
const defaultNetworkName = this.getDefaultNetworkName();
|
||||||
|
const defaultZone = this.getDefaultZone(networkName);
|
||||||
|
|
||||||
|
let zoneExt;
|
||||||
|
if(defaultZone !== destAddress.zone) {
|
||||||
|
zoneExt = '.' + `000${destAddress.zone.toString(16)}`.substr(-3);
|
||||||
|
} else {
|
||||||
|
zoneExt = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
if(defaultNetworkName === networkName) {
|
||||||
|
dir = paths.join(dir, `outbound${zoneExt}`);
|
||||||
|
} else {
|
||||||
|
dir = paths.join(dir, `${networkName}${zoneExt}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dir;
|
||||||
|
};
|
||||||
|
|
||||||
this.getOutgoingPacketFileName = function(basePath, messageId, isTemp) {
|
this.getOutgoingPacketFileName = function(basePath, messageId, isTemp) {
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
## Configuration
|
# Configuration
|
||||||
Configuration files in ENiGMA½ are simple UTF-8 encoded [HJSON](http://hjson.org/) files. HJSON is just like JSON but simplified and much more resilient to human error.
|
Configuration files in ENiGMA½ are simple UTF-8 encoded [HJSON](http://hjson.org/) files. HJSON is just like JSON but simplified and much more resilient to human error.
|
||||||
|
|
||||||
### System Configuraiton
|
## System Configuraiton
|
||||||
The main system configuration file, `config.hjson` both overrides defaults and provides additional configuration such as message areas. The default path is `~/.config/enigma-bbs/config.hjson` though you can override this with the `--config` parameter when invoking `main.js`. Values found in core/config.js may be overridden by simply providing the object members you wish replace.
|
The main system configuration file, `config.hjson` both overrides defaults and provides additional configuration such as message areas. The default path is `~/.config/enigma-bbs/config.hjson` though you can override this with the `--config` parameter when invoking `main.js`. Values found in core/config.js may be overridden by simply providing the object members you wish replace.
|
||||||
|
|
||||||
**Windows note**: **~** resolves to *C:\Users\YOURLOGINNAME\* on modern installations, e.g. *C:\Users\NuSkooler\\.config\enigma-bbs\config.hjson*
|
**Windows note**: **~** resolves to *C:\Users\YOURLOGINNAME\* on modern installations, e.g. *C:\Users\NuSkooler\\.config\enigma-bbs\config.hjson*
|
||||||
|
|
||||||
#### Example: System Name
|
### Example: System Name
|
||||||
`core/config.js` provides the default system name as follows:
|
`core/config.js` provides the default system name as follows:
|
||||||
```javascript
|
```javascript
|
||||||
general : {
|
general : {
|
||||||
|
@ -21,8 +21,34 @@ general: {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### A Sample Configuration
|
### Specific Areas of Interest
|
||||||
Below is a **sample** `config.hjson` illustrating various (but not all!) elements that can be configured / tweaked.
|
|
||||||
|
#### Archivers
|
||||||
|
External archivers can be configured for various tasks such as EchoMail bundle handling.
|
||||||
|
|
||||||
|
TODO: Document further inc. Members & defaults
|
||||||
|
|
||||||
|
**Example**:
|
||||||
|
|
||||||
|
```hjson
|
||||||
|
archivers: {'
|
||||||
|
zip: {
|
||||||
|
// byte signature in HEX of ZIP archives
|
||||||
|
sig: "504b0304"
|
||||||
|
// offset of sig
|
||||||
|
offset: 0
|
||||||
|
compressCmd: "7za"
|
||||||
|
compressArgs: [ "a", "-tzip", "{archivePath}", "{fileList}" ]
|
||||||
|
decompressCmd: "7za"
|
||||||
|
decompressArgs: [ "e", "-o{extractPath}", "{archivePath}" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### A Sample Configuration
|
||||||
|
Below is a **sample** `config.hjson` illustrating various (but certainly not all!) elements that can be configured / tweaked.
|
||||||
|
|
||||||
|
**This is for illustration purposes! Do not cut & paste this configuration!**
|
||||||
|
|
||||||
|
|
||||||
```hjson
|
```hjson
|
||||||
|
@ -106,5 +132,5 @@ Below is a **sample** `config.hjson` illustrating various (but not all!) element
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Menus
|
## Menus
|
||||||
TODO: Documentation on menu.hjson, etc.
|
TODO: Documentation on menu.hjson, etc.
|
|
@ -35,7 +35,7 @@ npm install
|
||||||
```
|
```
|
||||||
|
|
||||||
## Generate a SSH Private Key
|
## Generate a SSH Private Key
|
||||||
To utilize the SSH server, a SSH Private Key will need generated. This step can be skipped if desired by disabling the SSH server in `config.hjson`.
|
To utilize the SSH server, a SSH Private Key will need generated. This step can be skipped if you do not wish to enable SSH access.
|
||||||
```bash
|
```bash
|
||||||
openssl genrsa -des3 -out ./misc/ssh_private_key.pem 2048
|
openssl genrsa -des3 -out ./misc/ssh_private_key.pem 2048
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
# Message Networks
|
# Message Networks
|
||||||
Message networks are configured in `messageNetworks` section of `config.hjson`. Each network type has it's own sub section such as `ftn` for FidoNet Technology Network (FTN) style networks. Message Networks tie directly with [Message Areas](msg_conf_area.md) that are also defined in `config.hjson`.
|
Message networks are configured in `messageNetworks` section of `config.hjson`. Each network type has it's own sub section such as `ftn` for FidoNet Technology Network (FTN) style networks. Message Networks tie directly with [Message Areas](msg_conf_area.md) that are also defined in `config.hjson`.
|
||||||
|
|
||||||
|
**Members**:
|
||||||
|
* `ftn`: Configure FTN networks (described below)
|
||||||
|
* `originLine` (optional): Overrwrite the default origin line for networks that support it. For example: `originLine: Xibalba - xibalba.l33t.codes:44510`
|
||||||
|
|
||||||
## FidoNet Technology Network (FTN)
|
## FidoNet Technology Network (FTN)
|
||||||
FTN networks are configured under the `messageNetworks::ftn` section of `config.hjson`.
|
FTN networks are configured under the `messageNetworks::ftn` section of `config.hjson`.
|
||||||
|
|
||||||
|
@ -114,4 +118,7 @@ See [Later text parsing documentation](http://bunkat.github.io/later/parsers.htm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## More Information
|
||||||
|
* [ENiGMA 1/2 + Binkd on CentOS 7](https://www.l33t.codes/enigma-12-binkd-on-centos-7/)
|
Binary file not shown.
|
@ -170,6 +170,19 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
messageAreaChangeCurrentConference: {
|
||||||
|
config: {
|
||||||
|
listFormat: "|00|15{index} |07- |03{name}"
|
||||||
|
focusListFormat: "|00|19|15{index} - {name}"
|
||||||
|
}
|
||||||
|
mci: {
|
||||||
|
VM1: {
|
||||||
|
width: 26
|
||||||
|
height: 19
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
messageAreaChangeCurrentArea: {
|
messageAreaChangeCurrentArea: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|15{index} |07- |03{name}"
|
listFormat: "|00|15{index} |07- |03{name}"
|
||||||
|
|
Loading…
Reference in New Issue