cgserver 10.0.1 → 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 +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/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 +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 +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 +0 -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/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 +1 -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 +1 -0
- package/dist/types/Framework/cgserver.d.ts +1 -0
- package/dist/types/Framework/global.d.ts +0 -2
- package/package.json +1 -1
|
@@ -5,8 +5,11 @@ const ws = require("websocket");
|
|
|
5
5
|
const fs = require("fs");
|
|
6
6
|
const http = require("http");
|
|
7
7
|
const https = require("https");
|
|
8
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
8
9
|
const Config_1 = require("../Config/Config");
|
|
9
|
-
const
|
|
10
|
+
const cgserver_1 = require("../cgserver");
|
|
11
|
+
const Log_1 = require("../Logic/Log");
|
|
12
|
+
const EventTool_1 = require("../Logic/EventTool");
|
|
10
13
|
class ISocketServer {
|
|
11
14
|
_cfg = null;
|
|
12
15
|
//方便提示
|
|
@@ -54,27 +57,27 @@ class ISocketServer {
|
|
|
54
57
|
delete this._ws_clients[socketId];
|
|
55
58
|
}
|
|
56
59
|
async run() {
|
|
57
|
-
|
|
58
|
-
let dbcfg =
|
|
59
|
-
await
|
|
60
|
+
cgserver_1.gCgServer.addSocketServer(this);
|
|
61
|
+
let dbcfg = IServerConfig_1.gServerCfg.db;
|
|
62
|
+
await cgserver_1.gCgServer.initDb(dbcfg);
|
|
60
63
|
this.initWebSocket();
|
|
61
64
|
}
|
|
62
65
|
pause() {
|
|
63
66
|
if (!this._is_runging) {
|
|
64
|
-
|
|
67
|
+
Log_1.gLog.error("websocketserver has paused:" + this._cfg.port);
|
|
65
68
|
return;
|
|
66
69
|
}
|
|
67
70
|
this._is_runging = false;
|
|
68
71
|
this._listening_websocket.closeAllConnections();
|
|
69
|
-
|
|
72
|
+
Log_1.gLog.info("websocketserver paused:" + this._cfg.port);
|
|
70
73
|
}
|
|
71
74
|
resume() {
|
|
72
75
|
if (this._is_runging) {
|
|
73
|
-
|
|
76
|
+
Log_1.gLog.error("websocketserver is running:" + this._cfg.port);
|
|
74
77
|
return;
|
|
75
78
|
}
|
|
76
79
|
this._is_runging = true;
|
|
77
|
-
|
|
80
|
+
Log_1.gLog.error("websocketserver resumed:" + this._cfg.port);
|
|
78
81
|
}
|
|
79
82
|
/*
|
|
80
83
|
把所有的客户端链接保存起来
|
|
@@ -98,14 +101,14 @@ class ISocketServer {
|
|
|
98
101
|
//passphrase:'1234'//如果秘钥文件有密码的话,用这个属性设置密码
|
|
99
102
|
};
|
|
100
103
|
server = https.createServer(options, (request, response) => {
|
|
101
|
-
|
|
104
|
+
Log_1.gLog.info((new Date()) + 'wss Received request for ' + request.url);
|
|
102
105
|
response.writeHead(200);
|
|
103
106
|
response.end();
|
|
104
107
|
});
|
|
105
108
|
}
|
|
106
109
|
else {
|
|
107
110
|
server = http.createServer((request, response) => {
|
|
108
|
-
|
|
111
|
+
Log_1.gLog.info((new Date()) + 'ws Received request for ' + request.url);
|
|
109
112
|
response.writeHead(200);
|
|
110
113
|
response.end();
|
|
111
114
|
});
|
|
@@ -127,14 +130,14 @@ class ISocketServer {
|
|
|
127
130
|
}
|
|
128
131
|
onListenning() {
|
|
129
132
|
this._is_runging = true;
|
|
130
|
-
|
|
133
|
+
EventTool_1.gEventTool.emit("socket_server_init_done");
|
|
131
134
|
let info = (new Date()) + " Server " + this.name + " is listening on port " + this._cfg.port;
|
|
132
|
-
|
|
135
|
+
Log_1.gLog.info(info);
|
|
133
136
|
}
|
|
134
137
|
onRequest(req) {
|
|
135
138
|
if (!this._is_runging) {
|
|
136
139
|
req.reject();
|
|
137
|
-
|
|
140
|
+
Log_1.gLog.error(' Connection from origin ' + req.origin + ' rejected.');
|
|
138
141
|
return;
|
|
139
142
|
}
|
|
140
143
|
let protocol = null;
|
|
@@ -144,28 +147,28 @@ class ISocketServer {
|
|
|
144
147
|
let allowed = this.isOriginAllowed(req.origin);
|
|
145
148
|
if (!allowed) {
|
|
146
149
|
req.reject();
|
|
147
|
-
|
|
150
|
+
Log_1.gLog.error(' Connection from origin ' + req.origin + ' rejected.');
|
|
148
151
|
return;
|
|
149
152
|
}
|
|
150
153
|
try {
|
|
151
154
|
let conn = req.accept(this._accepted_protocol, req.origin);
|
|
152
155
|
if (!conn) {
|
|
153
|
-
|
|
156
|
+
Log_1.gLog.error(' protocol reject');
|
|
154
157
|
return;
|
|
155
158
|
}
|
|
156
|
-
|
|
159
|
+
Log_1.gLog.info((new Date()) + ' Connection accepted.');
|
|
157
160
|
let server_name = this._getServerNameByCookies(req.cookies);
|
|
158
161
|
this.createWebSocketObjectByProtocol(server_name, conn, req);
|
|
159
162
|
}
|
|
160
163
|
catch (e) {
|
|
161
|
-
|
|
164
|
+
Log_1.gLog.error(' protocol reject');
|
|
162
165
|
}
|
|
163
166
|
}
|
|
164
167
|
createWebSocketObjectByProtocol(server_name, _ws, req) {
|
|
165
168
|
server_name = server_name || "default";
|
|
166
169
|
let cls = this._name_vs_class[server_name];
|
|
167
170
|
if (!cls) {
|
|
168
|
-
|
|
171
|
+
Log_1.gLog.error("(createWebSocketObjectByProtocol in server(" + this.name + "))no this websocket handle class=" + server_name);
|
|
169
172
|
return null;
|
|
170
173
|
}
|
|
171
174
|
let ws_server = (new cls(this));
|
|
@@ -4,7 +4,9 @@ exports.IWebSocket = exports.BaseMsg = void 0;
|
|
|
4
4
|
const IProtoFilter_1 = require("./ProtoFilter/IProtoFilter");
|
|
5
5
|
const Core_1 = require("../Core/Core");
|
|
6
6
|
const _ = require("underscore");
|
|
7
|
-
const
|
|
7
|
+
const ProtoFactory_1 = require("./ProtoFilter/ProtoFactory");
|
|
8
|
+
const SyncQueueTool_1 = require("../Logic/SyncQueueTool");
|
|
9
|
+
const Log_1 = require("../Logic/Log");
|
|
8
10
|
class BaseMsg {
|
|
9
11
|
cmd;
|
|
10
12
|
errcode;
|
|
@@ -83,7 +85,7 @@ class IWebSocket {
|
|
|
83
85
|
this._ws = _ws;
|
|
84
86
|
this._req = _req;
|
|
85
87
|
if (!this._protoFilter) {
|
|
86
|
-
this._protoFilter =
|
|
88
|
+
this._protoFilter = ProtoFactory_1.gProtoFactory.createFilter(this._protoType);
|
|
87
89
|
this._protoFilter.init(this._protoPath);
|
|
88
90
|
}
|
|
89
91
|
this._ws.on("message", this.onMessage.bind(this));
|
|
@@ -95,14 +97,14 @@ class IWebSocket {
|
|
|
95
97
|
try {
|
|
96
98
|
let msg = this._onDecode(message);
|
|
97
99
|
if (this._is_sync_msg) {
|
|
98
|
-
|
|
100
|
+
SyncQueueTool_1.gSyncQueueTool.add(this._socket_id + "", this._onMessage, this, msg);
|
|
99
101
|
}
|
|
100
102
|
else {
|
|
101
103
|
this._onMessage(msg);
|
|
102
104
|
}
|
|
103
105
|
}
|
|
104
106
|
catch (e) {
|
|
105
|
-
|
|
107
|
+
Log_1.gLog.error(this.tipKey + ' Received Message Handle Error: ' + e);
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
_onDecode(message, ...params) {
|
|
@@ -126,14 +128,14 @@ class IWebSocket {
|
|
|
126
128
|
*/
|
|
127
129
|
filterMsg(msg) {
|
|
128
130
|
if (!msg) {
|
|
129
|
-
|
|
131
|
+
Log_1.gLog.error({ tipKey: this.tipKey, action: "receive", error: "no cmd", msg });
|
|
130
132
|
return false;
|
|
131
133
|
}
|
|
132
134
|
if (this._debug_msg && !this._nodebugmsgs[msg.cmd]) {
|
|
133
|
-
|
|
135
|
+
Log_1.gLog.info({ tipKey: this.tipKey, action: "receive", msg });
|
|
134
136
|
}
|
|
135
137
|
if (!msg.cmd) {
|
|
136
|
-
|
|
138
|
+
Log_1.gLog.error({ tipKey: this.tipKey, action: "receive", error: "no cmd", msg });
|
|
137
139
|
return false;
|
|
138
140
|
}
|
|
139
141
|
return true;
|
|
@@ -152,14 +154,14 @@ class IWebSocket {
|
|
|
152
154
|
await Core_1.core.safeCall(otherfunc, this, jsonData);
|
|
153
155
|
}
|
|
154
156
|
else {
|
|
155
|
-
|
|
157
|
+
Log_1.gLog.error(this.tipKey + ' Received Message warning: no cmd handle,cmd=' + jsonData.cmd);
|
|
156
158
|
}
|
|
157
159
|
}
|
|
158
160
|
else {
|
|
159
161
|
await Core_1.core.safeCall(func, this, jsonData);
|
|
160
162
|
}
|
|
161
163
|
if (this._debug_msg && !this._nodebugmsgs[jsonData.cmd]) {
|
|
162
|
-
|
|
164
|
+
Log_1.gLog.info("[" + (Date.now() - time) + "ms] " + jsonData.cmd);
|
|
163
165
|
}
|
|
164
166
|
}
|
|
165
167
|
onOpen(e) {
|
|
@@ -167,19 +169,19 @@ class IWebSocket {
|
|
|
167
169
|
onError(e) {
|
|
168
170
|
}
|
|
169
171
|
onClose(reasonCode, description) {
|
|
170
|
-
|
|
172
|
+
Log_1.gLog.info(this.tipKey + " onClose resonCode=" + reasonCode + " des=" + description);
|
|
171
173
|
}
|
|
172
174
|
filterSendMsg(msg) {
|
|
173
175
|
if (!this.connected) {
|
|
174
176
|
return false;
|
|
175
177
|
}
|
|
176
178
|
if (!msg) {
|
|
177
|
-
|
|
179
|
+
Log_1.gLog.error(this.tipKey + " Send Message warning:null data!");
|
|
178
180
|
return false;
|
|
179
181
|
}
|
|
180
182
|
if (this._debug_msg
|
|
181
183
|
&& msg.cmd != "heartbeat") {
|
|
182
|
-
|
|
184
|
+
Log_1.gLog.info({ tipKey: this.tipKey, action: "send", msg });
|
|
183
185
|
}
|
|
184
186
|
return true;
|
|
185
187
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GoogleProtoFilter = void 0;
|
|
4
|
-
const
|
|
4
|
+
const Log_1 = require("../../Logic/Log");
|
|
5
5
|
const protobufjs = require("protobufjs");
|
|
6
6
|
class GoogleProtoFilter {
|
|
7
7
|
_root = new protobufjs.Root();
|
|
@@ -15,7 +15,7 @@ class GoogleProtoFilter {
|
|
|
15
15
|
this._root.loadSync(path, { keepCase: true });
|
|
16
16
|
}
|
|
17
17
|
catch (e) {
|
|
18
|
-
|
|
18
|
+
Log_1.gLog.error(e);
|
|
19
19
|
return false;
|
|
20
20
|
}
|
|
21
21
|
return true;
|
|
@@ -40,12 +40,12 @@ class GoogleProtoFilter {
|
|
|
40
40
|
decode(data, root) {
|
|
41
41
|
let body = this._root.lookupType(root);
|
|
42
42
|
if (!body) {
|
|
43
|
-
|
|
43
|
+
Log_1.gLog.info("proto body not in proto(!" + root + ")");
|
|
44
44
|
return null;
|
|
45
45
|
}
|
|
46
46
|
let msgBody = body.decode(data);
|
|
47
47
|
if (!msgBody) {
|
|
48
|
-
|
|
48
|
+
Log_1.gLog.info("proto body decode wrong!");
|
|
49
49
|
return null;
|
|
50
50
|
}
|
|
51
51
|
let objBody = body.toObject(msgBody);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JsonProtoFilter = void 0;
|
|
4
4
|
const Core_1 = require("../../Core/Core");
|
|
5
|
-
const
|
|
5
|
+
const Log_1 = require("../../Logic/Log");
|
|
6
6
|
class JsonProtoFilter {
|
|
7
7
|
init(path) {
|
|
8
8
|
return true;
|
|
@@ -20,7 +20,7 @@ class JsonProtoFilter {
|
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
catch (e) {
|
|
23
|
-
|
|
23
|
+
Log_1.gLog.error("decode json data Failed-----data=" + data);
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
26
|
return data;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProtoFactory = void 0;
|
|
3
|
+
exports.gProtoFactory = exports.ProtoFactory = void 0;
|
|
4
4
|
const GoogleProtoFilter_1 = require("./GoogleProtoFilter");
|
|
5
5
|
const JsonProtoFilter_1 = require("./JsonProtoFilter");
|
|
6
6
|
const IProtoFilter_1 = require("./IProtoFilter");
|
|
@@ -32,3 +32,4 @@ class ProtoFactory {
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
exports.ProtoFactory = ProtoFactory;
|
|
35
|
+
exports.gProtoFactory = new ProtoFactory();
|
|
@@ -7,7 +7,8 @@ const AliPayUtil_1 = require("alipay_sdk2/AliPayUtil");
|
|
|
7
7
|
const fs = require("fs");
|
|
8
8
|
const form_1 = require("alipay-sdk/lib/form");
|
|
9
9
|
const Config_1 = require("../Config/Config");
|
|
10
|
-
const
|
|
10
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
11
|
+
const Log_1 = require("../Logic/Log");
|
|
11
12
|
class AlipayResult {
|
|
12
13
|
alipay_trade_app_pay_response = {
|
|
13
14
|
code: "10000",
|
|
@@ -70,26 +71,26 @@ class AlipayTool {
|
|
|
70
71
|
notify_url: ""
|
|
71
72
|
};
|
|
72
73
|
init() {
|
|
73
|
-
if (!
|
|
74
|
-
|| !
|
|
74
|
+
if (!IServerConfig_1.gServerCfg.alipay
|
|
75
|
+
|| !IServerConfig_1.gServerCfg.alipay.open) {
|
|
75
76
|
return false;
|
|
76
77
|
}
|
|
77
78
|
let suffix = "";
|
|
78
|
-
if (
|
|
79
|
+
if (IServerConfig_1.gServerCfg.alipay.dev) {
|
|
79
80
|
suffix = "_dev";
|
|
80
81
|
}
|
|
81
82
|
this._cfg = {
|
|
82
|
-
app_id:
|
|
83
|
-
app_key:
|
|
84
|
-
gateway:
|
|
83
|
+
app_id: IServerConfig_1.gServerCfg.alipay["app_id" + suffix],
|
|
84
|
+
app_key: IServerConfig_1.gServerCfg.alipay["app_key" + suffix],
|
|
85
|
+
gateway: IServerConfig_1.gServerCfg.alipay["gateway" + suffix],
|
|
85
86
|
//RSA1 RSA2
|
|
86
|
-
signType:
|
|
87
|
+
signType: IServerConfig_1.gServerCfg.alipay["signType" + suffix],
|
|
87
88
|
/** 指定private key类型, 默认: PKCS1, PKCS8: PRIVATE KEY, PKCS1: RSA PRIVATE KEY */
|
|
88
|
-
keyType:
|
|
89
|
-
alipay_root_cert_sn:
|
|
90
|
-
alipay_cert_sn:
|
|
91
|
-
app_cert_sn:
|
|
92
|
-
notify_url:
|
|
89
|
+
keyType: IServerConfig_1.gServerCfg.alipay["signType" + suffix],
|
|
90
|
+
alipay_root_cert_sn: IServerConfig_1.gServerCfg.alipay["alipay_root_cert_sn" + suffix],
|
|
91
|
+
alipay_cert_sn: IServerConfig_1.gServerCfg.alipay["alipay_cert_sn" + suffix],
|
|
92
|
+
app_cert_sn: IServerConfig_1.gServerCfg.alipay["app_cert_sn" + suffix],
|
|
93
|
+
notify_url: IServerConfig_1.gServerCfg.alipay["notify_url" + suffix]
|
|
93
94
|
};
|
|
94
95
|
if (this._cfg.alipay_cert_sn) {
|
|
95
96
|
this._aliPay = new AliPayUtil_1.AliPayUtil(this._cfg.alipay_cert_sn, this._cfg.app_key);
|
|
@@ -110,7 +111,7 @@ class AlipayTool {
|
|
|
110
111
|
keyType: this._cfg.keyType
|
|
111
112
|
});
|
|
112
113
|
}
|
|
113
|
-
|
|
114
|
+
Log_1.gLog.info("alipay init success!");
|
|
114
115
|
}
|
|
115
116
|
/**
|
|
116
117
|
* charset:"utf-8",method:"alipay.trade.app.pay",sign_type:"RSA2,version:"1.0"
|
|
@@ -181,7 +182,7 @@ class AlipayTool {
|
|
|
181
182
|
*/
|
|
182
183
|
async getAlipayPage(method, notifyUrl, returnUrl, outTradeNo, money, subject, body) {
|
|
183
184
|
if (!this._alipaySdk) {
|
|
184
|
-
|
|
185
|
+
Log_1.gLog.error("并未配置alipay或者初始化失败");
|
|
185
186
|
return;
|
|
186
187
|
}
|
|
187
188
|
const formData = new form_1.default();
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SMSTool = void 0;
|
|
4
|
-
const
|
|
4
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
5
|
+
const Log_1 = require("../Logic/Log");
|
|
5
6
|
let SMSClient = require("@alicloud/sms-sdk");
|
|
6
7
|
class SMSTool {
|
|
7
8
|
_is_init = false;
|
|
8
9
|
_sms_client = null;
|
|
9
10
|
init() {
|
|
10
|
-
if (!
|
|
11
|
+
if (!IServerConfig_1.gServerCfg.aliSms) {
|
|
11
12
|
return false;
|
|
12
13
|
}
|
|
13
14
|
if (this._is_init) {
|
|
14
15
|
return true;
|
|
15
16
|
}
|
|
16
17
|
this._is_init = true;
|
|
17
|
-
this._sms_client = new SMSClient({ accessKeyId:
|
|
18
|
-
|
|
18
|
+
this._sms_client = new SMSClient({ accessKeyId: IServerConfig_1.gServerCfg.aliSms.accessKeyId, secretAccessKey: IServerConfig_1.gServerCfg.aliSms.secretAccessKey });
|
|
19
|
+
Log_1.gLog.info("SMSClient init success!");
|
|
19
20
|
}
|
|
20
21
|
/**
|
|
21
22
|
* 发送短信验证码
|
|
@@ -27,19 +28,19 @@ class SMSTool {
|
|
|
27
28
|
return new Promise((resolve, reject) => {
|
|
28
29
|
this._sms_client.sendSMS({
|
|
29
30
|
PhoneNumbers: phone,
|
|
30
|
-
SignName:
|
|
31
|
-
TemplateCode:
|
|
31
|
+
SignName: IServerConfig_1.gServerCfg.aliSms.signName,
|
|
32
|
+
TemplateCode: IServerConfig_1.gServerCfg.aliSms.templateCode,
|
|
32
33
|
TemplateParam: JSON.stringify({ code: code })
|
|
33
34
|
}).then((res) => {
|
|
34
35
|
if (res.Code == "OK") {
|
|
35
36
|
resolve(null);
|
|
36
37
|
}
|
|
37
38
|
else {
|
|
38
|
-
|
|
39
|
+
Log_1.gLog.error("phone:" + phone + " code:" + res.Code);
|
|
39
40
|
resolve(res.Code);
|
|
40
41
|
}
|
|
41
42
|
}, (err) => {
|
|
42
|
-
|
|
43
|
+
Log_1.gLog.error(err);
|
|
43
44
|
resolve(err);
|
|
44
45
|
});
|
|
45
46
|
});
|
|
@@ -5,7 +5,9 @@ const ec_key_1 = require("ec-key");
|
|
|
5
5
|
const uuid_1 = require("uuid");
|
|
6
6
|
const fs = require("fs");
|
|
7
7
|
const Config_1 = require("../Config/Config");
|
|
8
|
-
const
|
|
8
|
+
const Log_1 = require("../Logic/Log");
|
|
9
|
+
const HttpTool_1 = require("../Logic/HttpTool");
|
|
10
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
9
11
|
//developer.apple.com/documentation/appstorereceipts/responsebody
|
|
10
12
|
class ReceiptInfo {
|
|
11
13
|
cancellation_date = "";
|
|
@@ -158,34 +160,34 @@ class AppleTool {
|
|
|
158
160
|
"expire_date": latest_one?.expires_date,
|
|
159
161
|
"receipt_expire_date": nb.unified_receipt?.receipt?.expiration_date
|
|
160
162
|
};
|
|
161
|
-
|
|
162
|
-
|
|
163
|
+
Log_1.gLog.info(msg);
|
|
164
|
+
Log_1.gLog.info(nb);
|
|
163
165
|
}
|
|
164
166
|
async onVerify(receipt, environment) {
|
|
165
|
-
|
|
167
|
+
Log_1.gLog.info("begin onVerify============================" + environment);
|
|
166
168
|
let url = this._verifyUrl;
|
|
167
169
|
// if(environment.toLowerCase()=="sandbox")
|
|
168
170
|
// {
|
|
169
171
|
// url=this._sandboxVerifyUrl
|
|
170
172
|
// }
|
|
171
|
-
|
|
173
|
+
Log_1.gLog.info("url============================" + url);
|
|
172
174
|
let reqb = new RequestBody();
|
|
173
175
|
reqb['receipt-data'] = receipt;
|
|
174
176
|
//先验证生产环境
|
|
175
|
-
var resb = (await
|
|
176
|
-
|
|
177
|
+
var resb = (await HttpTool_1.gHttpTool.post({ url, form: JSON.stringify(reqb) })).body;
|
|
178
|
+
Log_1.gLog.info("production end onVerify_Res============================status=" + (resb ? resb.status : "null"));
|
|
177
179
|
//状态21007表示是沙盒环境
|
|
178
180
|
if (resb && resb.status == 21007) {
|
|
179
181
|
url = this._sandboxVerifyUrl;
|
|
180
|
-
resb = (await
|
|
181
|
-
|
|
182
|
+
resb = (await HttpTool_1.gHttpTool.post({ url, form: JSON.stringify(reqb) })).body;
|
|
183
|
+
Log_1.gLog.info("sandbox end onVerify_Res============================status=" + (resb ? resb.status : "null"));
|
|
182
184
|
}
|
|
183
|
-
|
|
185
|
+
Log_1.gLog.info(resb);
|
|
184
186
|
return resb;
|
|
185
187
|
}
|
|
186
188
|
signature(nickname, create_time, appBundleID, productIdentifier, offerIdentifier) {
|
|
187
189
|
let keyIdentifier = "";
|
|
188
|
-
for (var k in
|
|
190
|
+
for (var k in IServerConfig_1.gServerCfg.apple.keyIds) {
|
|
189
191
|
keyIdentifier = k;
|
|
190
192
|
break;
|
|
191
193
|
}
|
|
@@ -198,7 +200,7 @@ class AppleTool {
|
|
|
198
200
|
nonce.toLowerCase() + '\u2063' +
|
|
199
201
|
create_time;
|
|
200
202
|
// Get the PEM-formatted private key string associated with the Key ID.
|
|
201
|
-
const path =
|
|
203
|
+
const path = IServerConfig_1.gServerCfg.apple.keyIds[keyIdentifier];
|
|
202
204
|
const keyString = fs.readFileSync(Config_1.Config.rootDataDir + path).toString();
|
|
203
205
|
// Create an Elliptic Curve Digital Signature Algorithm (ECDSA) object using the private key.
|
|
204
206
|
const key = new ec_key_1.default(keyString, 'pem');
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CgMq = exports.RpcConfig = void 0;
|
|
4
4
|
const Core_1 = require("../Core/Core");
|
|
5
5
|
const IRpcServerWebSocket_1 = require("../SocketServer/IRpcServerWebSocket");
|
|
6
|
-
const
|
|
6
|
+
const Log_1 = require("../Logic/Log");
|
|
7
7
|
class CgMqServerWebsocket extends IRpcServerWebSocket_1.IRpcServerWebSocket {
|
|
8
8
|
_cgmq = null;
|
|
9
9
|
constructor(cgmq) {
|
|
@@ -79,7 +79,7 @@ class CgMq {
|
|
|
79
79
|
this._cfg = cfg;
|
|
80
80
|
this._onmsg = onmsg;
|
|
81
81
|
if (this._inited) {
|
|
82
|
-
|
|
82
|
+
Log_1.gLog.error("dulplicate init for CgMq");
|
|
83
83
|
return true;
|
|
84
84
|
}
|
|
85
85
|
this._inited = true;
|
|
@@ -112,7 +112,7 @@ class CgMq {
|
|
|
112
112
|
};
|
|
113
113
|
let ret_rpcmsg = await this._ws.push(group, data, to_id);
|
|
114
114
|
if (this._ws.debug_msg) {
|
|
115
|
-
|
|
115
|
+
Log_1.gLog.info("[" + (Date.now() - time) + "ms] callRemote:" + group + "-" + func_name);
|
|
116
116
|
}
|
|
117
117
|
return ret_rpcmsg;
|
|
118
118
|
}
|
|
@@ -2,32 +2,33 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EmailTool = void 0;
|
|
4
4
|
const nodeMailer = require("nodemailer");
|
|
5
|
-
const
|
|
5
|
+
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
6
|
+
const Log_1 = require("../Logic/Log");
|
|
6
7
|
class EmailTool {
|
|
7
8
|
send(to, subject, html) {
|
|
8
9
|
return new Promise((resolve, reject) => {
|
|
9
|
-
if (!
|
|
10
|
-
|
|
10
|
+
if (!IServerConfig_1.gServerCfg.email) {
|
|
11
|
+
Log_1.gLog.error("email config not found!");
|
|
11
12
|
resolve("email config not found!");
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
14
15
|
let transport = nodeMailer.createTransport({
|
|
15
|
-
host:
|
|
16
|
-
port:
|
|
17
|
-
secure:
|
|
16
|
+
host: IServerConfig_1.gServerCfg.email.host,
|
|
17
|
+
port: IServerConfig_1.gServerCfg.email.port,
|
|
18
|
+
secure: IServerConfig_1.gServerCfg.email.secure,
|
|
18
19
|
auth: {
|
|
19
|
-
user:
|
|
20
|
-
pass:
|
|
20
|
+
user: IServerConfig_1.gServerCfg.email.auth.user,
|
|
21
|
+
pass: IServerConfig_1.gServerCfg.email.auth.pass
|
|
21
22
|
}
|
|
22
23
|
});
|
|
23
24
|
let mail = {
|
|
24
|
-
from:
|
|
25
|
+
from: IServerConfig_1.gServerCfg.email.from,
|
|
25
26
|
to: to,
|
|
26
27
|
subject: subject,
|
|
27
28
|
html: html
|
|
28
29
|
};
|
|
29
30
|
transport.sendMail(mail, (_err, msg) => {
|
|
30
|
-
|
|
31
|
+
Log_1.gLog.error(_err);
|
|
31
32
|
resolve(_err);
|
|
32
33
|
});
|
|
33
34
|
});
|
|
@@ -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();
|