hunter-open-sdk 2.0.0-beta.6 → 2.0.0-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/abilities/activate/index.js +56 -0
- package/lib/abilities/activate/worker.js +29 -0
- package/lib/abilities/erase/index.js +56 -0
- package/lib/abilities/erase/worker.js +29 -0
- package/lib/abilities/getGeneralReport/index.js +54 -0
- package/lib/abilities/getGeneralReport/worker.js +27 -0
- package/lib/abilities/getSaaSReport/index.js +54 -0
- package/lib/abilities/getSaaSReport/worker.js +19 -0
- package/lib/abilities/skip/index.js +56 -0
- package/lib/abilities/skip/worker.js +29 -0
- package/lib/events/driver/command.js +8 -9
- package/lib/events/driver/service.js +24 -35
- package/lib/events/driver/winDriver.js +120 -187
- package/lib/getAndroidSn/index.js +134 -198
- package/lib/helper/deviceHelper.js +19 -37
- package/lib/index.js +12 -6
- package/lib/registerEvent/index.js +149 -247
- package/lib/resources/dll/{libinspectionkit_x64_0.1.0.dll → libinspectionkit_x64_0.2.0.dll} +0 -0
- package/lib/resources/mac/{libinspectionkit_arm64_0.1.0.dylib → libinspectionkit_amd64_0.2.0.dylib} +0 -0
- package/lib/resources/mac/libinspectionkit_arm64_0.2.0.dylib +0 -0
- package/lib/resources/version.online +1 -1
- package/lib/utils/utils.command.js +8 -9
- package/lib/utils/utils.common.js +14 -0
- package/lib/utils/{utils.js → utils.env.js} +15 -15
- package/lib/utils/utils.global.js +164 -40
- package/lib/utils/utils.initDll.js +12 -11
- package/lib/utils/utils.path.js +4 -3
- package/lib/utils/utils.process.js +23 -0
- package/lib/utils/utils.sn.js +31 -47
- package/package.json +7 -6
- package/lib/getGeneralReport/index.js +0 -76
- package/lib/getGeneralReport/worker.js +0 -20
- package/lib/getSaaSReport/index.js +0 -76
- package/lib/getSaaSReport/worker.js +0 -20
- package/lib/resources/mac/libinspectionkit_amd64_0.1.0.dylib +0 -0
|
@@ -1,228 +1,164 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.UnregisterAndroidSn = exports.GetAndroidSn = void 0;
|
|
8
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
7
|
var _usb = require("usb");
|
|
11
|
-
var _utils = require("../utils/utils");
|
|
8
|
+
var _utils = require("../utils/utils.env");
|
|
12
9
|
var _utils2 = require("../utils/utils.sn");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
const childProcess = require('child_process');
|
|
11
|
+
const exec = childProcess.exec;
|
|
12
|
+
let hadRegisterUsb = false; // 是否已经注册过usb事件
|
|
13
|
+
let isPause = false; // 是否暂停获取sn
|
|
17
14
|
|
|
18
15
|
// mac获取sn
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
_context.next = 19;
|
|
66
|
-
break;
|
|
67
|
-
}
|
|
68
|
-
callBack({
|
|
69
|
-
code: -1,
|
|
70
|
-
data: {},
|
|
71
|
-
message: '暂不支持该品牌手机查询SN'
|
|
72
|
-
});
|
|
73
|
-
return _context.abrupt("return");
|
|
74
|
-
case 19:
|
|
75
|
-
callBack({
|
|
76
|
-
code: 0,
|
|
77
|
-
data: {
|
|
78
|
-
SN: currentDevice[0].serialNumber
|
|
79
|
-
},
|
|
80
|
-
message: '获取SN成功'
|
|
81
|
-
});
|
|
82
|
-
case 20:
|
|
83
|
-
case "end":
|
|
84
|
-
return _context.stop();
|
|
85
|
-
}
|
|
86
|
-
}, _callee);
|
|
87
|
-
}));
|
|
88
|
-
return function getMacSn(_x, _x2) {
|
|
89
|
-
return _ref.apply(this, arguments);
|
|
90
|
-
};
|
|
91
|
-
}();
|
|
16
|
+
const getMacSn = async (device, callBack) => {
|
|
17
|
+
// 拿到当前连接的设备deviceAddress 作为标识去usb列表筛选
|
|
18
|
+
const attachDeviceId = device.deviceAddress;
|
|
19
|
+
const customWebUSB = new _usb.WebUSB({
|
|
20
|
+
allowAllDevices: true
|
|
21
|
+
});
|
|
22
|
+
const deviceList = await customWebUSB.getDevices();
|
|
23
|
+
|
|
24
|
+
// 如果设备没有attachDeviceId 则直接返回
|
|
25
|
+
if (!attachDeviceId) return;
|
|
26
|
+
|
|
27
|
+
// 删选出当前的设备信息 为获取到serialNumber
|
|
28
|
+
const currentDevice = deviceList.filter(item => item.device.deviceAddress == attachDeviceId);
|
|
29
|
+
if (!currentDevice.length) {
|
|
30
|
+
callBack({
|
|
31
|
+
code: -1,
|
|
32
|
+
data: {},
|
|
33
|
+
message: '获取SN失败'
|
|
34
|
+
});
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// 检查设备是否为支持的三星、华为、荣耀手机品牌
|
|
39
|
+
const deviceInfo = currentDevice[0];
|
|
40
|
+
const productName = deviceInfo.productName?.toLowerCase() || '';
|
|
41
|
+
const manufacturerName = deviceInfo.manufacturerName?.toLowerCase() || '';
|
|
42
|
+
|
|
43
|
+
// 支持的三星、华为、荣耀品牌关键词
|
|
44
|
+
const supportedBrands = ['samsung', 'galaxy', 'huawei', 'honor', 'honor magic'];
|
|
45
|
+
const isSupportedBrand = supportedBrands.some(brand => productName.includes(brand) || manufacturerName.includes(brand));
|
|
46
|
+
if (!isSupportedBrand) {
|
|
47
|
+
callBack({
|
|
48
|
+
code: -1,
|
|
49
|
+
data: {},
|
|
50
|
+
message: '暂不支持该品牌手机查询SN'
|
|
51
|
+
});
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
callBack({
|
|
55
|
+
code: 0,
|
|
56
|
+
data: {
|
|
57
|
+
SN: currentDevice[0].serialNumber
|
|
58
|
+
},
|
|
59
|
+
message: '获取SN成功'
|
|
60
|
+
});
|
|
61
|
+
};
|
|
92
62
|
|
|
93
63
|
// win获取sn
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
data: {},
|
|
117
|
-
message: "windows\u8FD0\u884C\u7A0B\u5E8F\u83B7\u53D6SN\u5931\u8D25stderr: ".concat(stderr)
|
|
118
|
-
});
|
|
119
|
-
return;
|
|
120
|
-
}
|
|
64
|
+
const getWinSn = async (device, callBack) => {
|
|
65
|
+
// windows 需要运行命令获取sn
|
|
66
|
+
const cmdStr = `wmic path Win32_PnPEntity where "DeviceID like \'USB%\'" get Name, PNPDeviceID /value`;
|
|
67
|
+
exec(cmdStr, function (err, stdout, stderr) {
|
|
68
|
+
if (err) {
|
|
69
|
+
// 运行失败 则直接返回获取失败
|
|
70
|
+
callBack({
|
|
71
|
+
code: -1,
|
|
72
|
+
data: {},
|
|
73
|
+
message: `windows运行程序获取SN失败err: ${err}`
|
|
74
|
+
});
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (stderr) {
|
|
78
|
+
// 运行失败 则直接返回获取失败
|
|
79
|
+
callBack({
|
|
80
|
+
code: -1,
|
|
81
|
+
data: {},
|
|
82
|
+
message: `windows运行程序获取SN失败stderr: ${stderr}`
|
|
83
|
+
});
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
121
86
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
case "end":
|
|
150
|
-
return _context2.stop();
|
|
151
|
-
}
|
|
152
|
-
}, _callee2);
|
|
153
|
-
}));
|
|
154
|
-
return function getWinSn(_x3, _x4) {
|
|
155
|
-
return _ref2.apply(this, arguments);
|
|
156
|
-
};
|
|
157
|
-
}();
|
|
87
|
+
// 处理WMIC输出并提取手机序列号
|
|
88
|
+
const phoneDevices = (0, _utils2.parseWmicOutput)(stdout);
|
|
89
|
+
if (phoneDevices.length === 0) {
|
|
90
|
+
callBack({
|
|
91
|
+
code: -1,
|
|
92
|
+
data: {},
|
|
93
|
+
message: `暂不支持该品牌手机查询SN`
|
|
94
|
+
});
|
|
95
|
+
} else {
|
|
96
|
+
console.log('检测到的手机设备:');
|
|
97
|
+
const sn = phoneDevices[0].serial;
|
|
98
|
+
callBack({
|
|
99
|
+
code: 0,
|
|
100
|
+
data: {
|
|
101
|
+
SN: sn
|
|
102
|
+
},
|
|
103
|
+
message: `获取SN成功`
|
|
104
|
+
});
|
|
105
|
+
// phoneDevices.forEach(device => {
|
|
106
|
+
// console.log(`设备名称: ${device.name}`);
|
|
107
|
+
// console.log(`序列号: ${device.serial}`);
|
|
108
|
+
// console.log(`PNPDeviceID: ${device.pnpDeviceId}`);
|
|
109
|
+
// console.log('---');
|
|
110
|
+
// });
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
};
|
|
158
114
|
|
|
159
115
|
/**
|
|
160
116
|
* 获取Android SN
|
|
161
117
|
* @param {Object} params - 参数
|
|
162
118
|
* @param {Function} callBack - 回调函数
|
|
163
119
|
*/
|
|
164
|
-
|
|
120
|
+
const GetAndroidSn = (params, callBack) => {
|
|
165
121
|
if (hadRegisterUsb) {
|
|
166
122
|
isPause = false;
|
|
167
123
|
return;
|
|
168
124
|
}
|
|
169
125
|
hadRegisterUsb = true;
|
|
170
|
-
_usb.usb.on('attach',
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
// mac获取sn
|
|
200
|
-
getMacSn(device, callBack);
|
|
201
|
-
return _context3.abrupt("return");
|
|
202
|
-
case 9:
|
|
203
|
-
if (!(0, _utils.isWin)()) {
|
|
204
|
-
_context3.next = 12;
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
// win获取sn
|
|
208
|
-
getWinSn(device, callBack);
|
|
209
|
-
return _context3.abrupt("return");
|
|
210
|
-
case 12:
|
|
211
|
-
case "end":
|
|
212
|
-
return _context3.stop();
|
|
213
|
-
}
|
|
214
|
-
}, _callee3);
|
|
215
|
-
}));
|
|
216
|
-
return function (_x5) {
|
|
217
|
-
return _ref3.apply(this, arguments);
|
|
218
|
-
};
|
|
219
|
-
}());
|
|
220
|
-
_usb.usb.on('detach', function () {
|
|
126
|
+
_usb.usb.on('attach', async device => {
|
|
127
|
+
if (isPause) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const {
|
|
131
|
+
idVendor
|
|
132
|
+
} = device.deviceDescriptor;
|
|
133
|
+
if (idVendor == 1452) {
|
|
134
|
+
// 表示该机器为苹果产品,则不进行获取sn
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
callBack({
|
|
138
|
+
data: {
|
|
139
|
+
eventName: 'type_usb_android_device_result',
|
|
140
|
+
eventCode: 0
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
if ((0, _utils.isMac)()) {
|
|
144
|
+
// mac获取sn
|
|
145
|
+
getMacSn(device, callBack);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if ((0, _utils.isWin)()) {
|
|
149
|
+
// win获取sn
|
|
150
|
+
getWinSn(device, callBack);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
_usb.usb.on('detach', () => {
|
|
221
155
|
if (isPause) {
|
|
222
156
|
return;
|
|
223
157
|
}
|
|
224
158
|
});
|
|
225
159
|
};
|
|
226
|
-
|
|
160
|
+
exports.GetAndroidSn = GetAndroidSn;
|
|
161
|
+
const UnregisterAndroidSn = () => {
|
|
227
162
|
isPause = true;
|
|
228
|
-
};
|
|
163
|
+
};
|
|
164
|
+
exports.UnregisterAndroidSn = UnregisterAndroidSn;
|
|
@@ -1,45 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.deviceHelper = void 0;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var DeviceHelper = /*#__PURE__*/function () {
|
|
11
|
-
function DeviceHelper() {
|
|
12
|
-
(0, _classCallCheck2.default)(this, DeviceHelper);
|
|
7
|
+
class DeviceHelper {
|
|
8
|
+
constructor() {
|
|
13
9
|
this.udidList = [];
|
|
14
10
|
}
|
|
15
|
-
(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}, {
|
|
33
|
-
key: "hasUdid",
|
|
34
|
-
value: function hasUdid(udid) {
|
|
35
|
-
return this.udidList.includes(udid);
|
|
36
|
-
}
|
|
37
|
-
}, {
|
|
38
|
-
key: "clearUdidList",
|
|
39
|
-
value: function clearUdidList() {
|
|
40
|
-
this.udidList = [];
|
|
41
|
-
}
|
|
42
|
-
}]);
|
|
43
|
-
return DeviceHelper;
|
|
44
|
-
}();
|
|
45
|
-
var deviceHelper = exports.deviceHelper = new DeviceHelper();
|
|
11
|
+
addUdid(udid) {
|
|
12
|
+
this.udidList.push(udid);
|
|
13
|
+
}
|
|
14
|
+
getUdidList() {
|
|
15
|
+
return this.udidList;
|
|
16
|
+
}
|
|
17
|
+
removeUdid(udid) {
|
|
18
|
+
this.udidList = this.udidList.filter(item => item !== udid);
|
|
19
|
+
}
|
|
20
|
+
hasUdid(udid) {
|
|
21
|
+
return this.udidList.includes(udid);
|
|
22
|
+
}
|
|
23
|
+
clearUdidList() {
|
|
24
|
+
this.udidList = [];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const deviceHelper = exports.deviceHelper = new DeviceHelper();
|
package/lib/index.js
CHANGED
|
@@ -5,10 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _registerEvent = require("./registerEvent");
|
|
8
|
-
var _getGeneralReport = require("./getGeneralReport");
|
|
9
|
-
var _getSaaSReport = require("./getSaaSReport");
|
|
10
8
|
var _getAndroidSn = require("./getAndroidSn");
|
|
11
|
-
var
|
|
9
|
+
var _getSaaSReport = require("./abilities/getSaaSReport");
|
|
10
|
+
var _getGeneralReport = require("./abilities/getGeneralReport");
|
|
11
|
+
var _erase = require("./abilities/erase");
|
|
12
|
+
var _activate = require("./abilities/activate");
|
|
13
|
+
var _skip = require("./abilities/skip");
|
|
14
|
+
const Sentry = require("@sentry/browser");
|
|
12
15
|
Sentry.init({
|
|
13
16
|
dsn: "https://8a5296c59083430fbac0756f56ddbf5d@sentry.zhuanzhuan.com/2300",
|
|
14
17
|
tracesSampleRate: 1.0
|
|
@@ -18,8 +21,11 @@ console.log('Sentry initialized');
|
|
|
18
21
|
var _default = exports.default = {
|
|
19
22
|
registerEvent: _registerEvent.RegisterEvent,
|
|
20
23
|
unregisterEvent: _registerEvent.UnregisterEvent,
|
|
21
|
-
getGeneralReport: _getGeneralReport.GetGeneralReport,
|
|
22
|
-
getSaaSReport: _getSaaSReport.GetSaaSReport,
|
|
23
24
|
getAndroidSn: _getAndroidSn.GetAndroidSn,
|
|
24
|
-
unregisterAndroidSn: _getAndroidSn.UnregisterAndroidSn
|
|
25
|
+
unregisterAndroidSn: _getAndroidSn.UnregisterAndroidSn,
|
|
26
|
+
getSaaSReport: _getSaaSReport.getSaaSReport,
|
|
27
|
+
getGeneralReport: _getGeneralReport.getGeneralReport,
|
|
28
|
+
erase: _erase.erase,
|
|
29
|
+
activate: _activate.activate,
|
|
30
|
+
skip: _skip.skip
|
|
25
31
|
};
|