cgserver 10.0.1 → 10.0.3
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/ByteTool.js +2 -1
- package/dist/lib/Framework/Core/Core.js +4 -4
- 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/Mongo/MongoServiceManager.js +2 -1
- 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 +4 -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 +18 -16
- package/dist/lib/Framework/ThirdParty/Alisms.js +11 -9
- package/dist/lib/Framework/ThirdParty/AppleTool.js +16 -13
- package/dist/lib/Framework/ThirdParty/CgMq.js +3 -3
- package/dist/lib/Framework/ThirdParty/EmailTool.js +13 -11
- package/dist/lib/Framework/ThirdParty/QQTool.js +22 -19
- package/dist/lib/Framework/ThirdParty/QiniuTool.js +10 -8
- 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 +2 -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 +25 -26
- 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/ByteTool.d.ts +1 -0
- 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/Mongo/MongoServiceManager.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 +1 -0
- package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/Alisms.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/AppleTool.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/EmailTool.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/QQTool.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +1 -0
- package/dist/types/Framework/ThirdParty/WechatTool.d.ts +1 -0
- package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +1 -0
- package/dist/types/Framework/cgserver.d.ts +1 -0
- package/dist/types/Framework/global.d.ts +26 -52
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QQTool = exports.QQUserInfo = void 0;
|
|
3
|
+
exports.gQQTool = exports.QQTool = exports.QQUserInfo = void 0;
|
|
4
4
|
const _ = require("underscore");
|
|
5
5
|
const URLEncode = require("urlencode");
|
|
6
|
-
const
|
|
6
|
+
const Log_1 = require("../Logic/Log");
|
|
7
|
+
const HttpTool_1 = require("../Logic/HttpTool");
|
|
8
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
7
9
|
class QQUserInfo {
|
|
8
10
|
ret = 0;
|
|
9
11
|
msg = "";
|
|
@@ -41,14 +43,14 @@ class QQTool {
|
|
|
41
43
|
如果传入“mobile”,则展示为mobile端下的样式。
|
|
42
44
|
*/
|
|
43
45
|
getAuthCodeUrl(scope, display) {
|
|
44
|
-
if (!
|
|
45
|
-
|
|
46
|
+
if (!IServerConfig_1.gServerCfg.qq) {
|
|
47
|
+
Log_1.gLog.error("qq config not found!");
|
|
46
48
|
return null;
|
|
47
49
|
}
|
|
48
50
|
//必须 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心
|
|
49
|
-
let redirect_uri = URLEncode.encode(
|
|
51
|
+
let redirect_uri = URLEncode.encode(IServerConfig_1.gServerCfg.qq.redirect_uri);
|
|
50
52
|
//必须 申请QQ登录成功后,分配给应用的appid。
|
|
51
|
-
let client_id =
|
|
53
|
+
let client_id = IServerConfig_1.gServerCfg.qq.app_id;
|
|
52
54
|
//必须 授权类型,此值固定为“code”。
|
|
53
55
|
let response_type = "code";
|
|
54
56
|
//必须 client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
|
|
@@ -67,31 +69,31 @@ class QQTool {
|
|
|
67
69
|
if (!auth_code) {
|
|
68
70
|
return null;
|
|
69
71
|
}
|
|
70
|
-
if (!
|
|
71
|
-
|
|
72
|
+
if (!IServerConfig_1.gServerCfg.qq) {
|
|
73
|
+
Log_1.gLog.error("qq config not found!");
|
|
72
74
|
return null;
|
|
73
75
|
}
|
|
74
76
|
//必须 授权类型,在本步骤中,此值为“authorization_code”。
|
|
75
77
|
let grant_type = "authorization_code";
|
|
76
78
|
//必须 申请QQ登录成功后,分配给应用的appid。
|
|
77
|
-
let client_id =
|
|
79
|
+
let client_id = IServerConfig_1.gServerCfg.qq.app_id;
|
|
78
80
|
//必须 申请QQ登录成功后,分配给网站的appkey。
|
|
79
|
-
let client_secret =
|
|
81
|
+
let client_secret = IServerConfig_1.gServerCfg.qq.app_key;
|
|
80
82
|
//必须 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心
|
|
81
|
-
let redirect_uri = URLEncode.encode(
|
|
83
|
+
let redirect_uri = URLEncode.encode(IServerConfig_1.gServerCfg.qq.redirect_uri);
|
|
82
84
|
let url = "https://graph.qq.com/oauth2.0/token?code=" + auth_code + "&grant_type=" + grant_type + "&client_id=" + client_id + "&client_secret=" + client_secret + "&redirect_uri=" + redirect_uri;
|
|
83
|
-
let rs = await
|
|
85
|
+
let rs = await HttpTool_1.gHttpTool.get(url);
|
|
84
86
|
if (rs.body && rs.body.access_token) {
|
|
85
87
|
return rs.body.access_token;
|
|
86
88
|
}
|
|
87
89
|
else {
|
|
88
|
-
|
|
90
|
+
Log_1.gLog.error(rs.body);
|
|
89
91
|
}
|
|
90
92
|
return null;
|
|
91
93
|
}
|
|
92
94
|
async getOpenId(access_token) {
|
|
93
95
|
let url = "https://graph.qq.com/oauth2.0/me?access_token=" + access_token;
|
|
94
|
-
let rs = await
|
|
96
|
+
let rs = await HttpTool_1.gHttpTool.get(url);
|
|
95
97
|
let body = rs.response ? rs.response.body : null;
|
|
96
98
|
if (body) {
|
|
97
99
|
body = body.replace("callback( ", "");
|
|
@@ -101,7 +103,7 @@ class QQTool {
|
|
|
101
103
|
}
|
|
102
104
|
catch (e) { }
|
|
103
105
|
if (!body.openid) {
|
|
104
|
-
|
|
106
|
+
Log_1.gLog.error(rs.response.body);
|
|
105
107
|
}
|
|
106
108
|
return body.openid;
|
|
107
109
|
}
|
|
@@ -111,12 +113,12 @@ class QQTool {
|
|
|
111
113
|
if (!access_token || !openid) {
|
|
112
114
|
return null;
|
|
113
115
|
}
|
|
114
|
-
if (!
|
|
115
|
-
|
|
116
|
+
if (!IServerConfig_1.gServerCfg.qq) {
|
|
117
|
+
Log_1.gLog.error("qq config not found!");
|
|
116
118
|
return null;
|
|
117
119
|
}
|
|
118
|
-
let url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token + "&oauth_consumer_key=" +
|
|
119
|
-
let rs = await
|
|
120
|
+
let url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token + "&oauth_consumer_key=" + IServerConfig_1.gServerCfg.qq.app_id + "&openid=" + openid;
|
|
121
|
+
let rs = await HttpTool_1.gHttpTool.get(url);
|
|
120
122
|
if (rs.body) {
|
|
121
123
|
return rs.body;
|
|
122
124
|
}
|
|
@@ -124,3 +126,4 @@ class QQTool {
|
|
|
124
126
|
}
|
|
125
127
|
}
|
|
126
128
|
exports.QQTool = QQTool;
|
|
129
|
+
exports.gQQTool = new QQTool();
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QiniuTool = void 0;
|
|
3
|
+
exports.gQiniuTool = 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);
|
|
@@ -25,3 +26,4 @@ class QiniuTool {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
exports.QiniuTool = QiniuTool;
|
|
29
|
+
exports.gQiniuTool = new QiniuTool();
|
|
@@ -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,6 @@
|
|
|
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
4
|
/**
|
|
5
5
|
* web服务中mvc的控制器管理器
|
|
6
6
|
*/
|
|
@@ -112,3 +112,4 @@ class ControllerManager {
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
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() {
|