'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;