mm_os 3.2.9 → 3.3.1

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.
Files changed (56) hide show
  1. package/README.md +47 -1
  2. package/core/base/mqtt/index.js +1109 -1106
  3. package/core/base/web/index.js +245 -156
  4. package/core/com/event/README.md +4 -4
  5. package/core/com/event/com.json +3 -3
  6. package/core/com/event/config.tpl.json +18 -18
  7. package/core/com/event/drive.js +132 -132
  8. package/core/com/event/index.js +344 -344
  9. package/core/com/event/script.js +25 -25
  10. package/core/com/middleware/com.js +152 -151
  11. package/core/com/socket/config.tpl.json +2 -2
  12. package/core/com/socket/drive.js +2 -2
  13. package/core/com/socket/index.js +1 -1
  14. package/core/com/sql/drive.js +7 -7
  15. package/core/com/static/index.js +1 -1
  16. package/index.js +34 -5
  17. package/middleware/cors/index.js +112 -96
  18. package/middleware/cors/middleware.json +18 -7
  19. package/middleware/csrf/index.js +202 -0
  20. package/middleware/csrf/middleware.json +24 -0
  21. package/middleware/ip_firewall/index.js +476 -0
  22. package/middleware/ip_firewall/middleware.json +109 -0
  23. package/middleware/mqtt_base/middleware.json +2 -1
  24. package/middleware/security_audit/index.js +543 -0
  25. package/middleware/security_audit/middleware.json +48 -0
  26. package/middleware/waf/index.js +273 -7
  27. package/middleware/waf/middleware.json +2 -1
  28. package/middleware/waf_ddos/index.js +520 -0
  29. package/middleware/waf_ddos/middleware.json +38 -0
  30. package/middleware/waf_xss/index.js +269 -0
  31. package/middleware/waf_xss/middleware.json +18 -0
  32. package/middleware/web_after/middleware.json +2 -1
  33. package/middleware/web_base/middleware.json +2 -1
  34. package/middleware/web_before/middleware.json +3 -2
  35. package/middleware/web_check/middleware.json +2 -1
  36. package/middleware/web_main/middleware.json +2 -1
  37. package/middleware/web_proxy/middleware.json +2 -1
  38. package/middleware/web_render/middleware.json +2 -1
  39. package/middleware/web_socket/middleware.json +4 -3
  40. package/middleware/web_static/middleware.json +2 -1
  41. package/package.json +28 -15
  42. package/middleware/log/index.js +0 -32
  43. package/middleware/log/middleware.json +0 -9
  44. package/middleware/performance/index.js +0 -143
  45. package/middleware/performance/middleware.json +0 -16
  46. package/middleware/rate_limit/index.js +0 -112
  47. package/middleware/rate_limit/middleware.json +0 -10
  48. package/middleware/waf_ip/index.js +0 -168
  49. package/middleware/waf_ip/middleware.json +0 -10
  50. package/nodemon.json +0 -31
  51. package/package.txt +0 -1
  52. package/rps.bat +0 -3
  53. package/test.js +0 -10
  54. package/tps.bat +0 -3
  55. package/update.bat +0 -1
  56. package//347/263/273/347/273/237/346/236/266/346/236/204/350/257/204/344/274/260/344/270/216/344/274/230/345/214/226/345/273/272/350/256/256.md +0 -599
@@ -1,133 +1,133 @@
1
- const Item = require('mm_machine').Item;
2
-
3
- /**
4
- * Event事件驱动类
5
- * @extends {Item}
6
- * @class
7
- */
8
- class Drive extends Item {
9
- /**
10
- * 构造函数
11
- * @param {String} dir 当前目录
12
- * @constructor
13
- */
14
- constructor(dir) {
15
- super(dir, __dirname);
16
- this.default_file = "./event.json";
17
-
18
- // 默认启用热更新
19
- this.mode = 3;
20
-
21
- /* 通用项 */
22
- // 配置参数
23
- this.config = {
24
- // 名称, 由中英文和下“_”组成, 用于修改或卸载 例如: demo
25
- "name": "",
26
- // 状态 0未启用,1启用
27
- "state": 1,
28
- // 标题, 介绍事件作用
29
- "title": "示例事件",
30
- // 描述, 用于描述该事件有什么用的
31
- "description": "描述事件使用方法",
32
- // 目标
33
- "target": "",
34
- // 阶段, 分执行前before、验证check、主要main、渲染render、执行后after阶段
35
- "stage": "main",
36
- // 文件路径, 当调用函数不存在时,会先从文件中加载
37
- "func_file": "./main.js",
38
- // 回调函数名 用于决定调用脚本的哪个函数
39
- "func_name": "",
40
- // 执行顺序, 数字越小,越优先执行
41
- "sort": 100,
42
- // 中断循环
43
- "end": true,
44
- // 请求方法
45
- "method": "ALL"
46
- };
47
- }
48
- }
49
-
50
- /**
51
- * 新建脚本
52
- * @param {String} 文件
53
- */
54
- Drive.prototype.new_script = function(file) {
55
- var fl = __dirname + "/script.js";
56
- if (fl.hasFile()) {
57
- var text = fl.loadText();
58
- if (text) {
59
- var l = $.slash;
60
- var arr = file.split(l);
61
- arr = arr.slice(arr.indexOf('app'));
62
- var app_name = arr[1];
63
- var event_name = arr[3];
64
- if (event_name === 'client') {
65
- text = text.replaceAll('{0}', app_name + '_' + event_name);
66
- } else if (event_name === 'manage') {
67
- text = text.replaceAll('{0}', app_name + '_' + event_name);
68
- } else {
69
- text = text.replaceAll('{0}', event_name);
70
- }
71
- file.saveText(text);
72
- }
73
- }
74
- };
75
-
76
- /**
77
- * 新建脚本
78
- * @param {String} 文件
79
- */
80
- Drive.prototype.new_config = function(file) {
81
- var fl = __dirname + "/config.tpl.json";
82
- if (fl.hasFile()) {
83
- var text = fl.loadText();
84
- if (text) {
85
- var l = $.slash;
86
- var arr = file.split(l);
87
- arr = arr.slice(arr.indexOf('app'));
88
- var app_name = arr[1];
89
- var event_name = arr[3];
90
- if (event_name === 'client') {
91
- text = text.replaceAll('{0}', app_name + '_' + event_name);
92
- text = text.replaceAll('{1}', '/api/' + app_name + '*');
93
- } else if (event_name === 'manage') {
94
- text = text.replaceAll('{0}', app_name + '_' + event_name);
95
- text = text.replaceAll('{1}', '/apis/' + app_name + '*');
96
- } else {
97
- text = text.replaceAll('{0}', event_name);
98
- text = text.replaceAll('{1}', '/' + event_name + '*');
99
- }
100
-
101
- file.saveText(text);
102
- }
103
- }
104
- };
105
-
106
- /**
107
- * 执行事件
108
- * @param {Object} ctx 请求上下文
109
- * @param {Object} db 数据管理器
110
- * @param {String} method 执行方法
111
- * @return {Object} 执行结果
112
- */
113
- Drive.prototype.run = async function(ctx, db, method = 'main') {
114
- var ret;
115
- try {
116
- ret = await this[method](ctx, db);
117
- } catch (error) {
118
- $.log.error("事件执行失败!", this.config.name, error);
119
- }
120
- return ret;
121
- };
122
-
123
- /**
124
- * 脚本主函数
125
- * @param {Object} ctx 请求上下文
126
- * @param {Object} db 数据管理器
127
- * @return {Object} 执行结果
128
- */
129
- Drive.prototype.main = async function(ctx, db) {
130
- return null;
131
- };
132
-
1
+ const Item = require('mm_machine').Item;
2
+
3
+ /**
4
+ * Event事件驱动类
5
+ * @extends {Item}
6
+ * @class
7
+ */
8
+ class Drive extends Item {
9
+ /**
10
+ * 构造函数
11
+ * @param {String} dir 当前目录
12
+ * @constructor
13
+ */
14
+ constructor(dir) {
15
+ super(dir, __dirname);
16
+ this.default_file = "./event.json";
17
+
18
+ // 默认启用热更新
19
+ this.mode = 3;
20
+
21
+ /* 通用项 */
22
+ // 配置参数
23
+ this.config = {
24
+ // 名称, 由中英文和下“_”组成, 用于修改或卸载 例如: demo
25
+ "name": "",
26
+ // 状态 0未启用,1启用
27
+ "state": 1,
28
+ // 标题, 介绍事件作用
29
+ "title": "示例事件",
30
+ // 描述, 用于描述该事件有什么用的
31
+ "description": "描述事件使用方法",
32
+ // 目标
33
+ "target": "",
34
+ // 阶段, 分执行前before、验证check、主要main、渲染render、执行后after阶段
35
+ "stage": "main",
36
+ // 文件路径, 当调用函数不存在时,会先从文件中加载
37
+ "func_file": "./main.js",
38
+ // 回调函数名 用于决定调用脚本的哪个函数
39
+ "func_name": "",
40
+ // 执行顺序, 数字越小,越优先执行
41
+ "sort": 100,
42
+ // 中断循环
43
+ "end": true,
44
+ // 请求方法
45
+ "method": "ALL"
46
+ };
47
+ }
48
+ }
49
+
50
+ /**
51
+ * 新建脚本
52
+ * @param {String} 文件
53
+ */
54
+ Drive.prototype.new_script = function(file) {
55
+ var fl = __dirname + "/script.js";
56
+ if (fl.hasFile()) {
57
+ var text = fl.loadText();
58
+ if (text) {
59
+ var l = $.slash;
60
+ var arr = file.split(l);
61
+ arr = arr.slice(arr.indexOf('app'));
62
+ var app_name = arr[1];
63
+ var event_name = arr[3];
64
+ if (event_name === 'client') {
65
+ text = text.replaceAll('{0}', app_name + '_' + event_name);
66
+ } else if (event_name === 'manage') {
67
+ text = text.replaceAll('{0}', app_name + '_' + event_name);
68
+ } else {
69
+ text = text.replaceAll('{0}', event_name);
70
+ }
71
+ file.saveText(text);
72
+ }
73
+ }
74
+ };
75
+
76
+ /**
77
+ * 新建脚本
78
+ * @param {String} 文件
79
+ */
80
+ Drive.prototype.new_config = function(file) {
81
+ var fl = __dirname + "/config.tpl.json";
82
+ if (fl.hasFile()) {
83
+ var text = fl.loadText();
84
+ if (text) {
85
+ var l = $.slash;
86
+ var arr = file.split(l);
87
+ arr = arr.slice(arr.indexOf('app'));
88
+ var app_name = arr[1];
89
+ var event_name = arr[3];
90
+ if (event_name === 'client') {
91
+ text = text.replaceAll('{0}', app_name + '_' + event_name);
92
+ text = text.replaceAll('{1}', '/api/' + app_name + '*');
93
+ } else if (event_name === 'manage') {
94
+ text = text.replaceAll('{0}', app_name + '_' + event_name);
95
+ text = text.replaceAll('{1}', '/apis/' + app_name + '*');
96
+ } else {
97
+ text = text.replaceAll('{0}', event_name);
98
+ text = text.replaceAll('{1}', '/' + event_name + '*');
99
+ }
100
+
101
+ file.saveText(text);
102
+ }
103
+ }
104
+ };
105
+
106
+ /**
107
+ * 执行事件
108
+ * @param {Object} ctx 请求上下文
109
+ * @param {Object} db 数据管理器
110
+ * @param {String} method 执行方法
111
+ * @return {Object} 执行结果
112
+ */
113
+ Drive.prototype.run = async function(ctx, db, method = 'main') {
114
+ var ret;
115
+ try {
116
+ ret = await this[method](ctx, db);
117
+ } catch (error) {
118
+ $.log.error("事件执行失败!", this.config.name, error);
119
+ }
120
+ return ret;
121
+ };
122
+
123
+ /**
124
+ * 脚本主函数
125
+ * @param {Object} ctx 请求上下文
126
+ * @param {Object} db 数据管理器
127
+ * @return {Object} 执行结果
128
+ */
129
+ Drive.prototype.main = async function(ctx, db) {
130
+ return null;
131
+ };
132
+
133
133
  module.exports = Drive;