Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Install with
$ npm i fingi-cmd --save
The package exports the Command
class, a parse
method and a Stream
which is a
Duplex
stream that works on Command
instances.
Create by invoking the constructor with new
and passing the desired command properties.
var Command = require('fingi-cmd').Command;
var cmd = new Command({ action: 'HELLO' });
Properties include:
nonce
- (number) The nonce counter.source
- (string array) The command source (or origin.)action
- (string) The action to carry out.args
- (string array) ArgumentsCheck with the official Fingi protocol description for more information.
When you already have a Command
instance, these 2 methods may be of interest:
Signs the entire command line using the HMAC-SHA1 algorithm and append the resulting signature digest as the last argument.
Returns correct protocol represenation of the command as a string ready to be sent onto the wire.
The exported Stream
is an instance of node core's Duplex
object-mode stream which
automatically parses incoming data into Command
instances and then allow send()
-ing
out commands to the wire.
var CmdStream = require('fingi-cmd').Stream;
var commands = new CmdStream();
To receive commands, pipe your raw incoming stream into the CmdStream
and listen for the
command
event. The chunker
module is also recommended to ensure that the stream
always receives a full line.
process.stdin.pipe(commands);
commands.on('command', function(cmd) {
console.log('receive:', cmd.action());
});
Or when using with chunker
:
var chunker = new (require('chunker'))({ matcher: '\r\n' });
process.stdin.pipe(chunker).pipe(commands);
// commands.on('command')... as usual
Send commands by using the send()
method, passing in the Command
instance to send.
commands.pipe(process.stdout);
// send PINGs every second.
setInterval(function() {
commands.send(new Command({ action: 'PING' }));
}, 1000);
Optionally, you may have a string representation that you would like to parse by yourself.
You can do this by using the exported parse()
function:
var parse = require('fingi-cmd').parse;
var input = '1000 server-name 9.9.99 | HELLO device\r\n';
var cmd = parse(input);
console.log(cmd.source[0]); // prints "server-name"
MIT. See the LICENSE file for the full license text.
FAQs
Fingi command protocol parser and serializer.
The npm package fingi-cmd receives a total of 0 weekly downloads. As such, fingi-cmd popularity was classified as not popular.
We found that fingi-cmd demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.