mqtt stuff added
This commit is contained in:
146
node_modules/mqtt/bin/pub.js
generated
vendored
Executable file
146
node_modules/mqtt/bin/pub.js
generated
vendored
Executable file
@ -0,0 +1,146 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
'use strict'
|
||||
|
||||
var mqtt = require('../')
|
||||
var pump = require('pump')
|
||||
var path = require('path')
|
||||
var fs = require('fs')
|
||||
var concat = require('concat-stream')
|
||||
var Writable = require('readable-stream').Writable
|
||||
var helpMe = require('help-me')({
|
||||
dir: path.join(__dirname, '..', 'doc')
|
||||
})
|
||||
var minimist = require('minimist')
|
||||
var split2 = require('split2')
|
||||
|
||||
function send (args) {
|
||||
var client = mqtt.connect(args)
|
||||
client.on('connect', function () {
|
||||
client.publish(args.topic, args.message, args, function (err) {
|
||||
if (err) {
|
||||
console.warn(err)
|
||||
}
|
||||
client.end()
|
||||
})
|
||||
})
|
||||
client.on('error', function (err) {
|
||||
console.warn(err)
|
||||
client.end()
|
||||
})
|
||||
}
|
||||
|
||||
function multisend (args) {
|
||||
var client = mqtt.connect(args)
|
||||
var sender = new Writable({
|
||||
objectMode: true
|
||||
})
|
||||
sender._write = function (line, enc, cb) {
|
||||
client.publish(args.topic, line.trim(), args, cb)
|
||||
}
|
||||
|
||||
client.on('connect', function () {
|
||||
pump(process.stdin, split2(), sender, function (err) {
|
||||
client.end()
|
||||
if (err) {
|
||||
throw err
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function start (args) {
|
||||
args = minimist(args, {
|
||||
string: ['hostname', 'username', 'password', 'key', 'cert', 'ca', 'message', 'clientId', 'i', 'id'],
|
||||
boolean: ['stdin', 'retain', 'help', 'insecure', 'multiline'],
|
||||
alias: {
|
||||
port: 'p',
|
||||
hostname: ['h', 'host'],
|
||||
topic: 't',
|
||||
message: 'm',
|
||||
qos: 'q',
|
||||
clientId: ['i', 'id'],
|
||||
retain: 'r',
|
||||
username: 'u',
|
||||
password: 'P',
|
||||
stdin: 's',
|
||||
multiline: 'M',
|
||||
protocol: ['C', 'l'],
|
||||
help: 'H',
|
||||
ca: 'cafile'
|
||||
},
|
||||
default: {
|
||||
host: 'localhost',
|
||||
qos: 0,
|
||||
retain: false,
|
||||
topic: '',
|
||||
message: ''
|
||||
}
|
||||
})
|
||||
|
||||
if (args.help) {
|
||||
return helpMe.toStdout('publish')
|
||||
}
|
||||
|
||||
if (args.key) {
|
||||
args.key = fs.readFileSync(args.key)
|
||||
}
|
||||
|
||||
if (args.cert) {
|
||||
args.cert = fs.readFileSync(args.cert)
|
||||
}
|
||||
|
||||
if (args.ca) {
|
||||
args.ca = fs.readFileSync(args.ca)
|
||||
}
|
||||
|
||||
if (args.key && args.cert && !args.protocol) {
|
||||
args.protocol = 'mqtts'
|
||||
}
|
||||
|
||||
if (args.port) {
|
||||
if (typeof args.port !== 'number') {
|
||||
console.warn('# Port: number expected, \'%s\' was given.', typeof args.port)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (args['will-topic']) {
|
||||
args.will = {}
|
||||
args.will.topic = args['will-topic']
|
||||
args.will.payload = args['will-message']
|
||||
args.will.qos = args['will-qos']
|
||||
args.will.retain = args['will-retain']
|
||||
}
|
||||
|
||||
if (args.insecure) {
|
||||
args.rejectUnauthorized = false
|
||||
}
|
||||
|
||||
args.topic = (args.topic || args._.shift()).toString()
|
||||
args.message = (args.message || args._.shift()).toString()
|
||||
|
||||
if (!args.topic) {
|
||||
console.error('missing topic\n')
|
||||
return helpMe.toStdout('publish')
|
||||
}
|
||||
|
||||
if (args.stdin) {
|
||||
if (args.multiline) {
|
||||
multisend(args)
|
||||
} else {
|
||||
process.stdin.pipe(concat(function (data) {
|
||||
args.message = data
|
||||
send(args)
|
||||
}))
|
||||
}
|
||||
} else {
|
||||
send(args)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = start
|
||||
|
||||
if (require.main === module) {
|
||||
start(process.argv.slice(2))
|
||||
}
|
Reference in New Issue
Block a user