diff --git a/core/oputil/oputil_help.js b/core/oputil/oputil_help.js index 3fd55575..0d132445 100644 --- a/core/oputil/oputil_help.js +++ b/core/oputil/oputil_help.js @@ -187,6 +187,8 @@ qwk-export arguments: --user USER User in which to export for. Defaults to the SysOp. --after TIMESTAMP Export only messages with a timestamp later than TIMESTAMP. + --no-qwke Disable QWKE extensions. + --no-synchronet Disable Synchronet style extensions. ` }; diff --git a/core/oputil/oputil_message_base.js b/core/oputil/oputil_message_base.js index ea996c6c..1790b1e5 100644 --- a/core/oputil/oputil_message_base.js +++ b/core/oputil/oputil_message_base.js @@ -521,6 +521,13 @@ function exportQWKPacket() { const userName = argv.user || '-'; + const writerOptions = { + enableQWKE : !(false === argv.qwke), + enableHeadersExtension : !(false === argv.synchronet), + enableAtKludges : !(false === argv.synchronet), + archiveFormat : argv.format || 'application/zip' + }; + let totalExported = 0; async.waterfall( [ @@ -578,10 +585,10 @@ function exportQWKPacket() { }, (user, Message, messageIds, callback) => { const { QWKPacketWriter } = require('../qwk_mail_packet'); - const writer = new QWKPacketWriter({ + const writer = new QWKPacketWriter(Object.assign(writerOptions, { bbsID, user, - }); + })); writer.on('ready', () => { async.eachSeries(messageIds, (messageId, nextMessageId) => { diff --git a/docs/_includes/nav.md b/docs/_includes/nav.md index e51a8734..4fb9a399 100644 --- a/docs/_includes/nav.md +++ b/docs/_includes/nav.md @@ -41,6 +41,8 @@ - [Message networks]({{ site.baseurl }}{% link messageareas/message-networks.md %}) - [BSO Import & Export]({{ site.baseurl }}{% link messageareas/bso-import-export.md %}) - [Netmail]({{ site.baseurl }}{% link messageareas/netmail.md %}) + - [QWK]({{ site.baseurl }}{% link messageareas/qwk.md %}) + - [FTN]({{ site.baseurl }}{% link messageareas/ftn.md %}) - Art - [General]({{ site.baseurl }}{% link art/general.md %}) diff --git a/docs/messageareas/ftn.md b/docs/messageareas/ftn.md new file mode 100644 index 00000000..f1bb5366 --- /dev/null +++ b/docs/messageareas/ftn.md @@ -0,0 +1,105 @@ +--- +layout: page +title: FidoNet-Style Networks (FTN) +--- + +## FidoNet-Style Networks (FTN) + +TODO: preamble + +### Configuration + +1. `messageNetworks.ftn.networks`: declares available networks. +2. `messageNetworks.ftn.areas`: establishes local area mappings and per-area specifics. +3. `scannerTossers.ftn_bso`: general configuration for the scanner/tosser (import/export). This is also where we configure per-node settings. + +:information_source: ENiGMA½'s `ftn_bso` module is **not a mailer** and makes **no attempts** to perform packet transport! An external utility such as Binkd is required for this task. + +#### Networks +The `networks` block is a per-network configuration where each entry's ID (or "key") may be referenced elsewhere in `config.hjson`. For example, consider two networks: ArakNet (`araknet`) and fsxNet (`fsxnet`): + +```hjson +{ + messageNetworks: { + ftn: { + networks: { + // it is recommended to use lowercase network tags + fsxnet: { + defaultZone: 21 + localAddress: "21:1/121" + } + + araknet: { + defaultZone: 10 + localAddress: "10:101/9" + } + } + } + } +} +``` + +#### Areas +The `areas` section describes a mapping of local **area tags** configured in your `messageConferences` (see [Configuring a Message Area](configuring-a-message-area.md)) to a message network (described above), a FTN specific area tag, and remote uplink address(s). This section can be thought of similar to the *AREAS.BBS* file used by other BBS packages. + +When ENiGMA½ imports messages, they will be placed in the local area that matches key under `areas` while exported messages will be sent to the relevant `network`. + +| Config Item | Required | Description | +|-------------|----------|----------------------------------------------------------| +| `network` | :+1: | Associated network from the `networks` section above | +| `tag` | :+1: | FTN area tag (ie: `FSX_GEN`) | +| `uplinks` | :+1: | An array of FTN address uplink(s) for this network | + +Example: +```hjson +{ + messageNetworks: { + ftn: { + areas: { + // it is recommended to use lowercase area tags + fsx_general: // *local* tag found within messageConferences + network: fsxnet // that we are mapping to this network + tag: FSX_GEN // ...and this remote FTN-specific tag + uplinks: [ "21:1/100" ] // a single string also allowed here + } + } + } + } +} +``` + +:information_source: You can import `AREAS.BBS` or FTN style `.NA` files using [oputil](/docs/admin/oputil.md)! + +#### A More Complete Example +Below is a more complete *example* illustrating some of the concepts above: + +```hjson +{ + messageNetworks: { + ftn: { + networks: { + fsxnet: { + defaultZone: 21 + localAddress: "21:1/121" + } + } + + areas: { + fsx_general: { + network: fsxnet + + // ie as found in your info packs .NA file + tag: FSX_GEN + + uplinks: [ "21:1/100" ] + } + } + } + } +} +``` + +:information_source: Remember for a complete FTN experience, you'll probably also want to configure [FTN/BSO scanner/tosser](bso-import-export.md) settings. + +#### FTN/BSO Scanner Tosser +Please see the [FTN/BSO Scanner/Tosser](bso-import-export.md) documentation for information on this area. \ No newline at end of file diff --git a/docs/messageareas/message-networks.md b/docs/messageareas/message-networks.md index 5838da53..7fbd80c2 100644 --- a/docs/messageareas/message-networks.md +++ b/docs/messageareas/message-networks.md @@ -3,103 +3,23 @@ layout: page title: Message Networks --- ## Message Networks -ENiGMA½ considers all non-ENiGMA½, non-local messages (and their networks, such as FTN "external". That is, messages are only imported and exported from/to such a networks. Configuring such external message networks in ENiGMA½ requires three sections in your `config.hjson`. +ENiGMA½ considers all non-ENiGMA½, non-local messages (and their networks, such as FidoNet-Style (FTN) "external". That is, messages are only imported and exported from/to such a networks. Configuring such external message networks in ENiGMA½ requires three sections in your `config.hjson`. -1. `messageNetworks..networks`: declares available networks. -2. `messageNetworks..areas`: establishes local area mappings and per-area specifics. -3. `scannerTossers.`: general configuration for the scanner/tosser (import/export). This is also where we configure per-node settings. +All message network configuration occurs under the `messageNetworks.` block in `config.hjson` (where name is something such as `ftn` or `qwk`). Similarly, if a scanner/tosser module exists for the network it can be configured under `scannerTossers.`. An example of this is the [FTN/BSO scanner/tosser](bso-import-export.md) module where name is `ftn_bso`. -### FTN Networks +The most basic of external message network configurations generally comprises of two sections within `config.hjson`: + +1. `messageNetworks..networks`: Global/general configuration for a particular network where `` is for example `ftn` or `qwk`. +2. `messageNetworks..areas`: Provides mapping of ENiGMA½ **area tags** to their external counterparts. + +Finally, a related section under `scannerTossers.` may provide configuration for scanning (importing) and tossing (exporting) messages for a particular network type. As an example, FidoNet-Style networks often work with BinkleyTerm Style Outbound (BSO) and thus the [FTN/BSO scanner/tosser](bso-import-export.md) module. + +### Supported Networks + +#### FidoNet-Style (FTN) FidoNet and FidoNet style (FTN) networks as well as a [FTN/BSO scanner/tosser](bso-import-export.md) (`ftn_bso` module) are configured via the `messageNetworks.ftn` and `scannerTossers.ftn_bso` blocks in `config.hjson`. -:information_source: ENiGMA½'s `ftn_bso` module is **not a mailer** and makes **no attempts** to perform packet transport! An external utility such as Binkd is required for this! +See [FidoNet-Style Networks](ftn.md) for more information. -#### Networks -The `networks` block a per-network configuration where each entry's key may be referenced elsewhere in `config.hjson`. - -Example: the following example declares two networks: `araknet` and `fsxnet`: -```hjson -{ - messageNetworks: { - ftn: { - networks: { - // it is recommended to use lowercase network tags - fsxnet: { - defaultZone: 21 - localAddress: "21:1/121" - } - - araknet: { - defaultZone: 10 - localAddress: "10:101/9" - } - } - } - } -} -``` - -#### Areas -The `areas` section describes a mapping of local **area tags** configured in your `messageConferences` (see [Configuring a Message Area](configuring-a-message-area.md)) to a message network (described above), a FTN specific area tag, and remote uplink address(s). This section can be thought of similar to the *AREAS.BBS* file used by other BBS packages. - -When ENiGMA½ imports messages, they will be placed in the local area that matches key under `areas` while exported messages will be sent to the relevant `network`. - -| Config Item | Required | Description | -|-------------|----------|----------------------------------------------------------| -| `network` | :+1: | Associated network from the `networks` section above | -| `tag` | :+1: | FTN area tag (ie: `FSX_GEN`) | -| `uplinks` | :+1: | An array of FTN address uplink(s) for this network | - -Example: -```hjson -{ - messageNetworks: { - ftn: { - areas: { - // it is recommended to use lowercase area tags - fsx_general: // *local* tag found within messageConferences - network: fsxnet // that we are mapping to this network - tag: FSX_GEN // ...and this remote FTN-specific tag - uplinks: [ "21:1/100" ] // a single string also allowed here - } - } - } - } -} -``` - -:information_source: You can import `AREAS.BBS` or FTN style `.NA` files using [oputil](/docs/admin/oputil.md)! - -### A More Complete Example -Below is a more complete *example* illustrating some of the concepts above: - -```hjson -{ - messageNetworks: { - ftn: { - networks: { - fsxnet: { - defaultZone: 21 - localAddress: "21:1/121" - } - } - - areas: { - fsx_general: { - network: fsxnet - - // ie as found in your info packs .NA file - tag: FSX_GEN - - uplinks: [ "21:1/100" ] - } - } - } - } -} -``` - -:information_source: Remember for a complete FTN experience, you'll probably also want to configure [FTN/BSO scanner/tosser](bso-import-export.md) settings. - -### FTN/BSO Scanner Tosser -Please see the [FTN/BSO Scanner/Tosser](bso-import-export.md) documentation for information on this area. +#### QWK +See [QWK and QWK-Net Style Networks](qwk.md) for more information. diff --git a/docs/messageareas/qwk.md b/docs/messageareas/qwk.md new file mode 100644 index 00000000..6c72afb0 --- /dev/null +++ b/docs/messageareas/qwk.md @@ -0,0 +1,52 @@ +--- +layout: page +title: QWK Support +--- + +## QWK and QWK-Net Style Networks +As like all other such as FidoNet-Style (FTN) networks, ENiGMA½ considers QWK external to the system but can import and export the format. + +### Supported Standards +QWK must be considered a semi-standard as there are many implementations. What follows is a short & incomplete list of such standards ENiGMA½ supports: +* The basic [QWK packet format](http://fileformats.archiveteam.org/wiki/QWK). +* [QWKE extensions](https://github.com/wwivbbs/wwiv/blob/master/specs/qwk/qwke.txt). +* [Synchronet BBS style extensions](http://wiki.synchro.net/ref:qwk) such as `HEADERS.DAT`, `@` kludges, and UTF-8 handling. + + +### Configuration +QWK configuration occurs in the `messageNetworks.qwk` config block of `config.hjson`. As QWK wants to deal with conference numbers and ENiGMA½ uses area tags (conferences and conference tags are only used for logical grouping), a mapping can be made. + +:information_source: During a regular, non QWK-Net exports, conference numbers can be auto-generated. Note that for QWK-Net style networks, you will need to create mappings however. + +:TODO: information on QWK-Net type setup here + +Example: +```hjson +{ + messageNetworks: { + qwk: { + areas: { + general: { // local ENiGMA½ area tag + conference: 1 // conference number to map to + } + } + } + } +} +``` + +### oputil +The `oputil.js` utility can export packet files, dump the messages of a packet to stdout, etc. + +TODO: Examples, etc. +TODO: Link to oputil, update --help there. + +### Offline Readers +A few of the offline readers that have been tested with QWK packet files produced by ENiGMA: + +| Software | Status | Notes | +|----------|--------|-------| +| MultiMail/Win v0.52 | Supported | Private mail seems to break even with bundles from other systems | +| SkyReader/W32 v1.00 | Supported | Works well. No QWKE or HEADERS.DAT support. Gets confused with low conference numbers. | + +There are also [many other readers](https://www.softwolves.pp.se/old/2000/faq/bwprod) for various systems. \ No newline at end of file