'use strict';
|
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
|
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
var crypto = require('crypto');
|
var os = require('os');
|
var axios = require('axios');
|
var qs = require('qs');
|
|
function hmacSign(type, secret, content) {
|
return crypto.createHmac(type, secret).update(content).digest('hex');
|
}
|
|
// function mqttMatch(filter, topic) {
|
// const filterArray = filter.split('/');
|
// const length = filterArray.length;
|
// const topicArray = topic.split('/');
|
|
// for (var i = 0; i < length; ++i) {
|
// var left = filterArray[i];
|
// var right = topicArray[i];
|
// if (left === '#') return true;
|
// if (left !== '+' && left !== right) return false;
|
// }
|
|
// return length === topicArray.length;
|
// }
|
|
function createGuid() {
|
var id = 1;
|
return function () {
|
return String(id++);
|
};
|
}
|
|
function isJsonString(str) {
|
try {
|
if (_typeof(JSON.parse(str)) == "object") {
|
return true;
|
}
|
} catch (e) {}
|
return false;
|
}
|
|
function signUtil(deviceConfig) {
|
var signMethod = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'sha1';
|
|
var timestamp = Date.now();
|
var device = {
|
productKey: deviceConfig.productKey,
|
deviceName: deviceConfig.deviceName,
|
clientId: deviceConfig.productKey + '&' + deviceConfig.deviceName,
|
timestamp: timestamp
|
};
|
device.signMethod = 'hmac' + signMethod;
|
var signcontent = 'clientId' + device.clientId + 'deviceName' + device.deviceName + 'productKey' + device.productKey + 'timestamp' + timestamp;
|
device.sign = hmacSign(signMethod, deviceConfig.deviceSecret, signcontent);
|
return device;
|
}
|
|
function deviceRegisterSign(productKey, productSecret, deviceName, random) {
|
var signMethod = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'sha1';
|
|
// signMethod = `hmac${signMethod}`;
|
var signcontent = 'deviceName' + deviceName + 'productKey' + productKey + 'random' + random;
|
// console.log("deviceRegisterSign",signMethod,signcontent)
|
var sign = hmacSign("sha1", productSecret, signcontent);
|
|
return sign;
|
}
|
|
function createDebug(mod) {
|
return function () {
|
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
args[_key] = arguments[_key];
|
}
|
|
var debugMod = process.env.DEBUG;
|
if (debugMod && (debugMod === '*' || mod.indexOf(debugMod) > -1)) {
|
var _console;
|
|
var _args = [mod + ':'].concat(args);
|
(_console = console).log.apply(_console, _toConsumableArray(_args));
|
}
|
};
|
}
|
|
function getIP() {
|
var ifaces = os.networkInterfaces();
|
var ip = "";
|
for (var dev in ifaces) {
|
ifaces[dev].forEach(function (details) {
|
if (details.family == 'IPv4' && dev === 'en0') {
|
ip = details.address;
|
}
|
});
|
}
|
return ip;
|
}
|
|
/*
|
* 设备动态注册
|
* 子设备注册+直连设备使用一型一密动态注册
|
*/
|
function register(_ref, cb) {
|
var productKey = _ref.productKey,
|
productSecret = _ref.productSecret,
|
deviceName = _ref.deviceName,
|
random = _ref.random,
|
signMethod = _ref.signMethod,
|
registerURL = _ref.registerURL;
|
|
var rd = random || Math.random().toString(36).substr(2);
|
var sm = signMethod || "hmacsha1";
|
var url = registerURL || "https://iot-auth.cn-shanghai.aliyuncs.com/auth/register/device";
|
var sign = deviceRegisterSign(productKey, productSecret, deviceName, rd, sm);
|
var data = qs.stringify({
|
productKey: productKey,
|
deviceName: deviceName,
|
random: rd,
|
sign: sign,
|
signMethod: sm
|
});
|
axios.post(url, data).then(function (res) {
|
var data = res.data;
|
if (data.code != 200) {
|
throw data;
|
}
|
cb(data);
|
}).catch(function (error) {
|
cb(error);
|
});
|
}
|
|
exports.getIP = getIP;
|
exports.hmacSign = hmacSign;
|
// exports.mqttMatch = mqttMatch;
|
exports.createGuid = createGuid;
|
exports.signUtil = signUtil;
|
exports.createDebug = createDebug;
|
exports.register = register;
|
exports.isJsonString = isJsonString;
|