Makes RSS feeds out of Fidonet echomail areas.
Fido2RSS is a Node.js module and a CLI application; both make RSS feeds out of Fidonet echomail areas.
Starting from v1.0.0, this module requires Node.js version 4.0.0 or newer.
You may run older versions of this module in Node.js version 0.10.x or 0.12.x. These older versions, however, had to contain additional subdependencies as polyfills for missing ECMAScript 2015 (ES6) features which are now present in Node.js.
Fido2RSS supports only a couple of Fidonet message base types: JAM (Joaquim-Andrew-Mats) and Squish.
Latest packaged version:
npm install fido2rss
Latest githubbed version:
npm install https://github.com/Mithgol/fido2rss/tarball/master
The module becomes installed locally and appears in
node_modules/fido2rss. Then use
require('fido2rss') to access the module.
You may visit https://github.com/Mithgol/fido2rss#readme occasionally to read the latest
README because the package's version is not planned to grow after changes when they happen in
README only. (And
npm publish --force is forbidden nowadays.)
Latest packaged version:
npm install -g fido2rss
Latest githubbed version:
npm install -g https://github.com/Mithgol/fido2rss/tarball/master
The application becomes installed globally and appears in the
PATH. Then use
fido2rss command to run the application.
Instead of the above, download the ZIP-packed source code of Fido2RSS and unpack it to some directory. Then run
npm install --production in that directory.
You may now move that directory (for example, on a flash drive) across systems as long as they have the required version of Node.js installed.
Unlike the above (
npm -g), the application does not appear in the
PATH, and thus you'll have to run it directly from the application's directory. You'll also have to run
node fido2rss [options] instead of
You may run the installed application by typing in the command line:
[options] is a space-separated list of the following options and their values:
The full path (with the filename) that is used to generate a lock file.
You may use it to prevent both Fido2RSS and HPT (or any other echomail processor that supports lock files) from running simultaneously and trying to process the same echomail area.
The full path (with the filename, but without extensions) of the message base.
The areatag (echotag) of the echomail area.
Message base type. Use
--type Squish for Squish message bases. The default type is JAM.
The full path (with the filename) that is used to generate the RSS output file.
How many latest messages are taken from the echomail area and published to the RSS feed.
By default, 23.
If this option is present, then UUE-encoded images are automatically decoded and put to IPFS. The given
host:port is used to contact an IPFS daemon.
If a mere
--IPFS is given (i.e. without
host:port part), the default address
--IPFS localhost:5001 is used (i.e. an IPFS daemon is expected to be running locally, alongside Fido2RSS).
--IPFS is missing, UUE-encoded images are left as they are (not IPFS-hosted at all), i.e. this option is off by default.
IPFS-hosted images have the following advantages:
By default (without
--IPFS option) UUE-decoded images use large RFC2397-compliant Data URI, while IPFS-hosted images have much shorter URI (only ≈67 characters each) and the RSS feed's size is reduced. This is important for RSS consumers that do not tolerate large entries. (For example, LiveJournal has some small entry size.)
End users (e.g. human readers) may install their own IPFS daemons and then use extensions (available for Firefox and for Chrome) to browse IPFS locally. It has all the usual potential advantages of P2P (peer-to-peer) systems: local storage (cache), local traffic (peering), most files are still available even if their initial sources are offline or overcrowded, etc.
require() the installed module and get a function that asynchronously converts Fidonet messages to RSS output.
That function accepts an object of options and a callback that receives an error (or
null) and RSS output (a string).
var Fido2RSS = require'fido2rss';Fido2RSSoptionsif err// an error happenedelse// conversion is successful, you may use `outputRSS` now;
The following properties in the object of options are processed:
options.area — the areatag (echotag) of the echomail area. (Required.)
options.base — the full path (with the filename, but without extensions) of the message base. (Required.)
options.msg — how many latest messages are taken from the echomail area and published to the RSS feed. (By default, 23.)
options.type — the message base's type. By default,
'JAM'; can also be
'Squish' (not case-sensitive). An unknown type is also treated as
options.IPFS — this option is used to decide if UUE-encoded images are automatically decoded and put to IPFS. This option may have one of the following values:
undefined— UUE-encoded images are not put to IPFS.
true— UUE-encoded images are automatically decoded and put to IPFS. A local IPFS daemon (localhost:5001) is contacted.
'host:port'— Same as above, but a remote IPFS daemon is contacted (the given
'host:port'string is used as its address).
options.areaPrefixURL — the prefix to be added before
area://… URLs that appear in RSS output. (For example, if
'https://example.org/fidonet?', then the URL
'https://example.org/fidonet?area://Test/' will appear instead of original
'area://Test/'.) Some WebBBS support is necessary on the server side (of the given server) for such URLs to be working.
area://…URLs instead of RFC2397-compliant
.areaPrefixURLis not defined. It means that prefixing does not happen and files use
data:URLs (unless put to IPFS).
data:URLs tend to be rather lengthy).
It is necessary to install JSHint for testing.
npm install jshint -g) or locally (
npm install jshintin the directory of Fido2RSS).
After that you may run
npm test (in the directory of Fido2RSS). Only the JS code errors are caught; the code's behaviour is not tested.
Note: if you also test a generated local RSS file by dragging and dropping it to Firefox, the file is not recognized as RSS. That's a known Firefox bug (#420004) discovered in 2008.
MIT License, see the