cgserver 10.0.0 → 10.0.2
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/dist/lib/Framework/AI/BehaviorAI.js +6 -6
- package/dist/lib/Framework/AI/TriggerMgr.js +7 -6
- package/dist/lib/Framework/Config/FrameworkConfig.js +2 -2
- package/dist/lib/Framework/Config/IServerConfig.js +3 -3
- package/dist/lib/Framework/Core/Core.js +7 -5
- package/dist/lib/Framework/Core/Timer.js +5 -5
- package/dist/lib/Framework/Database/Decorator/DBCache.js +5 -4
- package/dist/lib/Framework/Database/MSSqlManager.js +4 -3
- package/dist/lib/Framework/Database/Mongo/MongoBaseService.js +3 -3
- package/dist/lib/Framework/Database/Mongo/MongoManager.js +30 -29
- package/dist/lib/Framework/Database/MysqlBaseService.js +26 -24
- package/dist/lib/Framework/Database/MysqlManager.js +8 -6
- package/dist/lib/Framework/Database/RedisManager.js +6 -5
- package/dist/lib/Framework/Decorator/SyncCall.js +3 -3
- package/dist/lib/Framework/Decorator/SyncCallServer.js +12 -11
- package/dist/lib/Framework/Logic/CacheTool.js +2 -1
- package/dist/lib/Framework/Logic/EventTool.js +2 -1
- package/dist/lib/Framework/Logic/HttpTool.js +11 -10
- package/dist/lib/Framework/Logic/Log.js +2 -1
- package/dist/lib/Framework/Logic/SyncQueueTool.js +2 -1
- package/dist/lib/Framework/Service/MongoAccountService.js +6 -4
- package/dist/lib/Framework/Service/MongoCacheService.js +8 -2
- package/dist/lib/Framework/Service/MysqlAccountService.js +6 -4
- package/dist/lib/Framework/SocketServer/IClientWebSocket.js +4 -4
- package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +7 -6
- package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +7 -6
- package/dist/lib/Framework/SocketServer/IServerWebSocket.js +3 -3
- package/dist/lib/Framework/SocketServer/ISocketServer.js +21 -18
- package/dist/lib/Framework/SocketServer/IWebSocket.js +14 -12
- package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +4 -4
- package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +2 -2
- package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +2 -1
- package/dist/lib/Framework/ThirdParty/AlipayTool.js +16 -15
- package/dist/lib/Framework/ThirdParty/Alisms.js +9 -8
- package/dist/lib/Framework/ThirdParty/AppleTool.js +14 -12
- package/dist/lib/Framework/ThirdParty/CgMq.js +3 -3
- package/dist/lib/Framework/ThirdParty/EmailTool.js +11 -10
- package/dist/lib/Framework/ThirdParty/QQTool.js +22 -19
- package/dist/lib/Framework/ThirdParty/QiniuTool.js +8 -7
- package/dist/lib/Framework/ThirdParty/Rpc.js +2 -2
- package/dist/lib/Framework/ThirdParty/WechatTool.js +15 -12
- package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +13 -12
- package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +13 -12
- package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +5 -1
- package/dist/lib/Framework/WebServer/Engine/Engine.js +18 -17
- package/dist/lib/Framework/WebServer/Engine/RazorJs.js +2 -2
- package/dist/lib/Framework/WebServer/Engine/Request.js +3 -3
- package/dist/lib/Framework/WebServer/Engine/Response.js +2 -2
- package/dist/lib/Framework/WebServer/IWebServer.js +9 -6
- package/dist/lib/Framework/cgserver.js +15 -9
- package/dist/lib/Framework/global.js +17 -1
- package/dist/types/Framework/AI/TriggerMgr.d.ts +1 -0
- package/dist/types/Framework/Config/IServerConfig.d.ts +1 -0
- package/dist/types/Framework/Core/Core.d.ts +3 -1
- package/dist/types/Framework/Database/Decorator/DBCache.d.ts +1 -0
- package/dist/types/Framework/Database/MSSqlManager.d.ts +1 -0
- package/dist/types/Framework/Database/Mongo/MongoManager.d.ts +1 -0
- package/dist/types/Framework/Database/MysqlManager.d.ts +1 -0
- package/dist/types/Framework/Database/RedisManager.d.ts +1 -0
- package/dist/types/Framework/Logic/CacheTool.d.ts +1 -0
- package/dist/types/Framework/Logic/EventTool.d.ts +1 -0
- package/dist/types/Framework/Logic/HttpTool.d.ts +1 -0
- package/dist/types/Framework/Logic/Log.d.ts +1 -0
- package/dist/types/Framework/Logic/SyncQueueTool.d.ts +1 -0
- package/dist/types/Framework/Service/MongoCacheService.d.ts +5 -0
- package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/QQTool.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/WechatTool.d.ts +1 -0
- package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +4 -0
- package/dist/types/Framework/cgserver.d.ts +1 -0
- package/dist/types/Framework/global.d.ts +17 -2
- package/package.json +1 -1
- package/dist/lib/Framework/Database/MongoBaseService.js +0 -128
- package/dist/lib/Framework/Database/MongoManager.js +0 -508
- package/dist/lib/Framework/Database/MongoServiceManager.js +0 -49
- package/dist/lib/Framework/ThirdParty/OpenSocial.js +0 -32
- package/dist/lib/Framework/ThirdParty/WechatOATool.js +0 -61
- package/dist/types/Framework/Database/MongoBaseService.d.ts +0 -85
- package/dist/types/Framework/Database/MongoManager.d.ts +0 -166
- package/dist/types/Framework/Database/MongoServiceManager.d.ts +0 -15
- package/dist/types/Framework/ThirdParty/OpenSocial.d.ts +0 -7
- package/dist/types/Framework/ThirdParty/WechatOATool.d.ts +0 -13
|
@@ -2,22 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QiniuTool = void 0;
|
|
4
4
|
const qiniu = require("qiniu");
|
|
5
|
-
const
|
|
5
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
6
|
+
const Log_1 = require("../Logic/Log");
|
|
6
7
|
class QiniuTool {
|
|
7
8
|
get host() {
|
|
8
|
-
if (!
|
|
9
|
+
if (!IServerConfig_1.gServerCfg.qiniu) {
|
|
9
10
|
return "";
|
|
10
11
|
}
|
|
11
|
-
return
|
|
12
|
+
return IServerConfig_1.gServerCfg.qiniu.host;
|
|
12
13
|
}
|
|
13
14
|
getUploadToken(filename) {
|
|
14
|
-
if (!
|
|
15
|
-
|
|
15
|
+
if (!IServerConfig_1.gServerCfg.qiniu) {
|
|
16
|
+
Log_1.gLog.error("qiniu config not found!");
|
|
16
17
|
return "";
|
|
17
18
|
}
|
|
18
|
-
let mac = new qiniu.auth.digest.Mac(
|
|
19
|
+
let mac = new qiniu.auth.digest.Mac(IServerConfig_1.gServerCfg.qiniu.accessKey, IServerConfig_1.gServerCfg.qiniu.secretKey);
|
|
19
20
|
let options = {
|
|
20
|
-
scope:
|
|
21
|
+
scope: IServerConfig_1.gServerCfg.qiniu.bucket + ":" + filename,
|
|
21
22
|
};
|
|
22
23
|
let putPolicy = new qiniu.rs.PutPolicy(options);
|
|
23
24
|
let uploadToken = putPolicy.uploadToken(mac);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Rpc = void 0;
|
|
4
4
|
const Core_1 = require("../Core/Core");
|
|
5
|
-
const
|
|
5
|
+
const Log_1 = require("../Logic/Log");
|
|
6
6
|
const CgMq_1 = require("./CgMq");
|
|
7
7
|
class Remote {
|
|
8
8
|
_retmsg = null;
|
|
@@ -50,7 +50,7 @@ class Rpc {
|
|
|
50
50
|
let cmd = msg.data.cmd;
|
|
51
51
|
let func = this[cmd];
|
|
52
52
|
if (!func) {
|
|
53
|
-
|
|
53
|
+
Log_1.gLog.error({ des: "rpc no cmd", msg });
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
56
|
let data = await Core_1.core.safeCall(func, this, ...msg.data?.args, msg);
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WechatTool = exports.WechatUserInfo = exports.WechatOAMsg = void 0;
|
|
3
|
+
exports.gWechatTool = exports.WechatTool = exports.WechatUserInfo = exports.WechatOAMsg = void 0;
|
|
4
4
|
const _ = require("underscore");
|
|
5
5
|
const URLEncode = require("urlencode");
|
|
6
|
-
const
|
|
6
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
7
|
+
const Log_1 = require("../Logic/Log");
|
|
8
|
+
const HttpTool_1 = require("../Logic/HttpTool");
|
|
7
9
|
class WechatOAMsg {
|
|
8
10
|
// <xml>
|
|
9
11
|
// <ToUserName><![CDATA[toUser]]></ToUserName>
|
|
@@ -41,12 +43,12 @@ class WechatTool {
|
|
|
41
43
|
* 获取获取code的url
|
|
42
44
|
*/
|
|
43
45
|
getAuthCodeUrl() {
|
|
44
|
-
if (!
|
|
45
|
-
|
|
46
|
+
if (!IServerConfig_1.gServerCfg.wechat) {
|
|
47
|
+
Log_1.gLog.error("wechat config not found!");
|
|
46
48
|
return null;
|
|
47
49
|
}
|
|
48
|
-
let url = "https://open.weixin.qq.com/connect/qrconnect?appid=" +
|
|
49
|
-
url += "&redirect_uri=" + URLEncode.encode(
|
|
50
|
+
let url = "https://open.weixin.qq.com/connect/qrconnect?appid=" + IServerConfig_1.gServerCfg.wechat.app_id;
|
|
51
|
+
url += "&redirect_uri=" + URLEncode.encode(IServerConfig_1.gServerCfg.wechat.redirect_uri);
|
|
50
52
|
url += "&response_type=code&scope=snsapi_login";
|
|
51
53
|
//必须 client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
|
|
52
54
|
let state = _.random(1000000, 9999999);
|
|
@@ -57,12 +59,12 @@ class WechatTool {
|
|
|
57
59
|
if (!auth_code) {
|
|
58
60
|
return null;
|
|
59
61
|
}
|
|
60
|
-
if (!
|
|
61
|
-
|
|
62
|
+
if (!IServerConfig_1.gServerCfg.wechat) {
|
|
63
|
+
Log_1.gLog.error("wechat config not found!");
|
|
62
64
|
return null;
|
|
63
65
|
}
|
|
64
|
-
let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" +
|
|
65
|
-
let rs = await
|
|
66
|
+
let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + IServerConfig_1.gServerCfg.wechat.app_id + "&secret=" + IServerConfig_1.gServerCfg.wechat.app_key + "&code=" + auth_code + "&grant_type=authorization_code";
|
|
67
|
+
let rs = await HttpTool_1.gHttpTool.get(url);
|
|
66
68
|
/*
|
|
67
69
|
{
|
|
68
70
|
"access_token":"ACCESS_TOKEN",
|
|
@@ -78,13 +80,13 @@ class WechatTool {
|
|
|
78
80
|
return rs.body;
|
|
79
81
|
}
|
|
80
82
|
else {
|
|
81
|
-
|
|
83
|
+
Log_1.gLog.error(rs.body);
|
|
82
84
|
}
|
|
83
85
|
return null;
|
|
84
86
|
}
|
|
85
87
|
async getUserInfo(access_token, openid) {
|
|
86
88
|
let url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid;
|
|
87
|
-
let rs = await
|
|
89
|
+
let rs = await HttpTool_1.gHttpTool.get(url);
|
|
88
90
|
if (rs.body) {
|
|
89
91
|
return rs.body;
|
|
90
92
|
}
|
|
@@ -129,3 +131,4 @@ class WechatTool {
|
|
|
129
131
|
}
|
|
130
132
|
}
|
|
131
133
|
exports.WechatTool = WechatTool;
|
|
134
|
+
exports.gWechatTool = new WechatTool();
|
|
@@ -6,7 +6,8 @@ const FrameworkConfig_1 = require("../../Config/FrameworkConfig");
|
|
|
6
6
|
const MongoCacheService_1 = require("../../Service/MongoCacheService");
|
|
7
7
|
const ini_1 = require("../../Service/ini");
|
|
8
8
|
const MongoUserService_1 = require("../../Service/MongoUserService");
|
|
9
|
-
const
|
|
9
|
+
const CacheTool_1 = require("../../Logic/CacheTool");
|
|
10
|
+
const RedisManager_1 = require("../../Database/RedisManager");
|
|
10
11
|
class MongoBaseUserController extends BaseController_1.BaseController {
|
|
11
12
|
_user_session_id = "user_session_id";
|
|
12
13
|
_self_user = null;
|
|
@@ -66,19 +67,19 @@ class MongoBaseUserController extends BaseController_1.BaseController {
|
|
|
66
67
|
//每次强制从cache中先找,提高效率
|
|
67
68
|
//if(this._engine.cfg.session_type==ESessionType.Cache)
|
|
68
69
|
{
|
|
69
|
-
user =
|
|
70
|
+
user = CacheTool_1.gCacheTool.get(this._session_id);
|
|
70
71
|
}
|
|
71
72
|
if (user) {
|
|
72
73
|
return user;
|
|
73
74
|
}
|
|
74
75
|
if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Redis) {
|
|
75
|
-
let user_id = parseInt((await
|
|
76
|
+
let user_id = parseInt((await RedisManager_1.gRedisMgr.redis.get(this._session_id)) || "-1");
|
|
76
77
|
if (user_id > 0) {
|
|
77
78
|
user = (await MongoUserService_1.GMongoUserSer.getById(user_id));
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Mongo) {
|
|
81
|
-
let user_id = (await
|
|
82
|
+
let user_id = (await MongoCacheService_1.gMongoCacheSer.getData(this._session_id)) || -1;
|
|
82
83
|
if (user_id > 0) {
|
|
83
84
|
user = (await MongoUserService_1.GMongoUserSer.getById(user_id));
|
|
84
85
|
}
|
|
@@ -91,13 +92,13 @@ class MongoBaseUserController extends BaseController_1.BaseController {
|
|
|
91
92
|
_logout() {
|
|
92
93
|
if (this._session_id) {
|
|
93
94
|
if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Cache) {
|
|
94
|
-
|
|
95
|
+
CacheTool_1.gCacheTool.remove(this._session_id);
|
|
95
96
|
}
|
|
96
97
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Redis) {
|
|
97
|
-
|
|
98
|
+
RedisManager_1.gRedisMgr.redis.del(this._session_id);
|
|
98
99
|
}
|
|
99
100
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Mongo) {
|
|
100
|
-
|
|
101
|
+
MongoCacheService_1.gMongoCacheSer.deleteOne({ key: this._session_id });
|
|
101
102
|
}
|
|
102
103
|
this._session_id = null;
|
|
103
104
|
}
|
|
@@ -121,15 +122,15 @@ class MongoBaseUserController extends BaseController_1.BaseController {
|
|
|
121
122
|
//if(this._engine.cfg.session_type==ESessionType.Cache)
|
|
122
123
|
{
|
|
123
124
|
if (time > 24 * 60 * 60) {
|
|
124
|
-
|
|
125
|
+
CacheTool_1.gCacheTool.add(this._session_id, user, 24 * 60 * 60 * 1000);
|
|
125
126
|
}
|
|
126
127
|
else {
|
|
127
|
-
|
|
128
|
+
CacheTool_1.gCacheTool.add(this._session_id, user, time * 1000);
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Redis) {
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
RedisManager_1.gRedisMgr.redis.set(this._session_id, user.id).then(() => {
|
|
133
|
+
RedisManager_1.gRedisMgr.redis.expire(this._session_id, time);
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Mongo) {
|
|
@@ -137,7 +138,7 @@ class MongoBaseUserController extends BaseController_1.BaseController {
|
|
|
137
138
|
cm.key = this._session_id;
|
|
138
139
|
cm.data = user.id;
|
|
139
140
|
cm.expireAt = Date.now() + time * 1000;
|
|
140
|
-
|
|
141
|
+
MongoCacheService_1.gMongoCacheSer.updateOne(cm, { key: cm.key }, true);
|
|
141
142
|
}
|
|
142
143
|
this._self_user = user;
|
|
143
144
|
}
|
|
@@ -6,7 +6,8 @@ const MysqlUserService_1 = require("../../Service/MysqlUserService");
|
|
|
6
6
|
const FrameworkConfig_1 = require("../../Config/FrameworkConfig");
|
|
7
7
|
const MongoCacheService_1 = require("../../Service/MongoCacheService");
|
|
8
8
|
const ini_1 = require("../../Service/ini");
|
|
9
|
-
const
|
|
9
|
+
const CacheTool_1 = require("../../Logic/CacheTool");
|
|
10
|
+
const RedisManager_1 = require("../../Database/RedisManager");
|
|
10
11
|
class MysqlBaseUserController extends BaseController_1.BaseController {
|
|
11
12
|
_user_session_id = "user_session_id";
|
|
12
13
|
_self_user = null;
|
|
@@ -66,19 +67,19 @@ class MysqlBaseUserController extends BaseController_1.BaseController {
|
|
|
66
67
|
//每次强制从cache中先找,提高效率
|
|
67
68
|
//if(this._engine.cfg.session_type==ESessionType.Cache)
|
|
68
69
|
{
|
|
69
|
-
user =
|
|
70
|
+
user = CacheTool_1.gCacheTool.get(this._session_id);
|
|
70
71
|
}
|
|
71
72
|
if (user) {
|
|
72
73
|
return user;
|
|
73
74
|
}
|
|
74
75
|
if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Redis) {
|
|
75
|
-
let user_id = parseInt((await
|
|
76
|
+
let user_id = parseInt((await RedisManager_1.gRedisMgr.redis.get(this._session_id)) || "-1");
|
|
76
77
|
if (user_id > 0) {
|
|
77
78
|
user = (await MysqlUserService_1.GUserSer.getById(user_id));
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Mongo) {
|
|
81
|
-
let user_id = (await
|
|
82
|
+
let user_id = (await MongoCacheService_1.gMongoCacheSer.getData(this._session_id)) || -1;
|
|
82
83
|
if (user_id > 0) {
|
|
83
84
|
user = (await MysqlUserService_1.GUserSer.getById(user_id));
|
|
84
85
|
}
|
|
@@ -91,13 +92,13 @@ class MysqlBaseUserController extends BaseController_1.BaseController {
|
|
|
91
92
|
_logout() {
|
|
92
93
|
if (this._session_id) {
|
|
93
94
|
if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Cache) {
|
|
94
|
-
|
|
95
|
+
CacheTool_1.gCacheTool.remove(this._session_id);
|
|
95
96
|
}
|
|
96
97
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Redis) {
|
|
97
|
-
|
|
98
|
+
RedisManager_1.gRedisMgr.redis.del(this._session_id);
|
|
98
99
|
}
|
|
99
100
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Mongo) {
|
|
100
|
-
|
|
101
|
+
MongoCacheService_1.gMongoCacheSer.deleteOne({ key: this._session_id });
|
|
101
102
|
}
|
|
102
103
|
this._session_id = null;
|
|
103
104
|
}
|
|
@@ -121,15 +122,15 @@ class MysqlBaseUserController extends BaseController_1.BaseController {
|
|
|
121
122
|
//if(this._engine.cfg.session_type==ESessionType.Cache)
|
|
122
123
|
{
|
|
123
124
|
if (time > 24 * 60 * 60) {
|
|
124
|
-
|
|
125
|
+
CacheTool_1.gCacheTool.add(this._session_id, user, 24 * 60 * 60 * 1000);
|
|
125
126
|
}
|
|
126
127
|
else {
|
|
127
|
-
|
|
128
|
+
CacheTool_1.gCacheTool.add(this._session_id, user, time * 1000);
|
|
128
129
|
}
|
|
129
130
|
}
|
|
130
131
|
if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Redis) {
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
RedisManager_1.gRedisMgr.redis.set(this._session_id, user.id).then(() => {
|
|
133
|
+
RedisManager_1.gRedisMgr.redis.expire(this._session_id, time);
|
|
133
134
|
});
|
|
134
135
|
}
|
|
135
136
|
else if (this._engine.cfg.session_type == FrameworkConfig_1.ESessionType.Mongo) {
|
|
@@ -137,7 +138,7 @@ class MysqlBaseUserController extends BaseController_1.BaseController {
|
|
|
137
138
|
cm.key = this._session_id;
|
|
138
139
|
cm.data = user.id;
|
|
139
140
|
cm.expireAt = Date.now() + time * 1000;
|
|
140
|
-
|
|
141
|
+
MongoCacheService_1.gMongoCacheSer.updateOne(cm, { key: cm.key }, true);
|
|
141
142
|
}
|
|
142
143
|
this._self_user = user;
|
|
143
144
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ControllerManager = void 0;
|
|
3
|
+
exports.gCtrMgr = exports.ControllerManager = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* web服务中mvc的控制器管理器
|
|
6
|
+
*/
|
|
4
7
|
class ControllerManager {
|
|
5
8
|
_static_ctr = {};
|
|
6
9
|
_ctr_cls = {};
|
|
@@ -109,3 +112,4 @@ class ControllerManager {
|
|
|
109
112
|
}
|
|
110
113
|
}
|
|
111
114
|
exports.ControllerManager = ControllerManager;
|
|
115
|
+
exports.gCtrMgr = new ControllerManager();
|
|
@@ -9,7 +9,8 @@ const cors = require("cors");
|
|
|
9
9
|
const Express = require("express");
|
|
10
10
|
const cookieParser = require("cookie-parser");
|
|
11
11
|
const Config_1 = require("../../Config/Config");
|
|
12
|
-
const
|
|
12
|
+
const Log_1 = require("../../Logic/Log");
|
|
13
|
+
const ControllerManager_1 = require("./ControllerManager");
|
|
13
14
|
class Engine {
|
|
14
15
|
_app = Express();
|
|
15
16
|
_cfg = null;
|
|
@@ -33,7 +34,7 @@ class Engine {
|
|
|
33
34
|
//let https = require("https");
|
|
34
35
|
let fs = require("fs");
|
|
35
36
|
if (!port) {
|
|
36
|
-
|
|
37
|
+
Log_1.gLog.error(this._cfg);
|
|
37
38
|
return;
|
|
38
39
|
}
|
|
39
40
|
if (this._cfg.ssl) {
|
|
@@ -43,13 +44,13 @@ class Engine {
|
|
|
43
44
|
};
|
|
44
45
|
https.createServer(httpsOption, this._app).listen(port, () => {
|
|
45
46
|
this._is_running = true;
|
|
46
|
-
|
|
47
|
+
Log_1.gLog.info("Server(" + this._cfg.web_name + ") running at https://127.0.0.1:" + port + "/");
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
50
|
else {
|
|
50
51
|
http.createServer(this._app).listen(port, () => {
|
|
51
52
|
this._is_running = true;
|
|
52
|
-
|
|
53
|
+
Log_1.gLog.info("Server(" + this._cfg.web_name + ") running at http://127.0.0.1:" + port + "/");
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
this._app.use(cookieParser());
|
|
@@ -62,7 +63,7 @@ class Engine {
|
|
|
62
63
|
}, }));
|
|
63
64
|
this._app.use((err, req, res, next) => {
|
|
64
65
|
if (err) {
|
|
65
|
-
|
|
66
|
+
Log_1.gLog.error(err);
|
|
66
67
|
}
|
|
67
68
|
next(err);
|
|
68
69
|
});
|
|
@@ -96,15 +97,15 @@ class Engine {
|
|
|
96
97
|
this._onall(req, res).then(() => {
|
|
97
98
|
if (this._cfg.debug) {
|
|
98
99
|
let time_str = (Date.now() - time) + "ms";
|
|
99
|
-
|
|
100
|
+
Log_1.gLog.info("[" + time_str + "] " + req.method + " " + req.url);
|
|
100
101
|
}
|
|
101
102
|
}).catch((err) => {
|
|
102
103
|
res.sendStatus(500);
|
|
103
104
|
let exreq = new Request_1.Request(req, this._cfg);
|
|
104
105
|
let info = exreq.getDebugInfo();
|
|
105
106
|
info["tip"] = "server error";
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
Log_1.gLog.error(info);
|
|
108
|
+
Log_1.gLog.error(err);
|
|
108
109
|
});
|
|
109
110
|
});
|
|
110
111
|
}
|
|
@@ -141,15 +142,15 @@ class Engine {
|
|
|
141
142
|
res.sendStatus(500);
|
|
142
143
|
let info = req.getDebugInfo();
|
|
143
144
|
info["tip"] = "not support method:" + method;
|
|
144
|
-
|
|
145
|
+
Log_1.gLog.error(info);
|
|
145
146
|
return null;
|
|
146
147
|
}
|
|
147
|
-
let action_name =
|
|
148
|
+
let action_name = ControllerManager_1.gCtrMgr.getActionName(req.module, req.controller, pre_action + req.action);
|
|
148
149
|
if (!action_name) {
|
|
149
150
|
res.sendStatus(500);
|
|
150
151
|
let info = req.getDebugInfo();
|
|
151
152
|
info["tip"] = "request has no action";
|
|
152
|
-
|
|
153
|
+
Log_1.gLog.error(info);
|
|
153
154
|
return null;
|
|
154
155
|
}
|
|
155
156
|
return {
|
|
@@ -159,10 +160,10 @@ class Engine {
|
|
|
159
160
|
};
|
|
160
161
|
}
|
|
161
162
|
async _callCtrAction(action_name, req, res) {
|
|
162
|
-
let ctr =
|
|
163
|
+
let ctr = ControllerManager_1.gCtrMgr.getStaticCtr(req.module, req.controller);
|
|
163
164
|
let cls_ctr = null;
|
|
164
165
|
if (!ctr) {
|
|
165
|
-
cls_ctr =
|
|
166
|
+
cls_ctr = ControllerManager_1.gCtrMgr.getClass(req.module, req.controller);
|
|
166
167
|
}
|
|
167
168
|
if (!ctr) {
|
|
168
169
|
ctr = new cls_ctr(req, res, this);
|
|
@@ -175,19 +176,19 @@ class Engine {
|
|
|
175
176
|
}
|
|
176
177
|
pause() {
|
|
177
178
|
if (!this._is_running) {
|
|
178
|
-
|
|
179
|
+
Log_1.gLog.error("webserver has paused:" + this._cfg.web_name);
|
|
179
180
|
return;
|
|
180
181
|
}
|
|
181
182
|
this._is_running = false;
|
|
182
|
-
|
|
183
|
+
Log_1.gLog.info("webserver paused:" + this._cfg.web_name);
|
|
183
184
|
}
|
|
184
185
|
resume() {
|
|
185
186
|
if (this._is_running) {
|
|
186
|
-
|
|
187
|
+
Log_1.gLog.error("webserver is running:" + this._cfg.web_name);
|
|
187
188
|
return;
|
|
188
189
|
}
|
|
189
190
|
this._is_running = true;
|
|
190
|
-
|
|
191
|
+
Log_1.gLog.info("webserver resumed:" + this._cfg.web_name);
|
|
191
192
|
}
|
|
192
193
|
getRenderHtml(req, res, datas) {
|
|
193
194
|
let rootview = this._cfg.rootview || "view";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RazorJs = void 0;
|
|
4
|
-
const
|
|
4
|
+
const Log_1 = require("../../Logic/Log");
|
|
5
5
|
var _suffix = ".cshtml";
|
|
6
6
|
var _MATCH_HTML = /[&<>\'"]/g;
|
|
7
7
|
var _ENCODE_HTML_RULES = {
|
|
@@ -190,7 +190,7 @@ class RazorJs {
|
|
|
190
190
|
if (html) {
|
|
191
191
|
return html;
|
|
192
192
|
}
|
|
193
|
-
|
|
193
|
+
Log_1.gLog.error("no view:" + tmpl_path);
|
|
194
194
|
return "Server Error(No View)";
|
|
195
195
|
}
|
|
196
196
|
data = data || {};
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Request = void 0;
|
|
4
4
|
const url_1 = require("url");
|
|
5
5
|
const Core_1 = require("../../Core/Core");
|
|
6
|
-
const
|
|
6
|
+
const Log_1 = require("../../Logic/Log");
|
|
7
7
|
class Request {
|
|
8
8
|
_req = null;
|
|
9
9
|
get baseReq() {
|
|
@@ -73,7 +73,7 @@ class Request {
|
|
|
73
73
|
body = JSON.parse(body);
|
|
74
74
|
}
|
|
75
75
|
catch (e) {
|
|
76
|
-
|
|
76
|
+
Log_1.gLog.error("post data--" + body + "--parse error");
|
|
77
77
|
body = {};
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -224,7 +224,7 @@ class Request {
|
|
|
224
224
|
return;
|
|
225
225
|
}
|
|
226
226
|
let debuginfo = this.getDebugInfo();
|
|
227
|
-
|
|
227
|
+
Log_1.gLog.info(debuginfo);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
exports.Request = Request;
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Response = void 0;
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const mime = require("mime");
|
|
6
|
-
const
|
|
6
|
+
const Log_1 = require("../../Logic/Log");
|
|
7
7
|
class Response {
|
|
8
8
|
_res = null;
|
|
9
9
|
_cookie_prefix = "";
|
|
@@ -79,7 +79,7 @@ class Response {
|
|
|
79
79
|
if (!this._cfg.debug) {
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
Log_1.gLog.info(data);
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
exports.Response = Response;
|
|
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.IWebServer = void 0;
|
|
4
4
|
const Engine_1 = require("./Engine/Engine");
|
|
5
5
|
const RazorJs_1 = require("./Engine/RazorJs");
|
|
6
|
-
const
|
|
6
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
7
|
+
const cgserver_1 = require("../cgserver");
|
|
8
|
+
const EventTool_1 = require("../Logic/EventTool");
|
|
9
|
+
const Log_1 = require("../Logic/Log");
|
|
7
10
|
//实现对controller的手动注册
|
|
8
11
|
class IWebServer {
|
|
9
12
|
_engine = null;
|
|
@@ -12,19 +15,19 @@ class IWebServer {
|
|
|
12
15
|
* @param server_index 这个是服务器的配置index
|
|
13
16
|
*/
|
|
14
17
|
async start(cfg) {
|
|
15
|
-
|
|
18
|
+
cgserver_1.gCgServer.addWebServer(this);
|
|
16
19
|
if (!cfg) {
|
|
17
|
-
|
|
20
|
+
Log_1.gLog.error("webserver 配置不存在,启动服务器失败");
|
|
18
21
|
return false;
|
|
19
22
|
}
|
|
20
|
-
let dbcfg =
|
|
21
|
-
await
|
|
23
|
+
let dbcfg = IServerConfig_1.gServerCfg.db;
|
|
24
|
+
await cgserver_1.gCgServer.initDb(dbcfg);
|
|
22
25
|
//初始化web引擎
|
|
23
26
|
this._engine = new Engine_1.Engine(cfg, new RazorJs_1.RazorJs());
|
|
24
27
|
this._engine.start();
|
|
25
28
|
this._registerController();
|
|
26
29
|
this._registerRouter();
|
|
27
|
-
|
|
30
|
+
EventTool_1.gEventTool.emit("web_server_init_done");
|
|
28
31
|
return true;
|
|
29
32
|
}
|
|
30
33
|
pause() {
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CgServer = void 0;
|
|
3
|
+
exports.gCgServer = exports.CgServer = void 0;
|
|
4
4
|
const Core_1 = require("./Core/Core");
|
|
5
5
|
const Config_1 = require("./Config/Config");
|
|
6
|
-
const
|
|
6
|
+
const MSSqlManager_1 = require("./Database/MSSqlManager");
|
|
7
|
+
const RedisManager_1 = require("./Database/RedisManager");
|
|
8
|
+
const MysqlManager_1 = require("./Database/MysqlManager");
|
|
9
|
+
const MongoManager_1 = require("./Database/Mongo/MongoManager");
|
|
10
|
+
const Log_1 = require("./Logic/Log");
|
|
11
|
+
const EventTool_1 = require("./Logic/EventTool");
|
|
7
12
|
class CgServer {
|
|
8
13
|
_webservers = [];
|
|
9
14
|
get webServers() {
|
|
@@ -48,8 +53,8 @@ class CgServer {
|
|
|
48
53
|
process.on("SIGUSR1", this.onExit.bind(this));
|
|
49
54
|
process.on("SIGUSR2", this.onExit.bind(this));
|
|
50
55
|
process.env.TZ = "Asia/Shanghai";
|
|
51
|
-
|
|
52
|
-
|
|
56
|
+
EventTool_1.gEventTool.on("socket_server_init_done", this.onStart.bind(this));
|
|
57
|
+
EventTool_1.gEventTool.on("web_server_init_done", this.onStart.bind(this));
|
|
53
58
|
let argv = process.argv || [];
|
|
54
59
|
for (let i = 0; i < argv.length; ++i) {
|
|
55
60
|
let arg = argv[i].toLowerCase();
|
|
@@ -112,7 +117,7 @@ class CgServer {
|
|
|
112
117
|
return true;
|
|
113
118
|
}
|
|
114
119
|
onUnCaughtException(e) {
|
|
115
|
-
|
|
120
|
+
Log_1.gLog.error(e.stack);
|
|
116
121
|
let events = this._events["uncaughtexception"] || [];
|
|
117
122
|
for (let i = 0; i < events.length; ++i) {
|
|
118
123
|
Core_1.core.safeCall(events[i]);
|
|
@@ -125,14 +130,14 @@ class CgServer {
|
|
|
125
130
|
this._socketservers.push(server);
|
|
126
131
|
}
|
|
127
132
|
async initDb(dbcfg) {
|
|
128
|
-
await
|
|
129
|
-
await
|
|
130
|
-
await
|
|
133
|
+
await MSSqlManager_1.gMSSqlMgr.init(dbcfg.mssql);
|
|
134
|
+
await MysqlManager_1.gMysqlMgr.init(dbcfg.mysql);
|
|
135
|
+
await RedisManager_1.gRedisMgr.init(dbcfg.redis);
|
|
131
136
|
let mongos = dbcfg.mongos || [];
|
|
132
137
|
if (dbcfg.mongo) {
|
|
133
138
|
mongos.push(dbcfg.mongo);
|
|
134
139
|
}
|
|
135
|
-
await
|
|
140
|
+
await MongoManager_1.gMongoMgr.init(mongos);
|
|
136
141
|
}
|
|
137
142
|
pause() {
|
|
138
143
|
for (let i = 0; i < this._webservers.length; ++i) {
|
|
@@ -152,3 +157,4 @@ class CgServer {
|
|
|
152
157
|
}
|
|
153
158
|
}
|
|
154
159
|
exports.CgServer = CgServer;
|
|
160
|
+
exports.gCgServer = new CgServer();
|
|
@@ -25,12 +25,15 @@ const QiniuTool_1 = require("./ThirdParty/QiniuTool");
|
|
|
25
25
|
const WechatTool_1 = require("./ThirdParty/WechatTool");
|
|
26
26
|
const ControllerManager_1 = require("./WebServer/Engine/ControllerManager");
|
|
27
27
|
const cgserver_1 = require("./cgserver");
|
|
28
|
+
const Core_1 = require("./Core/Core");
|
|
29
|
+
/**
|
|
30
|
+
* cg引擎的,全局对象
|
|
31
|
+
*/
|
|
28
32
|
class global {
|
|
29
33
|
static gMongoServiceMgr = new MongoServiceManager_1.MongoServiceManager();
|
|
30
34
|
static gCgServer = new cgserver_1.CgServer();
|
|
31
35
|
static gDbCache = new DBCache_1.DBCache();
|
|
32
36
|
static gTriggerMgr = new TriggerMgr_1.TriggerManager();
|
|
33
|
-
static gServerCfg = null;
|
|
34
37
|
static gMongoMgr = new MongoManager_1.MongoManager();
|
|
35
38
|
static gMSSqlMgr = new MSSqlManager_1.MSSqlManager();
|
|
36
39
|
static gMysqlMgr = new MysqlManager_1.MysqlManager();
|
|
@@ -50,7 +53,20 @@ class global {
|
|
|
50
53
|
static gAlipayTool = new AlipayTool_1.AlipayTool();
|
|
51
54
|
static gAppleTool = new AppleTool_1.AppleTool();
|
|
52
55
|
static gProtoFactory = new ProtoFactory_1.ProtoFactory();
|
|
56
|
+
/**
|
|
57
|
+
* web服务中mvc的控制器管理器
|
|
58
|
+
*/
|
|
53
59
|
static gCtrMgr = new ControllerManager_1.ControllerManager();
|
|
60
|
+
/**
|
|
61
|
+
* mongo版本的缓存服务
|
|
62
|
+
* 可以用来缓存kv数据
|
|
63
|
+
*/
|
|
54
64
|
static gMongoCacheSer = new MongoCacheService_1.MongoCacheService();
|
|
65
|
+
/**
|
|
66
|
+
* 一些通用的常用函数,
|
|
67
|
+
* 比如格式化字符串,常用加解密,
|
|
68
|
+
* 时间计算,类型判断等
|
|
69
|
+
*/
|
|
70
|
+
static core = Core_1.core;
|
|
55
71
|
}
|
|
56
72
|
exports.global = global;
|