cgserver 12.0.8 → 12.2.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.
Files changed (176) hide show
  1. package/README.md +9 -0
  2. package/dist/lib/Framework/AI/AiObject.js +10 -10
  3. package/dist/lib/Framework/AI/Astar.js +133 -133
  4. package/dist/lib/Framework/AI/BehaviorAI.js +340 -307
  5. package/dist/lib/Framework/AI/Entity.js +33 -33
  6. package/dist/lib/Framework/AI/Point.js +68 -68
  7. package/dist/lib/Framework/AI/TriggerMgr.js +201 -201
  8. package/dist/lib/Framework/Config/Config.js +74 -41
  9. package/dist/lib/Framework/Config/DbConfig.js +14 -14
  10. package/dist/lib/Framework/Config/FrameworkConfig.js +139 -173
  11. package/dist/lib/Framework/Config/IServerConfig.js +31 -31
  12. package/dist/lib/Framework/Config/_error_.js +35 -35
  13. package/dist/lib/Framework/Core/ByteTool.js +85 -85
  14. package/dist/lib/Framework/Core/Core.js +724 -688
  15. package/dist/lib/Framework/Core/Timer.js +116 -116
  16. package/dist/lib/Framework/Database/Decorator/AutoIncrement.js +10 -11
  17. package/dist/lib/Framework/Database/Decorator/DBCache.js +98 -65
  18. package/dist/lib/Framework/Database/Decorator/NotNull.js +10 -11
  19. package/dist/lib/Framework/Database/Decorator/PrimaryKey.js +10 -11
  20. package/dist/lib/Framework/Database/Decorator/Property.js +61 -61
  21. package/dist/lib/Framework/Database/Decorator/Table.js +14 -15
  22. package/dist/lib/Framework/Database/Decorator/Type.js +19 -20
  23. package/dist/lib/Framework/Database/MSSql/MSSqlManager.js +86 -53
  24. package/dist/lib/Framework/Database/Mongo/MongoBaseService.js +141 -141
  25. package/dist/lib/Framework/Database/Mongo/MongoManager.js +595 -547
  26. package/dist/lib/Framework/Database/Mongo/MongoServiceManager.js +52 -52
  27. package/dist/lib/Framework/Database/Mysql/MysqlBaseService.js +280 -280
  28. package/dist/lib/Framework/Database/Mysql/MysqlManager.js +138 -105
  29. package/dist/lib/Framework/Database/Redis/RedisManager.js +94 -61
  30. package/dist/lib/Framework/Decorator/AdminValidate.js +18 -19
  31. package/dist/lib/Framework/Decorator/AuthorityValidate.js +22 -22
  32. package/dist/lib/Framework/Decorator/CreatorValidate.js +18 -19
  33. package/dist/lib/Framework/Decorator/JsonAdminValidate.js +14 -15
  34. package/dist/lib/Framework/Decorator/JsonAuthorityValidate.js +20 -20
  35. package/dist/lib/Framework/Decorator/JsonCreatorValidate.js +18 -19
  36. package/dist/lib/Framework/Decorator/SyncCall.js +41 -42
  37. package/dist/lib/Framework/Decorator/SyncCallServer.js +77 -77
  38. package/dist/lib/Framework/Logic/CacheTool.js +106 -73
  39. package/dist/lib/Framework/Logic/EventTool.js +31 -28
  40. package/dist/lib/Framework/Logic/HttpTool.js +138 -105
  41. package/dist/lib/Framework/Logic/Log.js +121 -88
  42. package/dist/lib/Framework/Logic/SyncQueueTool.js +44 -44
  43. package/dist/lib/Framework/Server/ProtoFilter/GoogleProtoFilter.js +90 -57
  44. package/dist/lib/Framework/Server/ProtoFilter/IProtoFilter.js +9 -9
  45. package/dist/lib/Framework/Server/ProtoFilter/JsonProtoFilter.js +29 -29
  46. package/dist/lib/Framework/Server/ProtoFilter/ProtoFactory.js +35 -35
  47. package/dist/lib/Framework/Server/RpcWebSocketServer/CgMq.js +180 -180
  48. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpc.js +38 -38
  49. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.js +253 -253
  50. package/dist/lib/Framework/Server/RpcWebSocketServer/IRpcServerWebSocket.js +94 -94
  51. package/dist/lib/Framework/Server/SocketServer/IClientSocket.js +44 -44
  52. package/dist/lib/Framework/Server/SocketServer/IServerSocket.js +114 -81
  53. package/dist/lib/Framework/Server/SocketServer/ISocket.js +255 -222
  54. package/dist/lib/Framework/Server/SocketServer/ISocketServer.js +177 -144
  55. package/dist/lib/Framework/Server/SocketServer/PacketParser.js +40 -40
  56. package/dist/lib/Framework/Server/WebServer/Controller/BaseController.js +119 -119
  57. package/dist/lib/Framework/Server/WebServer/Controller/MongoBaseUserController.js +171 -171
  58. package/dist/lib/Framework/Server/WebServer/Controller/MysqlBaseUserController.js +169 -169
  59. package/dist/lib/Framework/Server/WebServer/Engine/ControllerManager.js +115 -115
  60. package/dist/lib/Framework/Server/WebServer/Engine/Engine.js +254 -218
  61. package/dist/lib/Framework/Server/WebServer/Engine/RazorJs.js +543 -543
  62. package/dist/lib/Framework/Server/WebServer/Engine/Request.js +226 -226
  63. package/dist/lib/Framework/Server/WebServer/Engine/Response.js +120 -87
  64. package/dist/lib/Framework/Server/WebServer/IWebServer.js +55 -55
  65. package/dist/lib/Framework/Server/WebSocketServer/IClientWebSocket.js +44 -44
  66. package/dist/lib/Framework/Server/WebSocketServer/IServerWebSocket.js +128 -95
  67. package/dist/lib/Framework/Server/WebSocketServer/IWebSocket.js +248 -215
  68. package/dist/lib/Framework/Server/WebSocketServer/IWebSocketServer.js +250 -217
  69. package/dist/lib/Framework/Service/MongoAccountService.js +339 -339
  70. package/dist/lib/Framework/Service/MongoCacheService.js +50 -50
  71. package/dist/lib/Framework/Service/MongoUserService.js +129 -96
  72. package/dist/lib/Framework/Service/MysqlAccountService.js +411 -411
  73. package/dist/lib/Framework/Service/MysqlUserService.js +204 -171
  74. package/dist/lib/Framework/Service/ini.js +36 -36
  75. package/dist/lib/Framework/ThirdParty/AlipayTool.js +117 -205
  76. package/dist/lib/Framework/ThirdParty/Alisms.js +61 -50
  77. package/dist/lib/Framework/ThirdParty/AppleTool.js +271 -235
  78. package/dist/lib/Framework/ThirdParty/CgRankTool.js +215 -215
  79. package/dist/lib/Framework/ThirdParty/EmailTool.js +71 -38
  80. package/dist/lib/Framework/ThirdParty/QQTool.js +162 -129
  81. package/dist/lib/Framework/ThirdParty/QiniuTool.js +62 -29
  82. package/dist/lib/Framework/ThirdParty/Rpc.js +79 -79
  83. package/dist/lib/Framework/ThirdParty/WechatTool.js +167 -134
  84. package/dist/lib/Framework/cgserver.js +215 -212
  85. package/dist/lib/Framework/global.js +74 -74
  86. package/dist/lib/Framework/index.js +38 -5
  87. package/dist/lib/Framework/index_export_.js +180 -177
  88. package/dist/lib/test/test.js +21 -21
  89. package/dist/types/Framework/AI/AiObject.d.ts +5 -5
  90. package/dist/types/Framework/AI/Astar.d.ts +38 -38
  91. package/dist/types/Framework/AI/BehaviorAI.d.ts +24 -24
  92. package/dist/types/Framework/AI/Entity.d.ts +12 -12
  93. package/dist/types/Framework/AI/Point.d.ts +17 -17
  94. package/dist/types/Framework/AI/TriggerMgr.d.ts +51 -51
  95. package/dist/types/Framework/Config/Config.d.ts +9 -9
  96. package/dist/types/Framework/Config/DbConfig.d.ts +11 -11
  97. package/dist/types/Framework/Config/FrameworkConfig.d.ts +146 -178
  98. package/dist/types/Framework/Config/IServerConfig.d.ts +9 -9
  99. package/dist/types/Framework/Config/_error_.d.ts +99 -99
  100. package/dist/types/Framework/Core/ByteTool.d.ts +21 -21
  101. package/dist/types/Framework/Core/Core.d.ts +119 -120
  102. package/dist/types/Framework/Core/Timer.d.ts +16 -16
  103. package/dist/types/Framework/Database/Decorator/AutoIncrement.d.ts +1 -1
  104. package/dist/types/Framework/Database/Decorator/DBCache.d.ts +22 -22
  105. package/dist/types/Framework/Database/Decorator/NotNull.d.ts +1 -1
  106. package/dist/types/Framework/Database/Decorator/PrimaryKey.d.ts +1 -1
  107. package/dist/types/Framework/Database/Decorator/Property.d.ts +57 -57
  108. package/dist/types/Framework/Database/Decorator/Table.d.ts +1 -1
  109. package/dist/types/Framework/Database/Decorator/Type.d.ts +1 -1
  110. package/dist/types/Framework/Database/MSSql/MSSqlManager.d.ts +26 -26
  111. package/dist/types/Framework/Database/Mongo/MongoBaseService.d.ts +116 -116
  112. package/dist/types/Framework/Database/Mongo/MongoManager.d.ts +207 -204
  113. package/dist/types/Framework/Database/Mongo/MongoServiceManager.d.ts +13 -13
  114. package/dist/types/Framework/Database/Mysql/MysqlBaseService.d.ts +34 -34
  115. package/dist/types/Framework/Database/Mysql/MysqlManager.d.ts +30 -30
  116. package/dist/types/Framework/Database/Redis/RedisManager.d.ts +24 -24
  117. package/dist/types/Framework/Decorator/AdminValidate.d.ts +1 -1
  118. package/dist/types/Framework/Decorator/AuthorityValidate.d.ts +2 -2
  119. package/dist/types/Framework/Decorator/CreatorValidate.d.ts +1 -1
  120. package/dist/types/Framework/Decorator/JsonAdminValidate.d.ts +1 -1
  121. package/dist/types/Framework/Decorator/JsonAuthorityValidate.d.ts +2 -2
  122. package/dist/types/Framework/Decorator/JsonCreatorValidate.d.ts +1 -1
  123. package/dist/types/Framework/Decorator/SyncCall.d.ts +12 -12
  124. package/dist/types/Framework/Decorator/SyncCallServer.d.ts +14 -14
  125. package/dist/types/Framework/Logic/CacheTool.d.ts +27 -27
  126. package/dist/types/Framework/Logic/EventTool.d.ts +11 -12
  127. package/dist/types/Framework/Logic/HttpTool.d.ts +19 -19
  128. package/dist/types/Framework/Logic/Log.d.ts +18 -18
  129. package/dist/types/Framework/Logic/SyncQueueTool.d.ts +21 -21
  130. package/dist/types/Framework/Server/ProtoFilter/GoogleProtoFilter.d.ts +9 -9
  131. package/dist/types/Framework/Server/ProtoFilter/IProtoFilter.d.ts +10 -10
  132. package/dist/types/Framework/Server/ProtoFilter/JsonProtoFilter.d.ts +6 -6
  133. package/dist/types/Framework/Server/ProtoFilter/ProtoFactory.d.ts +12 -12
  134. package/dist/types/Framework/Server/RpcWebSocketServer/CgMq.d.ts +59 -59
  135. package/dist/types/Framework/Server/RpcWebSocketServer/IRpc.d.ts +33 -33
  136. package/dist/types/Framework/Server/RpcWebSocketServer/IRpcClientWebSocket.d.ts +34 -34
  137. package/dist/types/Framework/Server/RpcWebSocketServer/IRpcServerWebSocket.d.ts +23 -23
  138. package/dist/types/Framework/Server/SocketServer/IClientSocket.d.ts +16 -18
  139. package/dist/types/Framework/Server/SocketServer/IServerSocket.d.ts +27 -29
  140. package/dist/types/Framework/Server/SocketServer/ISocket.d.ts +78 -81
  141. package/dist/types/Framework/Server/SocketServer/ISocketServer.d.ts +44 -45
  142. package/dist/types/Framework/Server/SocketServer/PacketParser.d.ts +8 -10
  143. package/dist/types/Framework/Server/WebServer/Controller/BaseController.d.ts +34 -34
  144. package/dist/types/Framework/Server/WebServer/Controller/MongoBaseUserController.d.ts +28 -28
  145. package/dist/types/Framework/Server/WebServer/Controller/MysqlBaseUserController.d.ts +27 -27
  146. package/dist/types/Framework/Server/WebServer/Engine/ControllerManager.d.ts +37 -37
  147. package/dist/types/Framework/Server/WebServer/Engine/Engine.d.ts +42 -44
  148. package/dist/types/Framework/Server/WebServer/Engine/RazorJs.d.ts +21 -21
  149. package/dist/types/Framework/Server/WebServer/Engine/Request.d.ts +47 -50
  150. package/dist/types/Framework/Server/WebServer/Engine/Response.d.ts +26 -26
  151. package/dist/types/Framework/Server/WebServer/IWebServer.d.ts +22 -22
  152. package/dist/types/Framework/Server/WebSocketServer/IClientWebSocket.d.ts +17 -17
  153. package/dist/types/Framework/Server/WebSocketServer/IServerWebSocket.d.ts +37 -38
  154. package/dist/types/Framework/Server/WebSocketServer/IWebSocket.d.ts +76 -76
  155. package/dist/types/Framework/Server/WebSocketServer/IWebSocketServer.d.ts +49 -49
  156. package/dist/types/Framework/Service/MongoAccountService.d.ts +62 -62
  157. package/dist/types/Framework/Service/MongoCacheService.d.ts +19 -19
  158. package/dist/types/Framework/Service/MongoUserService.d.ts +31 -31
  159. package/dist/types/Framework/Service/MysqlAccountService.d.ts +67 -67
  160. package/dist/types/Framework/Service/MysqlUserService.d.ts +33 -33
  161. package/dist/types/Framework/Service/ini.d.ts +29 -29
  162. package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +76 -108
  163. package/dist/types/Framework/ThirdParty/Alisms.d.ts +23 -13
  164. package/dist/types/Framework/ThirdParty/AppleTool.d.ts +131 -131
  165. package/dist/types/Framework/ThirdParty/CgRankTool.d.ts +107 -107
  166. package/dist/types/Framework/ThirdParty/EmailTool.d.ts +4 -4
  167. package/dist/types/Framework/ThirdParty/QQTool.d.ts +41 -41
  168. package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +5 -5
  169. package/dist/types/Framework/ThirdParty/Rpc.d.ts +28 -28
  170. package/dist/types/Framework/ThirdParty/WechatTool.d.ts +30 -30
  171. package/dist/types/Framework/cgserver.d.ts +63 -63
  172. package/dist/types/Framework/global.d.ts +45 -45
  173. package/dist/types/Framework/index.d.ts +2 -2
  174. package/dist/types/Framework/index_export_.d.ts +81 -79
  175. package/dist/types/test/test.d.ts +1 -1
  176. package/package.json +8 -4
@@ -1,218 +1,254 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Engine = void 0;
4
- const Response_1 = require("./Response");
5
- const Request_1 = require("./Request");
6
- const http = require("http");
7
- const https = require("https");
8
- const cors = require("cors");
9
- const Express = require("express");
10
- const cookieParser = require("cookie-parser");
11
- const Config_1 = require("../../../Config/Config");
12
- const Log_1 = require("../../../Logic/Log");
13
- const ControllerManager_1 = require("./ControllerManager");
14
- class Engine {
15
- _app = Express();
16
- get app() {
17
- return this._app;
18
- }
19
- _cfg = null;
20
- get cfg() {
21
- return this._cfg;
22
- }
23
- _server = null;
24
- _razorJs = null;
25
- _root_path = process.cwd();
26
- //停止服务器,暂时不接受任何请求
27
- _is_running = false;
28
- get isrunning() {
29
- return this._is_running;
30
- }
31
- constructor(cfg, razorJs) {
32
- this._cfg = cfg;
33
- this._razorJs = razorJs;
34
- }
35
- start() {
36
- let port = this._cfg.port;
37
- //let https = require("https");
38
- let fs = require("fs");
39
- if (!port) {
40
- Log_1.gLog.error(this._cfg);
41
- return;
42
- }
43
- if (this._cfg.ssl) {
44
- const httpsOption = {
45
- key: fs.readFileSync(Config_1.Config.rootDataDir + this._cfg.ssl.key),
46
- cert: fs.readFileSync(Config_1.Config.rootDataDir + this._cfg.ssl.crt)
47
- };
48
- https.createServer(httpsOption, this._app).listen(port, () => {
49
- this._is_running = true;
50
- Log_1.gLog.info("Server(" + this._cfg.web_name + ") running at https://127.0.0.1:" + port + "/");
51
- });
52
- }
53
- else {
54
- http.createServer(this._app).listen(port, () => {
55
- this._is_running = true;
56
- Log_1.gLog.info("Server(" + this._cfg.web_name + ") running at http://127.0.0.1:" + port + "/");
57
- });
58
- }
59
- this._app.use(cookieParser());
60
- this._app.use(Express.raw());
61
- this._app.use(Express.json({ limit: '10mb', verify(req, res, buf, encoding) {
62
- req["rawBody"] = buf;
63
- }, }));
64
- this._app.use(Express.urlencoded({ limit: '10mb', extended: false, verify(req, res, buf, encoding) {
65
- req["rawBody"] = buf;
66
- }, }));
67
- this._app.use((err, req, res, next) => {
68
- if (err) {
69
- Log_1.gLog.error(err);
70
- }
71
- next(err);
72
- });
73
- if (this._cfg.static) {
74
- for (let i = 0; i < this._cfg.static.length; ++i) {
75
- let item = this._cfg.static[i];
76
- this._app.use(item.route, Express.static(item.path));
77
- }
78
- }
79
- else {
80
- //默认
81
- this._app.use("/public", Express.static("./public"));
82
- }
83
- //处理跨域
84
- if (this._cfg.cors) {
85
- let origin = this._cfg.cors.origin || "*";
86
- if (this._cfg.cors.credentials == true && origin == "*") {
87
- origin = (origin, callback) => {
88
- callback(null, true);
89
- };
90
- }
91
- this._app.use(cors({
92
- origin: origin,
93
- methods: this._cfg.cors.methods || 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS',
94
- allowedHeaders: this._cfg.cors.allowedHeaders || ['Content-Type'],
95
- credentials: this._cfg.cors.credentials || false
96
- }));
97
- }
98
- this._app.all("/*", (req, res) => {
99
- let time = Date.now();
100
- this._onall(req, res).then(() => {
101
- if (this._cfg.debug) {
102
- let time_str = (Date.now() - time) + "ms";
103
- Log_1.gLog.info("[" + time_str + "] " + req.method + " " + req.url);
104
- }
105
- }).catch((err) => {
106
- res.sendStatus(500);
107
- let exreq = new Request_1.Request(req, this._cfg);
108
- let info = exreq.getDebugInfo();
109
- info["tip"] = "server error";
110
- Log_1.gLog.error(info);
111
- Log_1.gLog.error(err);
112
- });
113
- });
114
- }
115
- async _onall(_req, _res) {
116
- let httpinfo = this._preDoHttpInfo(_req, _res);
117
- if (!httpinfo) {
118
- return;
119
- }
120
- await this._callCtrAction(httpinfo.action_name, httpinfo.req, httpinfo.res);
121
- }
122
- _method_preactions = {
123
- "post": "on",
124
- "get": "show",
125
- "options": "onoptions",
126
- "head": "onhead"
127
- };
128
- /**
129
- * 预处理http请求信息
130
- * @param _req
131
- * @param _res
132
- * @returns
133
- */
134
- _preDoHttpInfo(_req, _res) {
135
- let req = new Request_1.Request(_req, this._cfg);
136
- let res = new Response_1.Response(_res, this._cfg);
137
- //禁止访问
138
- if (!this._is_running) {
139
- res.sendStatus(403);
140
- return;
141
- }
142
- let method = req.method.toLocaleLowerCase();
143
- let pre_action = this._method_preactions[method];
144
- if (!pre_action) {
145
- res.sendStatus(500);
146
- let info = req.getDebugInfo();
147
- info["tip"] = "not support method:" + method;
148
- Log_1.gLog.error(info);
149
- return null;
150
- }
151
- let action_name = ControllerManager_1.gCtrMgr.getActionName(req.module, req.controller, pre_action + req.action);
152
- if (!action_name) {
153
- res.sendStatus(500);
154
- let info = req.getDebugInfo();
155
- info["tip"] = "request has no action";
156
- Log_1.gLog.error(info);
157
- return null;
158
- }
159
- return {
160
- action_name: action_name,
161
- req: req,
162
- res: res
163
- };
164
- }
165
- async _callCtrAction(action_name, req, res) {
166
- let ctr = ControllerManager_1.gCtrMgr.getStaticCtr(req.module, req.controller);
167
- let cls_ctr = null;
168
- if (!ctr) {
169
- cls_ctr = ControllerManager_1.gCtrMgr.getClass(req.module, req.controller);
170
- }
171
- if (!ctr) {
172
- ctr = new cls_ctr(req, res, this);
173
- await ctr.init();
174
- }
175
- else {
176
- ctr.initStatic(req, res, this);
177
- }
178
- await ctr[action_name].call(ctr);
179
- }
180
- pause() {
181
- if (!this._is_running) {
182
- Log_1.gLog.error("webserver has paused:" + this._cfg.web_name);
183
- return;
184
- }
185
- this._is_running = false;
186
- Log_1.gLog.info("webserver paused:" + this._cfg.web_name);
187
- }
188
- resume() {
189
- if (this._is_running) {
190
- Log_1.gLog.error("webserver is running:" + this._cfg.web_name);
191
- return;
192
- }
193
- this._is_running = true;
194
- Log_1.gLog.info("webserver resumed:" + this._cfg.web_name);
195
- }
196
- getRenderHtml(req, res, datas) {
197
- let rootview = this._cfg.rootview || "view";
198
- if (!rootview.endsWith("/")) {
199
- rootview += "/";
200
- }
201
- let tmpl = rootview + req.controller.toLowerCase() + "/" + req.action.toLowerCase();
202
- let html = this._getRenderHtml(req, res, tmpl, datas);
203
- return html;
204
- }
205
- _getRenderHtml(req, res, tmpl, params) {
206
- let html = null;
207
- try {
208
- html = this._razorJs.render(req, res, tmpl, params, { compileDebug: true });
209
- html = html.replace(/\"~/g, "\"" + req.root);
210
- html = html.replace(/\'~/g, "\'" + req.root);
211
- }
212
- catch (e) {
213
- html = "error!" + e;
214
- }
215
- return html;
216
- }
217
- }
218
- exports.Engine = Engine;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.Engine = void 0;
40
+ const Response_1 = require("./Response");
41
+ const Request_1 = require("./Request");
42
+ const http = __importStar(require("http"));
43
+ const https = __importStar(require("https"));
44
+ const cors_1 = __importDefault(require("cors"));
45
+ const express_1 = __importDefault(require("express"));
46
+ const cookie_parser_1 = __importDefault(require("cookie-parser"));
47
+ const Config_1 = require("../../../Config/Config");
48
+ const Log_1 = require("../../../Logic/Log");
49
+ const ControllerManager_1 = require("./ControllerManager");
50
+ class Engine {
51
+ _app = (0, express_1.default)();
52
+ get app() {
53
+ return this._app;
54
+ }
55
+ _cfg = null;
56
+ get cfg() {
57
+ return this._cfg;
58
+ }
59
+ _server = null;
60
+ _razorJs = null;
61
+ _root_path = process.cwd();
62
+ //停止服务器,暂时不接受任何请求
63
+ _is_running = false;
64
+ get isrunning() {
65
+ return this._is_running;
66
+ }
67
+ constructor(cfg, razorJs) {
68
+ this._cfg = cfg;
69
+ this._razorJs = razorJs;
70
+ }
71
+ start() {
72
+ let port = this._cfg.port;
73
+ //let https = require("https");
74
+ let fs = require("fs");
75
+ if (!port) {
76
+ Log_1.gLog.error(this._cfg);
77
+ return;
78
+ }
79
+ if (this._cfg.ssl) {
80
+ const httpsOption = {
81
+ key: fs.readFileSync(Config_1.Config.rootDataDir + this._cfg.ssl.key),
82
+ cert: fs.readFileSync(Config_1.Config.rootDataDir + this._cfg.ssl.crt)
83
+ };
84
+ https.createServer(httpsOption, this._app).listen(port, () => {
85
+ this._is_running = true;
86
+ Log_1.gLog.info("Server(" + this._cfg.web_name + ") running at https://127.0.0.1:" + port + "/");
87
+ });
88
+ }
89
+ else {
90
+ http.createServer(this._app).listen(port, () => {
91
+ this._is_running = true;
92
+ Log_1.gLog.info("Server(" + this._cfg.web_name + ") running at http://127.0.0.1:" + port + "/");
93
+ });
94
+ }
95
+ this._app.use((0, cookie_parser_1.default)());
96
+ this._app.use(express_1.default.raw());
97
+ this._app.use(express_1.default.json({ limit: '10mb', verify(req, res, buf, encoding) {
98
+ req["rawBody"] = buf;
99
+ }, }));
100
+ this._app.use(express_1.default.urlencoded({ limit: '10mb', extended: false, verify(req, res, buf, encoding) {
101
+ req["rawBody"] = buf;
102
+ }, }));
103
+ this._app.use((err, req, res, next) => {
104
+ if (err) {
105
+ Log_1.gLog.error(err);
106
+ }
107
+ next(err);
108
+ });
109
+ if (this._cfg.static) {
110
+ for (let i = 0; i < this._cfg.static.length; ++i) {
111
+ let item = this._cfg.static[i];
112
+ this._app.use(item.route, express_1.default.static(item.path));
113
+ }
114
+ }
115
+ else {
116
+ //默认
117
+ this._app.use("/public", express_1.default.static("./public"));
118
+ }
119
+ //处理跨域
120
+ if (this._cfg.cors) {
121
+ let origin = this._cfg.cors.origin || "*";
122
+ if (this._cfg.cors.credentials == true && origin == "*") {
123
+ origin = (origin, callback) => {
124
+ callback(null, true);
125
+ };
126
+ }
127
+ this._app.use((0, cors_1.default)({
128
+ origin: origin, //指定接收的地址,将localhost改成前端IP地址
129
+ methods: this._cfg.cors.methods || 'GET,HEAD,PUT,PATCH,POST,DELETE,OPTIONS', //指定接收的请求类型
130
+ allowedHeaders: this._cfg.cors.allowedHeaders || ['Content-Type'], //指定header
131
+ credentials: this._cfg.cors.credentials || false
132
+ }));
133
+ }
134
+ this._app.all("/*", (req, res) => {
135
+ let time = Date.now();
136
+ this._onall(req, res).then(() => {
137
+ if (this._cfg.debug) {
138
+ let time_str = (Date.now() - time) + "ms";
139
+ Log_1.gLog.info("[" + time_str + "] " + req.method + " " + req.url);
140
+ }
141
+ }).catch((err) => {
142
+ res.sendStatus(500);
143
+ let exreq = new Request_1.Request(req, this._cfg);
144
+ let info = exreq.getDebugInfo();
145
+ info["tip"] = "server error";
146
+ Log_1.gLog.error(info);
147
+ Log_1.gLog.error(err);
148
+ });
149
+ });
150
+ }
151
+ async _onall(_req, _res) {
152
+ let httpinfo = this._preDoHttpInfo(_req, _res);
153
+ if (!httpinfo) {
154
+ return;
155
+ }
156
+ await this._callCtrAction(httpinfo.action_name, httpinfo.req, httpinfo.res);
157
+ }
158
+ _method_preactions = {
159
+ "post": "on",
160
+ "get": "show",
161
+ "options": "onoptions",
162
+ "head": "onhead"
163
+ };
164
+ /**
165
+ * 预处理http请求信息
166
+ * @param _req
167
+ * @param _res
168
+ * @returns
169
+ */
170
+ _preDoHttpInfo(_req, _res) {
171
+ let req = new Request_1.Request(_req, this._cfg);
172
+ let res = new Response_1.Response(_res, this._cfg);
173
+ //禁止访问
174
+ if (!this._is_running) {
175
+ res.sendStatus(403);
176
+ return;
177
+ }
178
+ let method = req.method.toLocaleLowerCase();
179
+ let pre_action = this._method_preactions[method];
180
+ if (!pre_action) {
181
+ res.sendStatus(500);
182
+ let info = req.getDebugInfo();
183
+ info["tip"] = "not support method:" + method;
184
+ Log_1.gLog.error(info);
185
+ return null;
186
+ }
187
+ let action_name = ControllerManager_1.gCtrMgr.getActionName(req.module, req.controller, pre_action + req.action);
188
+ if (!action_name) {
189
+ res.sendStatus(500);
190
+ let info = req.getDebugInfo();
191
+ info["tip"] = "request has no action";
192
+ Log_1.gLog.error(info);
193
+ return null;
194
+ }
195
+ return {
196
+ action_name: action_name,
197
+ req: req,
198
+ res: res
199
+ };
200
+ }
201
+ async _callCtrAction(action_name, req, res) {
202
+ let ctr = ControllerManager_1.gCtrMgr.getStaticCtr(req.module, req.controller);
203
+ let cls_ctr = null;
204
+ if (!ctr) {
205
+ cls_ctr = ControllerManager_1.gCtrMgr.getClass(req.module, req.controller);
206
+ }
207
+ if (!ctr) {
208
+ ctr = new cls_ctr(req, res, this);
209
+ await ctr.init();
210
+ }
211
+ else {
212
+ ctr.initStatic(req, res, this);
213
+ }
214
+ await ctr[action_name].call(ctr);
215
+ }
216
+ pause() {
217
+ if (!this._is_running) {
218
+ Log_1.gLog.error("webserver has paused:" + this._cfg.web_name);
219
+ return;
220
+ }
221
+ this._is_running = false;
222
+ Log_1.gLog.info("webserver paused:" + this._cfg.web_name);
223
+ }
224
+ resume() {
225
+ if (this._is_running) {
226
+ Log_1.gLog.error("webserver is running:" + this._cfg.web_name);
227
+ return;
228
+ }
229
+ this._is_running = true;
230
+ Log_1.gLog.info("webserver resumed:" + this._cfg.web_name);
231
+ }
232
+ getRenderHtml(req, res, datas) {
233
+ let rootview = this._cfg.rootview || "view";
234
+ if (!rootview.endsWith("/")) {
235
+ rootview += "/";
236
+ }
237
+ let tmpl = rootview + req.controller.toLowerCase() + "/" + req.action.toLowerCase();
238
+ let html = this._getRenderHtml(req, res, tmpl, datas);
239
+ return html;
240
+ }
241
+ _getRenderHtml(req, res, tmpl, params) {
242
+ let html = null;
243
+ try {
244
+ html = this._razorJs.render(req, res, tmpl, params, { compileDebug: true });
245
+ html = html.replace(/\"~/g, "\"" + req.root);
246
+ html = html.replace(/\'~/g, "\'" + req.root);
247
+ }
248
+ catch (e) {
249
+ html = "error!" + e;
250
+ }
251
+ return html;
252
+ }
253
+ }
254
+ exports.Engine = Engine;