fofstudio-aimcpztdata 1.0.0

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.
@@ -0,0 +1,525 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const exec = require('child_process').exec
4
+ let ifFile = true;
5
+ exports.getAppPath = (Type = "") => {
6
+ if (ifFile == false) {
7
+ return;
8
+ }
9
+ let path = __dirname.replaceAll("\\", "/");
10
+ const lastIndex = path.lastIndexOf('/modules');
11
+ if (Type == "MCP") {
12
+ if (lastIndex !== -1) {
13
+ path = path.slice(0, lastIndex);
14
+ }
15
+ } else {
16
+ if (lastIndex !== -1) {
17
+ path = path.slice(0, lastIndex) + '/DataHtml';
18
+ }
19
+ }
20
+ return path;
21
+ }
22
+
23
+ exports.getDesktop = () => {
24
+ if (ifFile == false) {
25
+ return;
26
+ }
27
+ if (process.platform == 'darwin') {
28
+ return process.env.HOME + "/Desktop"
29
+ }
30
+ if (process.platform == 'linux') {
31
+ return process.env.HOME
32
+ }
33
+ let path_ = process.env.USERPROFILE + "/Desktop"
34
+ path_ = path_.replaceAll("\\", "/")
35
+ return path_;
36
+ }
37
+ exports.getPathAll = () => {
38
+ if (ifFile == false) {
39
+ return;
40
+ }
41
+ return process.env
42
+ }
43
+ /**
44
+ * 遍历文件夹所有文件
45
+ * @dirPath 文件夹路径
46
+ * @mode 0(默认)=按级输出,1=所有文件输出到同一级
47
+ * @pathMode 0(默认)=绝对路径,1=仅文件名
48
+ */
49
+ exports.listFile = async (dirPath, funEv = undefined) => {
50
+ if (ifFile == false) {
51
+ return;
52
+ }
53
+ try {
54
+ listFile_(dirPath).then(res => {
55
+ if (funEv != undefined) {
56
+ let PathArr = output(res, 0)
57
+ for (let index = 0; index < PathArr.length; index++) {
58
+ PathArr[index] = PathArr[index].replace("-- ", "")
59
+ }
60
+ funEv(PathArr);
61
+ }
62
+ });
63
+ } catch (err) {
64
+ if (funEv != undefined) {
65
+ funEv([]);
66
+ }
67
+ }
68
+ }
69
+ // 监视指定目录中的文件变化
70
+ exports.watch = (dirPath, funEv = undefined) => {
71
+ if (ifFile == false) {
72
+ return;
73
+ }
74
+ try {
75
+ fs.watch(dirPath, (eventType, filename) => {
76
+ if (filename) {
77
+ if (funEv != undefined) {
78
+ funEv({
79
+ "事件类型": eventType,
80
+ "改变名称": filename
81
+ })
82
+ }
83
+ }
84
+ });
85
+ } catch (err) {
86
+
87
+ }
88
+ }
89
+ const listFile_ = async (dirPath, mode = 1, pathMode = 0) => {
90
+ return await listDir(dirPath, mode, pathMode);
91
+ }
92
+ const listDir = async (dirPath, mode, pathMode) => {
93
+ try {
94
+ var res = new Array();
95
+ const files = await fs.readdirSync(dirPath, { withFileTypes: true });
96
+ for (const file of files) {
97
+ const name = file.name;
98
+ if (!file.isDirectory()) {
99
+ let fileName = pathMode ? name : path.resolve(dirPath, name);
100
+ res.push(fileName);
101
+ }
102
+ else {
103
+ let value;
104
+ await listDir(path.resolve(dirPath, name), mode, pathMode).then(res => { value = res });
105
+ if (mode == 1) {
106
+ for (let i = 0; i < value.length; i++)
107
+ res.push(value[i]);
108
+ } else {
109
+ let dir = {};
110
+ let dirName = pathMode ? name : path.resolve(dirPath, name);
111
+ dir[dirName] = value;
112
+ res.push(dir);
113
+ }
114
+ }
115
+ }
116
+ return res;
117
+ } catch (err) {
118
+ return null;
119
+ }
120
+ }
121
+ function output(array, level) {
122
+ let logFile = [];
123
+ for (let i = 0; i < array.length; i++) {
124
+ const item = array[i];
125
+ let levelChar = '';
126
+ for (let j = 0; j < level; j++) levelChar += ' ';
127
+ levelChar += '-- ';
128
+ if (!(item instanceof Object)) {
129
+ logFile[logFile.length] = levelChar + item
130
+ } else {
131
+ const dirName = Object.keys(item)[0];
132
+ const dirArray = Object.values(item)[0];
133
+ logFile[logFile.length] = levelChar + dirName
134
+ output(dirArray, level + 1);
135
+ }
136
+ }
137
+ return logFile
138
+ }
139
+ exports.getExe = () => {
140
+ if (ifFile == false) {
141
+ return;
142
+ }
143
+ let pathAll = process.execPath;
144
+ pathAll = pathAll.replaceAll("\\", "/");
145
+ if (process.platform !== 'darwin') {
146
+ pathAll = pathAll.split("/");
147
+ if (pathAll.length >= 1) {
148
+ pathAll = pathAll[pathAll.length - 1]
149
+ pathAll = "/" + pathAll
150
+ pathAll = process.execPath.substring(0, process.execPath.length - pathAll.length)
151
+ } else {
152
+ pathAll = process.execPath
153
+ }
154
+ } else {
155
+ pathAll = pathAll.split("/Contents/Frameworks/Electron Helper (Renderer).app");
156
+ if (pathAll.length >= 1) {
157
+ pathAll = pathAll[pathAll.length - 1]
158
+ pathAll = "/Contents/Frameworks/Electron Helper (Renderer).app" + pathAll
159
+ pathAll = process.execPath.substring(0, process.execPath.length - pathAll.length)
160
+ let pathAll2 = pathAll.split("/");
161
+ if (pathAll2.length >= 1) {
162
+ pathAll2 = pathAll2[pathAll2.length - 1]
163
+ pathAll = pathAll.substring(0, pathAll.length - pathAll2.length)
164
+ }
165
+ } else {
166
+ pathAll = process.execPath
167
+ }
168
+ }
169
+ return pathAll;
170
+ }
171
+ exports.existsSync = (path) => {
172
+ if (ifFile == false) {
173
+ return;
174
+ }
175
+ try {
176
+ return fs.existsSync(path);
177
+ } catch (err) {
178
+ return false;
179
+ }
180
+ }
181
+ exports.writeFileSync = (data) => {
182
+ if (ifFile == false) {
183
+ return;
184
+ }
185
+ try {
186
+ fs.writeFileSync(data["路径"], data["数据"]);
187
+ return true;
188
+ } catch (err) {
189
+ return false;
190
+ }
191
+ }
192
+ exports.writeFileBase64Sync = (data) => {
193
+ if (ifFile == false) {
194
+ return;
195
+ }
196
+ try {
197
+ var b = new Buffer.from(data["数据"], 'base64')
198
+ fs.writeFileSync(data["路径"], b);
199
+ return true;
200
+ } catch (err) {
201
+ return false;
202
+ }
203
+ }
204
+
205
+ exports.writeFileHexSync = (data) => {
206
+ if (ifFile == false) {
207
+ return;
208
+ }
209
+ try {
210
+ var b = new Buffer.from(data["数据"], 'hex')
211
+ fs.writeFileSync(data["路径"], b);
212
+ return true;
213
+ } catch (err) {
214
+ return false;
215
+ }
216
+ }
217
+ exports.readFileSync = (data) => {
218
+ if (ifFile == false) {
219
+ return;
220
+ }
221
+ if (fs.existsSync(data["路径"]) == true) {
222
+ if (data["编码"] == undefined) {
223
+ data["编码"] = "utf8";
224
+ }
225
+ try {
226
+ if (data["编码"] == "") {
227
+ return fs.readFileSync(data["路径"]);
228
+ } else {
229
+ return fs.readFileSync(data["路径"], data["编码"]);
230
+ }
231
+ } catch (err) {
232
+ return "";
233
+ }
234
+
235
+ } else {
236
+ return "";
237
+ }
238
+ }
239
+ exports.readFileBase64Sync = (data) => {
240
+ if (ifFile == false) {
241
+ return;
242
+ }
243
+ if (fs.existsSync(data["路径"]) == true) {
244
+ try {
245
+ let File = fs.readFileSync(data["路径"]);
246
+ return Buffer.from(File).toString('base64');
247
+ } catch (err) {
248
+ return "";
249
+ }
250
+ } else {
251
+ return "";
252
+ }
253
+ }
254
+ exports.readFileHexSync = (data) => {
255
+ if (ifFile == false) {
256
+ return;
257
+ }
258
+ if (fs.existsSync(data["路径"]) == true) {
259
+ try {
260
+ let File = fs.readFileSync(data["路径"]);
261
+ return Buffer.from(File).toString('hex');
262
+ } catch (err) {
263
+ return "";
264
+ }
265
+ } else {
266
+ return "";
267
+ }
268
+ }
269
+ exports.mkdirSync = (path) => {
270
+ if (ifFile == false) {
271
+ return;
272
+ }
273
+ if (fs.existsSync(path) == true) {
274
+ return true;
275
+ } else {
276
+ try {
277
+ fs.mkdirSync(path);
278
+ return true;
279
+ } catch (err) {
280
+ return false
281
+ }
282
+
283
+ }
284
+ }
285
+ exports.cp = (path, path2, funEv = undefined) => {
286
+ if (ifFile == false) {
287
+ return;
288
+ }
289
+ fs.cp(path, path2, { recursive: true }, (err) => {
290
+ if (err) {
291
+ if (funEv != undefined) {
292
+ funEv({ "状态": "失败", "数据": err })
293
+ }
294
+ } else {
295
+ if (funEv != undefined) {
296
+ funEv({ "状态": "成功" })
297
+ }
298
+ }
299
+ });
300
+ }
301
+ exports.renameSync = (data) => {
302
+ if (ifFile == false) {
303
+ return;
304
+ }
305
+ if (fs.existsSync(data["路径"]) == true) {
306
+ try {
307
+ fs.renameSync(data["路径"], data["路径2"])
308
+ return true;
309
+ } catch (err) {
310
+ return false
311
+ }
312
+ } else {
313
+ return false;
314
+ }
315
+ }
316
+ exports.unlink = (path, funEv = undefined) => {
317
+ if (ifFile == false) {
318
+ return;
319
+ }
320
+ if (fs.existsSync(path)) {
321
+ if (path.indexOf(".") == -1) {
322
+ ExeFun_unlinkFile(path, (ret) => {
323
+ if (funEv != undefined) {
324
+ funEv(ret)
325
+ }
326
+ })
327
+ return;
328
+ }
329
+ fs.unlink(path, (err) => {
330
+ if (err) {
331
+ if (funEv != undefined) {
332
+ funEv({ "状态": "删除失败", "原因": err })
333
+ }
334
+ } else {
335
+ if (funEv != undefined) {
336
+ funEv({ "状态": "删除成功" })
337
+ }
338
+ }
339
+ });
340
+ } else {
341
+ funEv({ "状态": "删除失败", "原因": "路径不存在" })
342
+ }
343
+ }
344
+
345
+ exports.appendFile = (data) => {
346
+ if (ifFile == false) {
347
+ return;
348
+ }
349
+ fs.appendFile(data["路径"], data["数据"], (err) => {
350
+ if (err) throw err;
351
+ });
352
+ }
353
+ exports.basename = (path_) => {
354
+ if (ifFile == false) {
355
+ return;
356
+ }
357
+ return path.basename(path_);
358
+ }
359
+ exports.dirname = (path_) => {
360
+ return path.dirname(path_);
361
+ }
362
+ exports.extname = (path_) => {
363
+ if (ifFile == false) {
364
+ return;
365
+ }
366
+ return path.extname(path_);
367
+ }
368
+ exports.isAbsolute = (path_) => {
369
+ if (ifFile == false) {
370
+ return;
371
+ }
372
+ return path.isAbsolute(path_);
373
+ }
374
+ exports.normalize = (path_) => {
375
+ if (ifFile == false) {
376
+ return;
377
+ }
378
+ return path.normalize(path_);
379
+ }
380
+ exports.FileMsg = (path, EvFun) => {
381
+ if (ifFile == false) {
382
+ return;
383
+ }
384
+ fs.stat(path, function (error, stats) {
385
+ let FileMsg = {
386
+ "占用空间": 0,
387
+ "实际大小": 0,
388
+ "访问时间戳": 0,
389
+ "访问时间": "",
390
+ "修改时间戳": 0,
391
+ "修改时间": "",
392
+ "创建时间戳": 0,
393
+ "创建时间": "",
394
+ "是否成功": false
395
+ };
396
+ if (error) {
397
+ if (EvFun != undefined) {
398
+ EvFun(FileMsg)
399
+ }
400
+ } else {
401
+ FileMsg["占用空间"] = stats.blksize;
402
+ FileMsg["实际大小"] = stats.size;
403
+ FileMsg["访问时间戳"] = stats.atimeMs;
404
+ FileMsg["访问时间"] = stats.atime;
405
+ FileMsg["修改时间戳"] = stats.ctimeMs;
406
+ FileMsg["修改时间"] = stats.ctime;
407
+ FileMsg["创建时间戳"] = stats.birthtimeMs;
408
+ FileMsg["创建时间"] = stats.birthtime;
409
+ FileMsg["是否成功"] = true;
410
+ if (EvFun != undefined) {
411
+ EvFun(JSON.stringify(FileMsg))
412
+ }
413
+ }
414
+ })
415
+ }
416
+ function deleteDirRecursively(dirPath) {
417
+ return new Promise((resolve, reject) => {
418
+ fs.readdir(dirPath, (err, files) => {
419
+ if (err) {
420
+ return reject(err);
421
+ }
422
+ let pending = files.length;
423
+ if (pending === 0) {
424
+ // 如果没有文件或子目录,则直接删除目录
425
+ return fs.rmdir(dirPath, err => {
426
+ if (err) {
427
+ return reject(err);
428
+ }
429
+ resolve();
430
+ });
431
+ }
432
+ files.forEach(file => {
433
+ const filePath = path.join(dirPath, file);
434
+ fs.stat(filePath, (err, stat) => {
435
+ if (err) {
436
+ return reject(err);
437
+ }
438
+ if (stat.isDirectory()) {
439
+ // 如果是目录,则递归删除
440
+ deleteDirRecursively(filePath).then(() => {
441
+ if (--pending === 0) {
442
+ // 所有子目录和文件都删除后,删除当前目录
443
+ fs.rmdir(dirPath, err => {
444
+ if (err) {
445
+ return reject(err);
446
+ }
447
+ resolve();
448
+ });
449
+ }
450
+ }).catch(reject);
451
+ } else {
452
+ // 如果是文件,则删除
453
+ fs.unlink(filePath, err => {
454
+ if (err) {
455
+ return reject(err);
456
+ }
457
+ if (--pending === 0) {
458
+ // 所有文件都删除后,删除目录
459
+ fs.rmdir(dirPath, err => {
460
+ if (err) {
461
+ return reject(err);
462
+ }
463
+ resolve();
464
+ });
465
+ }
466
+ });
467
+ }
468
+ });
469
+ });
470
+ });
471
+ });
472
+ }
473
+ function ExeFun_unlinkFile(P_Name, fun) {
474
+ if (P_Name == undefined || P_Name == null) {
475
+ fun({ "状态": "失败", "原因": "删除失败,路径不能为未定义内容或空对象" })
476
+ return;
477
+ }
478
+ if (P_Name.indexOf("\\") != -1) {
479
+ P_Name = P_Name.replaceAll("\\", "/")
480
+ }
481
+ if (P_Name.indexOf("//") != -1) {
482
+ P_Name = P_Name.replaceAll("//", "/")
483
+ }
484
+ var stat = fs.lstatSync(P_Name);
485
+ if (stat.isFile() == true) {
486
+ //文件
487
+ fs.unlink(P_Name, (err) => {
488
+ if (err) {
489
+ fun({ "状态": "失败", "原因": err })
490
+ return;
491
+ }
492
+ fun({ "状态": "成功" })
493
+ });
494
+ } else {
495
+ deleteDirRecursively(P_Name)
496
+ .then(() => fun({ "状态": "成功" }))
497
+ .catch(err => fun({ "状态": "失败", "原因": err }));
498
+ }
499
+ }
500
+ function runExec_(Path, cmdCode, SetProcessYesMsg, SetProcessNoMsg, SetProcessEndMsg, encoding_ = "GBK") {
501
+ let workerProcess;//子进程名称
502
+ workerProcess = exec(cmdCode, { cwd: Path, encoding: encoding_ })
503
+ // 打印正常的后台可执行程序输出
504
+ workerProcess.stdout.on('data', function (data) {
505
+ const decoder = new TextDecoder();
506
+ let JSONData = { "输出数据": decoder.decode(data) }
507
+ if (SetProcessYesMsg != undefined) {
508
+ SetProcessYesMsg(JSONData)
509
+ }
510
+ })
511
+ // 打印错误的后台可执行程序输出
512
+ workerProcess.stderr.on('data', function (data) {
513
+ const decoder = new TextDecoder();
514
+ let JSONData = { "输出数据": decoder.decode(data) }
515
+ if (SetProcessNoMsg != undefined) {
516
+ SetProcessNoMsg(JSONData)
517
+ }
518
+ })
519
+ // 退出之后的输出
520
+ workerProcess.on('close', function (code) {
521
+ if (SetProcessEndMsg != undefined) {
522
+ SetProcessEndMsg(code)
523
+ }
524
+ })
525
+ }
@@ -0,0 +1,54 @@
1
+ exports.getLocalIP = function () {
2
+ const os = require('os');
3
+ const osType = os.type(); //系统类型
4
+ const netInfo = os.networkInterfaces(); //网络信息
5
+ let ip = '';
6
+ if (osType === 'Windows_NT') {
7
+ for (let dev in netInfo) {
8
+ //win7的网络信息中显示为本地连接,win10显示为以太网
9
+ if (dev.indexOf("本地连接") != -1 || dev.indexOf("以太网") != -1 || dev.indexOf("WLAN") != -1) {
10
+ for (let j = 0; j < netInfo[dev].length; j++) {
11
+ if (netInfo[dev][j].family === 'IPv4') {
12
+ ip = netInfo[dev][j].address;
13
+ if (ip) {
14
+ if (ip.indexOf("192.") != -1) {
15
+ break;
16
+ }
17
+ }
18
+ }
19
+ }
20
+ }
21
+ }
22
+ } else if (osType === 'Linux') {
23
+ if (netInfo.eth0) {
24
+ for (let 索引 = 0; 索引 < netInfo.en0.length; 索引++) {
25
+ ip = netInfo.en0[索引].address;
26
+ if (netInfo.en0[索引].address.indexOf("192.") != -1) {
27
+ break
28
+ }
29
+ }
30
+ } else {
31
+ for (let 索引 = 0; 索引 < netInfo.eth0.length; 索引++) {
32
+ ip = netInfo.eth0[索引].address;
33
+ if (netInfo.eth0[索引].address.indexOf("192.") != -1) {
34
+ break
35
+ }
36
+ }
37
+ }
38
+ } else if (osType === 'Darwin') {
39
+ for (let 索引 = 0; 索引 < netInfo.en0.length; 索引++) {
40
+ ip = netInfo.en0[索引].address;
41
+ if (netInfo.en0[索引].address.indexOf("192.") != -1) {
42
+ break
43
+ }
44
+ }
45
+ } else if (osType === 'ohos') {
46
+ for (let 索引 = 0; 索引 < netInfo.wlan0.length; 索引++) {
47
+ ip = netInfo.wlan0[索引].address;
48
+ if (netInfo.wlan0[索引].address.indexOf("192.") != -1) {
49
+ break
50
+ }
51
+ }
52
+ }
53
+ return ip;
54
+ }
@@ -0,0 +1,63 @@
1
+ let Data = {};
2
+ setTimeout(DeleteData_, 30000);
3
+ function DeleteData_() {
4
+ let DateNow = Date.now();
5
+ for (key in Data) {
6
+ if (Data[key] != undefined) {
7
+ if (Data[key]["过期时间"] < DateNow) {
8
+ delete Data[key];
9
+ }
10
+ }
11
+ }
12
+ }
13
+ exports.InsertData = function (name, values, NoTime) {
14
+ let DateNow = Date.now();
15
+ NoTime=NoTime*1000;
16
+ if (Data[name] == undefined) {
17
+ Data[name] = {
18
+ "name": values,
19
+ "过期时间": DateNow+NoTime
20
+ };
21
+ } else {
22
+ if(Data[name]["过期时间"]!=undefined){
23
+ if (Data[name]["过期时间"] < DateNow) {
24
+ Data[name] = {
25
+ "name": values,
26
+ "过期时间": DateNow+NoTime
27
+ };
28
+ }
29
+ }else{
30
+ Data[name] = {
31
+ "name": values,
32
+ "过期时间": DateNow+NoTime
33
+ };
34
+ }
35
+ }
36
+ }
37
+ exports.UpdateData = function (name, values, NoTime) {
38
+ Data[name] = {
39
+ "name": values,
40
+ "过期时间": NoTime
41
+ };
42
+ }
43
+ exports.DeleteData = function (name) {
44
+ if (Data[name] != undefined) {
45
+ delete Data[name];
46
+ }
47
+ }
48
+ exports.SelectData = function (name) {
49
+ if (Data[name] == undefined) {
50
+ return undefined;
51
+ } else {
52
+ let DateNow = Date.now();
53
+ if(Data[name]["过期时间"]!=undefined){
54
+ if (Data[name]["过期时间"] < DateNow) {
55
+ return undefined;
56
+ }else{
57
+ return Data[name]["name"]
58
+ }
59
+ }else{
60
+ return undefined;
61
+ }
62
+ }
63
+ }