UNPKG

5.29 kBJavaScriptView Raw
1#!/usr/bin/env node
2'use strict';
3/*
4 * Copyright (c) 2011 Adam Rudd.
5 * See LICENSE for more information
6 */
7
8var MqttServer = require('./lib/server').MqttServer,
9 MqttSecureServer = require('./lib/server').MqttSecureServer,
10 MqttClient = require('./lib/client'),
11 MqttConnection = require('mqtt-connection'),
12 fs = require('fs'),
13 connect = require('./lib/connect'),
14 Store = require('./lib/store'),
15 net = require('net'),
16 defaultHost = 'localhost',
17 defaultPort = 1883;
18
19module.exports.connect = connect;
20
21/**
22 * createClient - create an MQTT client
23 *
24 * @param {Number} [port] - broker port
25 * @param {String} [host] - broker host
26 * @param {Object} [opts] - see MqttClient#constructor
27 * @api public
28 */
29module.exports.createClient = function (port, host, opts) {
30 console.warn('createClient is deprecated, use connect instead');
31
32 if ('object' === typeof host) {
33 opts = host;
34 host = null;
35 }
36
37 opts = opts || {};
38 opts.port = opts.port || port;
39 opts.host = opts.host || host;
40 opts.protocol = 'mqtt';
41
42 return connect(opts);
43};
44
45/**
46 * createSecureClient - create a tls secured MQTT client
47 *
48 * @param {Number} [port]
49 * @param {String} [host]
50 * @param {Object} opts
51 * @api public
52 */
53module.exports.createSecureClient = function (port, host, opts) {
54 var i;
55 console.warn('createSecureClient is deprecated, use connect instead');
56
57 if ('object' === typeof port) {
58 opts = port;
59 port = null;
60 host = null;
61 } else if ('object' === typeof host) {
62 opts = host;
63 host = null;
64 } else if ('object' !== typeof opts) {
65 opts = {};
66 }
67
68 opts.port = port;
69 opts.host = host;
70 opts.protocol = 'mqtts';
71
72 if (opts.keyPath && opts.certPath) {
73 opts.key = fs.readFileSync(opts.keyPath);
74 opts.cert = fs.readFileSync(opts.certPath);
75 }
76
77 opts.ca = [];
78 if (opts.caPaths) {
79 for (i = 0; i < opts.caPaths.length; i++) {
80 opts.ca[i] = fs.readFileSync(opts.caPaths[i]);
81 }
82 }
83
84 return connect(opts);
85};
86
87/**
88 * createServer - create an MQTT server
89 *
90 * @param {Function} listener - called on new client connections
91 */
92
93module.exports.createServer = function (listener) {
94 console.warn('createServer() is deprecated, use http://npm.im/mqtt-connection or MqttServer instead');
95 return new MqttServer(listener);
96};
97
98/**
99 * createSecureServer - create a tls secured MQTT server
100 *
101 * @param {Object} opts - server options
102 * - OR
103 * @param {String} keyPath - path to private key
104 * @param {String} certPath - path to public cert
105 * @param {Function} [listener] - called on new client conns
106 */
107module.exports.createSecureServer =
108function (keyPath, certPath, listener) {
109 console.warn('createSecureServer() is deprecated, use http://npm.im/mqtt-connection or MqttSecureServer instead');
110 var opts = {};
111
112 // Deprecated style
113 if ('string' === typeof keyPath && 'string' === typeof certPath) {
114 opts.key = fs.readFileSync(keyPath);
115 opts.cert = fs.readFileSync(certPath);
116 } else if ('object' === typeof keyPath) {
117 opts = keyPath;
118 listener = certPath;
119 }
120
121 return new MqttSecureServer(opts, listener);
122};
123
124/**
125 * createConnection - create a bare MQTT connection
126 *
127 * @param {Number} [port]
128 * @param {String} [host]
129 * @param {Function} [callback]
130 */
131module.exports.createConnection = function (port, host, callback) {
132 console.warn('createConnection() is deprecated, use http://npm.im/mqtt-connection instead');
133 var net_client, mqtt_conn;
134 if ('undefined' === typeof port) {
135 // createConnection();
136 port = defaultPort;
137 host = defaultHost;
138 callback = function () {};
139 } else if ('function' === typeof port) {
140 // createConnection(function(){});
141 callback = port;
142 port = defaultPort;
143 host = defaultHost;
144 } else if ('function' === typeof host) {
145 // createConnection(1883, function(){});
146 callback = host;
147 host = defaultHost;
148 } else if ('function' !== typeof callback) {
149 // createConnection(1883, 'localhost');
150 callback = function () {};
151 }
152
153 net_client = net.createConnection(port, host);
154 mqtt_conn = new MqttConnection(net_client);
155
156 net_client.on('connect', function () {
157 mqtt_conn.emit('connected');
158 });
159
160 mqtt_conn.once('connected', function () {
161 callback(null, mqtt_conn);
162 });
163
164 mqtt_conn.once('error', function (err) {
165 callback(err);
166 });
167
168 return mqtt_conn;
169};
170
171// Expose MqttClient
172module.exports.MqttClient = MqttClient;
173module.exports.Client = MqttClient;
174module.exports.Store = Store;
175
176// Expose servers
177module.exports.Server = MqttServer;
178module.exports.MqttServer = MqttServer;
179module.exports.SecureServer = MqttSecureServer;
180module.exports.MqttSecureServer = MqttSecureServer;
181
182// Expose Connection
183module.exports.MqttConnection = MqttConnection;
184
185function cli () {
186 var commist = require('commist')(),
187 helpMe = require('help-me')();
188
189 commist.register('publish', require('./bin/pub'));
190 commist.register('subscribe', require('./bin/sub'));
191 commist.register('version', function () {
192 console.log('MQTT.js version:', require('./package.json').version);
193 });
194 commist.register('help', helpMe.toStdout);
195
196 if (null !== commist.parse(process.argv.slice(2))) {
197 console.log('No such command:', process.argv[2], '\n');
198 helpMe.toStdout();
199 }
200}
201
202if (require.main === module) {
203 cli();
204}