cgserver 9.2.7 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/lib/Framework/AI/BehaviorAI.js +6 -6
- package/dist/lib/Framework/AI/TriggerMgr.js +7 -8
- 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 -2
- 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 -6
- package/dist/lib/Framework/Database/MSSqlManager.js +4 -5
- package/dist/lib/Framework/Database/{MongoBaseService.js → Mongo/MongoBaseService.js} +13 -13
- package/dist/lib/Framework/Database/{MongoManager.js → Mongo/MongoManager.js} +39 -38
- package/dist/lib/Framework/Database/Mongo/MongoServiceManager.js +26 -0
- package/dist/lib/Framework/Database/MysqlBaseService.js +24 -26
- package/dist/lib/Framework/Database/MysqlManager.js +7 -10
- package/dist/lib/Framework/Database/RedisManager.js +5 -7
- package/dist/lib/Framework/Decorator/SyncCall.js +3 -3
- package/dist/lib/Framework/Decorator/SyncCallServer.js +11 -12
- package/dist/lib/Framework/Logic/CacheTool.js +2 -3
- package/dist/lib/Framework/Logic/EventTool.js +2 -2
- package/dist/lib/Framework/Logic/HttpTool.js +11 -12
- package/dist/lib/Framework/Logic/Log.js +2 -3
- package/dist/lib/Framework/Logic/SyncQueueTool.js +2 -2
- package/dist/lib/Framework/Service/MongoAccountService.js +17 -19
- package/dist/lib/Framework/Service/MongoCacheService.js +11 -9
- package/dist/lib/Framework/Service/MongoUserService.js +10 -10
- package/dist/lib/Framework/Service/MysqlAccountService.js +4 -6
- package/dist/lib/Framework/SocketServer/IClientWebSocket.js +4 -4
- package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +6 -7
- package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +6 -7
- package/dist/lib/Framework/SocketServer/IServerWebSocket.js +3 -3
- package/dist/lib/Framework/SocketServer/ISocketServer.js +18 -21
- package/dist/lib/Framework/SocketServer/IWebSocket.js +12 -14
- 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 -3
- package/dist/lib/Framework/ThirdParty/AlipayTool.js +17 -19
- package/dist/lib/Framework/ThirdParty/Alisms.js +10 -12
- package/dist/lib/Framework/ThirdParty/AppleTool.js +14 -17
- package/dist/lib/Framework/ThirdParty/CgMq.js +3 -3
- package/dist/lib/Framework/ThirdParty/EmailTool.js +12 -14
- package/dist/lib/Framework/ThirdParty/QQTool.js +19 -23
- package/dist/lib/Framework/ThirdParty/QiniuTool.js +9 -11
- package/dist/lib/Framework/ThirdParty/Rpc.js +2 -2
- package/dist/lib/Framework/ThirdParty/WechatTool.js +66 -16
- package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +16 -17
- package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +12 -13
- package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +5 -3
- package/dist/lib/Framework/WebServer/Engine/Engine.js +17 -18
- package/dist/lib/Framework/WebServer/Engine/RazorJs.js +3 -4
- 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 +6 -9
- package/dist/lib/Framework/cgserver.js +10 -15
- package/dist/lib/Framework/global.js +73 -0
- package/dist/lib/Framework/index.js +3 -200
- package/dist/lib/Framework/index_export_.js +161 -0
- package/dist/lib/test/test.js +2 -2
- package/dist/types/Framework/AI/TriggerMgr.d.ts +1 -3
- package/dist/types/Framework/Config/DbConfig.d.ts +1 -1
- package/dist/types/Framework/Config/IServerConfig.d.ts +0 -1
- package/dist/types/Framework/Core/ByteTool.d.ts +1 -3
- package/dist/types/Framework/Core/Core.d.ts +3 -1
- package/dist/types/Framework/Database/Decorator/DBCache.d.ts +1 -3
- package/dist/types/Framework/Database/MSSqlManager.d.ts +1 -3
- package/dist/types/Framework/Database/{MongoBaseService.d.ts → Mongo/MongoBaseService.d.ts} +28 -8
- package/dist/types/Framework/Database/{MongoManager.d.ts → Mongo/MongoManager.d.ts} +38 -11
- package/dist/types/Framework/Database/Mongo/MongoServiceManager.d.ts +13 -0
- package/dist/types/Framework/Database/MysqlManager.d.ts +1 -3
- package/dist/types/Framework/Database/RedisManager.d.ts +0 -1
- package/dist/types/Framework/Logic/CacheTool.d.ts +1 -2
- package/dist/types/Framework/Logic/EventTool.d.ts +1 -3
- package/dist/types/Framework/Logic/HttpTool.d.ts +1 -3
- package/dist/types/Framework/Logic/Log.d.ts +1 -3
- package/dist/types/Framework/Logic/SyncQueueTool.d.ts +1 -2
- package/dist/types/Framework/Service/MongoAccountService.d.ts +2 -2
- package/dist/types/Framework/Service/MongoCacheService.d.ts +7 -5
- package/dist/types/Framework/Service/MongoUserService.d.ts +4 -4
- package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +1 -2
- package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/Alisms.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/AppleTool.d.ts +1 -2
- package/dist/types/Framework/ThirdParty/EmailTool.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/QQTool.d.ts +0 -1
- package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/WechatTool.d.ts +10 -1
- package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +4 -3
- package/dist/types/Framework/cgserver.d.ts +1 -3
- package/dist/types/Framework/global.d.ts +70 -0
- package/dist/types/Framework/index.d.ts +2 -91
- package/dist/types/Framework/index_export_.d.ts +74 -0
- package/package.json +1 -1
- 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/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
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AlipayTool = exports.AlipayCallBack = exports.AlipayResult = void 0;
|
|
4
4
|
const alipay_sdk_1 = require("alipay-sdk");
|
|
5
5
|
const aliUtil = require("alipay-sdk/lib/util");
|
|
6
6
|
const AliPayUtil_1 = require("alipay_sdk2/AliPayUtil");
|
|
7
7
|
const fs = require("fs");
|
|
8
8
|
const form_1 = require("alipay-sdk/lib/form");
|
|
9
|
-
const Log_1 = require("../Logic/Log");
|
|
10
|
-
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
11
9
|
const Config_1 = require("../Config/Config");
|
|
10
|
+
const global_1 = require("../global");
|
|
12
11
|
class AlipayResult {
|
|
13
12
|
alipay_trade_app_pay_response = {
|
|
14
13
|
code: "10000",
|
|
@@ -54,7 +53,6 @@ class AlipayCallBack {
|
|
|
54
53
|
point_amount = 0;
|
|
55
54
|
}
|
|
56
55
|
exports.AlipayCallBack = AlipayCallBack;
|
|
57
|
-
exports.GAlipayTool = null;
|
|
58
56
|
class AlipayTool {
|
|
59
57
|
_alipaySdk = null;
|
|
60
58
|
_aliPay = null;
|
|
@@ -72,26 +70,26 @@ class AlipayTool {
|
|
|
72
70
|
notify_url: ""
|
|
73
71
|
};
|
|
74
72
|
init() {
|
|
75
|
-
if (!
|
|
76
|
-
|| !
|
|
73
|
+
if (!global_1.global.gServerCfg.alipay
|
|
74
|
+
|| !global_1.global.gServerCfg.alipay.open) {
|
|
77
75
|
return false;
|
|
78
76
|
}
|
|
79
77
|
let suffix = "";
|
|
80
|
-
if (
|
|
78
|
+
if (global_1.global.gServerCfg.alipay.dev) {
|
|
81
79
|
suffix = "_dev";
|
|
82
80
|
}
|
|
83
81
|
this._cfg = {
|
|
84
|
-
app_id:
|
|
85
|
-
app_key:
|
|
86
|
-
gateway:
|
|
82
|
+
app_id: global_1.global.gServerCfg.alipay["app_id" + suffix],
|
|
83
|
+
app_key: global_1.global.gServerCfg.alipay["app_key" + suffix],
|
|
84
|
+
gateway: global_1.global.gServerCfg.alipay["gateway" + suffix],
|
|
87
85
|
//RSA1 RSA2
|
|
88
|
-
signType:
|
|
86
|
+
signType: global_1.global.gServerCfg.alipay["signType" + suffix],
|
|
89
87
|
/** 指定private key类型, 默认: PKCS1, PKCS8: PRIVATE KEY, PKCS1: RSA PRIVATE KEY */
|
|
90
|
-
keyType:
|
|
91
|
-
alipay_root_cert_sn:
|
|
92
|
-
alipay_cert_sn:
|
|
93
|
-
app_cert_sn:
|
|
94
|
-
notify_url:
|
|
88
|
+
keyType: global_1.global.gServerCfg.alipay["signType" + suffix],
|
|
89
|
+
alipay_root_cert_sn: global_1.global.gServerCfg.alipay["alipay_root_cert_sn" + suffix],
|
|
90
|
+
alipay_cert_sn: global_1.global.gServerCfg.alipay["alipay_cert_sn" + suffix],
|
|
91
|
+
app_cert_sn: global_1.global.gServerCfg.alipay["app_cert_sn" + suffix],
|
|
92
|
+
notify_url: global_1.global.gServerCfg.alipay["notify_url" + suffix]
|
|
95
93
|
};
|
|
96
94
|
if (this._cfg.alipay_cert_sn) {
|
|
97
95
|
this._aliPay = new AliPayUtil_1.AliPayUtil(this._cfg.alipay_cert_sn, this._cfg.app_key);
|
|
@@ -112,7 +110,7 @@ class AlipayTool {
|
|
|
112
110
|
keyType: this._cfg.keyType
|
|
113
111
|
});
|
|
114
112
|
}
|
|
115
|
-
|
|
113
|
+
global_1.global.gLog.info("alipay init success!");
|
|
116
114
|
}
|
|
117
115
|
/**
|
|
118
116
|
* charset:"utf-8",method:"alipay.trade.app.pay",sign_type:"RSA2,version:"1.0"
|
|
@@ -183,7 +181,7 @@ class AlipayTool {
|
|
|
183
181
|
*/
|
|
184
182
|
async getAlipayPage(method, notifyUrl, returnUrl, outTradeNo, money, subject, body) {
|
|
185
183
|
if (!this._alipaySdk) {
|
|
186
|
-
|
|
184
|
+
global_1.global.gLog.error("并未配置alipay或者初始化失败");
|
|
187
185
|
return;
|
|
188
186
|
}
|
|
189
187
|
const formData = new form_1.default();
|
|
@@ -202,4 +200,4 @@ class AlipayTool {
|
|
|
202
200
|
return url_or_html;
|
|
203
201
|
}
|
|
204
202
|
}
|
|
205
|
-
exports.
|
|
203
|
+
exports.AlipayTool = AlipayTool;
|
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const Log_1 = require("./../Logic/Log");
|
|
3
|
+
exports.SMSTool = void 0;
|
|
4
|
+
const global_1 = require("../global");
|
|
6
5
|
let SMSClient = require("@alicloud/sms-sdk");
|
|
7
|
-
exports.GSmsTool = null;
|
|
8
6
|
class SMSTool {
|
|
9
7
|
_is_init = false;
|
|
10
8
|
_sms_client = null;
|
|
11
9
|
init() {
|
|
12
|
-
if (!
|
|
10
|
+
if (!global_1.global.gServerCfg.aliSms) {
|
|
13
11
|
return false;
|
|
14
12
|
}
|
|
15
13
|
if (this._is_init) {
|
|
16
14
|
return true;
|
|
17
15
|
}
|
|
18
16
|
this._is_init = true;
|
|
19
|
-
this._sms_client = new SMSClient({ accessKeyId:
|
|
20
|
-
|
|
17
|
+
this._sms_client = new SMSClient({ accessKeyId: global_1.global.gServerCfg.aliSms.accessKeyId, secretAccessKey: global_1.global.gServerCfg.aliSms.secretAccessKey });
|
|
18
|
+
global_1.global.gLog.info("SMSClient init success!");
|
|
21
19
|
}
|
|
22
20
|
/**
|
|
23
21
|
* 发送短信验证码
|
|
@@ -29,22 +27,22 @@ class SMSTool {
|
|
|
29
27
|
return new Promise((resolve, reject) => {
|
|
30
28
|
this._sms_client.sendSMS({
|
|
31
29
|
PhoneNumbers: phone,
|
|
32
|
-
SignName:
|
|
33
|
-
TemplateCode:
|
|
30
|
+
SignName: global_1.global.gServerCfg.aliSms.signName,
|
|
31
|
+
TemplateCode: global_1.global.gServerCfg.aliSms.templateCode,
|
|
34
32
|
TemplateParam: JSON.stringify({ code: code })
|
|
35
33
|
}).then((res) => {
|
|
36
34
|
if (res.Code == "OK") {
|
|
37
35
|
resolve(null);
|
|
38
36
|
}
|
|
39
37
|
else {
|
|
40
|
-
|
|
38
|
+
global_1.global.gLog.error("phone:" + phone + " code:" + res.Code);
|
|
41
39
|
resolve(res.Code);
|
|
42
40
|
}
|
|
43
41
|
}, (err) => {
|
|
44
|
-
|
|
42
|
+
global_1.global.gLog.error(err);
|
|
45
43
|
resolve(err);
|
|
46
44
|
});
|
|
47
45
|
});
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
|
-
exports.
|
|
48
|
+
exports.SMSTool = SMSTool;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const Log_1 = require("../Logic/Log");
|
|
5
|
-
const HttpTool_1 = require("./../Logic/HttpTool");
|
|
3
|
+
exports.AppleTool = exports.NotificationBody = exports.NotificationType = exports.ResponseBody = void 0;
|
|
6
4
|
const ec_key_1 = require("ec-key");
|
|
7
5
|
const uuid_1 = require("uuid");
|
|
8
6
|
const fs = require("fs");
|
|
9
|
-
const IServerConfig_1 = require("../Config/IServerConfig");
|
|
10
7
|
const Config_1 = require("../Config/Config");
|
|
8
|
+
const global_1 = require("../global");
|
|
11
9
|
//developer.apple.com/documentation/appstorereceipts/responsebody
|
|
12
10
|
class ReceiptInfo {
|
|
13
11
|
cancellation_date = "";
|
|
@@ -144,7 +142,6 @@ class RequestBody {
|
|
|
144
142
|
password = "5203c7781e254aac8942290a0a2467ac";
|
|
145
143
|
"exclude-old-transactions" = true;
|
|
146
144
|
}
|
|
147
|
-
exports.GAppleTool = null;
|
|
148
145
|
class AppleTool {
|
|
149
146
|
_verifyUrl = "https://buy.itunes.apple.com/verifyReceipt";
|
|
150
147
|
_sandboxVerifyUrl = "https://sandbox.itunes.apple.com/verifyReceipt";
|
|
@@ -161,34 +158,34 @@ class AppleTool {
|
|
|
161
158
|
"expire_date": latest_one?.expires_date,
|
|
162
159
|
"receipt_expire_date": nb.unified_receipt?.receipt?.expiration_date
|
|
163
160
|
};
|
|
164
|
-
|
|
165
|
-
|
|
161
|
+
global_1.global.gLog.info(msg);
|
|
162
|
+
global_1.global.gLog.info(nb);
|
|
166
163
|
}
|
|
167
164
|
async onVerify(receipt, environment) {
|
|
168
|
-
|
|
165
|
+
global_1.global.gLog.info("begin onVerify============================" + environment);
|
|
169
166
|
let url = this._verifyUrl;
|
|
170
167
|
// if(environment.toLowerCase()=="sandbox")
|
|
171
168
|
// {
|
|
172
169
|
// url=this._sandboxVerifyUrl
|
|
173
170
|
// }
|
|
174
|
-
|
|
171
|
+
global_1.global.gLog.info("url============================" + url);
|
|
175
172
|
let reqb = new RequestBody();
|
|
176
173
|
reqb['receipt-data'] = receipt;
|
|
177
174
|
//先验证生产环境
|
|
178
|
-
var resb = (await
|
|
179
|
-
|
|
175
|
+
var resb = (await global_1.global.gHttpTool.post({ url, form: JSON.stringify(reqb) })).body;
|
|
176
|
+
global_1.global.gLog.info("production end onVerify_Res============================status=" + (resb ? resb.status : "null"));
|
|
180
177
|
//状态21007表示是沙盒环境
|
|
181
178
|
if (resb && resb.status == 21007) {
|
|
182
179
|
url = this._sandboxVerifyUrl;
|
|
183
|
-
resb = (await
|
|
184
|
-
|
|
180
|
+
resb = (await global_1.global.gHttpTool.post({ url, form: JSON.stringify(reqb) })).body;
|
|
181
|
+
global_1.global.gLog.info("sandbox end onVerify_Res============================status=" + (resb ? resb.status : "null"));
|
|
185
182
|
}
|
|
186
|
-
|
|
183
|
+
global_1.global.gLog.info(resb);
|
|
187
184
|
return resb;
|
|
188
185
|
}
|
|
189
186
|
signature(nickname, create_time, appBundleID, productIdentifier, offerIdentifier) {
|
|
190
187
|
let keyIdentifier = "";
|
|
191
|
-
for (var k in
|
|
188
|
+
for (var k in global_1.global.gServerCfg.apple.keyIds) {
|
|
192
189
|
keyIdentifier = k;
|
|
193
190
|
break;
|
|
194
191
|
}
|
|
@@ -201,7 +198,7 @@ class AppleTool {
|
|
|
201
198
|
nonce.toLowerCase() + '\u2063' +
|
|
202
199
|
create_time;
|
|
203
200
|
// Get the PEM-formatted private key string associated with the Key ID.
|
|
204
|
-
const path =
|
|
201
|
+
const path = global_1.global.gServerCfg.apple.keyIds[keyIdentifier];
|
|
205
202
|
const keyString = fs.readFileSync(Config_1.Config.rootDataDir + path).toString();
|
|
206
203
|
// Create an Elliptic Curve Digital Signature Algorithm (ECDSA) object using the private key.
|
|
207
204
|
const key = new ec_key_1.default(keyString, 'pem');
|
|
@@ -232,4 +229,4 @@ class AppleTool {
|
|
|
232
229
|
return;
|
|
233
230
|
}
|
|
234
231
|
}
|
|
235
|
-
exports.
|
|
232
|
+
exports.AppleTool = AppleTool;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CgMq = exports.RpcConfig = void 0;
|
|
4
4
|
const Core_1 = require("../Core/Core");
|
|
5
|
-
const Log_1 = require("../Logic/Log");
|
|
6
5
|
const IRpcServerWebSocket_1 = require("../SocketServer/IRpcServerWebSocket");
|
|
6
|
+
const global_1 = require("../global");
|
|
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
|
+
global_1.global.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
|
+
global_1.global.gLog.info("[" + (Date.now() - time) + "ms] callRemote:" + group + "-" + func_name);
|
|
116
116
|
}
|
|
117
117
|
return ret_rpcmsg;
|
|
118
118
|
}
|
|
@@ -1,38 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EmailTool = void 0;
|
|
4
4
|
const nodeMailer = require("nodemailer");
|
|
5
|
-
const
|
|
6
|
-
const Log_1 = require("../Logic/Log");
|
|
7
|
-
exports.GEmailTool = null;
|
|
5
|
+
const global_1 = require("../global");
|
|
8
6
|
class EmailTool {
|
|
9
7
|
send(to, subject, html) {
|
|
10
8
|
return new Promise((resolve, reject) => {
|
|
11
|
-
if (!
|
|
12
|
-
|
|
9
|
+
if (!global_1.global.gServerCfg.email) {
|
|
10
|
+
global_1.global.gLog.error("email config not found!");
|
|
13
11
|
resolve("email config not found!");
|
|
14
12
|
return;
|
|
15
13
|
}
|
|
16
14
|
let transport = nodeMailer.createTransport({
|
|
17
|
-
host:
|
|
18
|
-
port:
|
|
19
|
-
secure:
|
|
15
|
+
host: global_1.global.gServerCfg.email.host,
|
|
16
|
+
port: global_1.global.gServerCfg.email.port,
|
|
17
|
+
secure: global_1.global.gServerCfg.email.secure,
|
|
20
18
|
auth: {
|
|
21
|
-
user:
|
|
22
|
-
pass:
|
|
19
|
+
user: global_1.global.gServerCfg.email.auth.user,
|
|
20
|
+
pass: global_1.global.gServerCfg.email.auth.pass
|
|
23
21
|
}
|
|
24
22
|
});
|
|
25
23
|
let mail = {
|
|
26
|
-
from:
|
|
24
|
+
from: global_1.global.gServerCfg.email.from,
|
|
27
25
|
to: to,
|
|
28
26
|
subject: subject,
|
|
29
27
|
html: html
|
|
30
28
|
};
|
|
31
29
|
transport.sendMail(mail, (_err, msg) => {
|
|
32
|
-
|
|
30
|
+
global_1.global.gLog.error(_err);
|
|
33
31
|
resolve(_err);
|
|
34
32
|
});
|
|
35
33
|
});
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
|
-
exports.
|
|
36
|
+
exports.EmailTool = EmailTool;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QQTool = exports.
|
|
3
|
+
exports.QQTool = exports.QQUserInfo = void 0;
|
|
4
4
|
const _ = require("underscore");
|
|
5
5
|
const URLEncode = require("urlencode");
|
|
6
|
-
const
|
|
7
|
-
const HttpTool_1 = require("../Logic/HttpTool");
|
|
8
|
-
const Log_1 = require("../Logic/Log");
|
|
6
|
+
const global_1 = require("../global");
|
|
9
7
|
class QQUserInfo {
|
|
10
8
|
ret = 0;
|
|
11
9
|
msg = "";
|
|
@@ -30,7 +28,6 @@ class QQUserInfo {
|
|
|
30
28
|
is_yellow_year_vip = ""; //"0"
|
|
31
29
|
}
|
|
32
30
|
exports.QQUserInfo = QQUserInfo;
|
|
33
|
-
exports.GQQTool = null;
|
|
34
31
|
class QQTool {
|
|
35
32
|
/**
|
|
36
33
|
* 获取Authorization Code
|
|
@@ -44,14 +41,14 @@ class QQTool {
|
|
|
44
41
|
如果传入“mobile”,则展示为mobile端下的样式。
|
|
45
42
|
*/
|
|
46
43
|
getAuthCodeUrl(scope, display) {
|
|
47
|
-
if (!
|
|
48
|
-
|
|
44
|
+
if (!global_1.global.gServerCfg.qq) {
|
|
45
|
+
global_1.global.gLog.error("qq config not found!");
|
|
49
46
|
return null;
|
|
50
47
|
}
|
|
51
48
|
//必须 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心
|
|
52
|
-
let redirect_uri = URLEncode.encode(
|
|
49
|
+
let redirect_uri = URLEncode.encode(global_1.global.gServerCfg.qq.redirect_uri);
|
|
53
50
|
//必须 申请QQ登录成功后,分配给应用的appid。
|
|
54
|
-
let client_id =
|
|
51
|
+
let client_id = global_1.global.gServerCfg.qq.app_id;
|
|
55
52
|
//必须 授权类型,此值固定为“code”。
|
|
56
53
|
let response_type = "code";
|
|
57
54
|
//必须 client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
|
|
@@ -70,31 +67,31 @@ class QQTool {
|
|
|
70
67
|
if (!auth_code) {
|
|
71
68
|
return null;
|
|
72
69
|
}
|
|
73
|
-
if (!
|
|
74
|
-
|
|
70
|
+
if (!global_1.global.gServerCfg.qq) {
|
|
71
|
+
global_1.global.gLog.error("qq config not found!");
|
|
75
72
|
return null;
|
|
76
73
|
}
|
|
77
74
|
//必须 授权类型,在本步骤中,此值为“authorization_code”。
|
|
78
75
|
let grant_type = "authorization_code";
|
|
79
76
|
//必须 申请QQ登录成功后,分配给应用的appid。
|
|
80
|
-
let client_id =
|
|
77
|
+
let client_id = global_1.global.gServerCfg.qq.app_id;
|
|
81
78
|
//必须 申请QQ登录成功后,分配给网站的appkey。
|
|
82
|
-
let client_secret =
|
|
79
|
+
let client_secret = global_1.global.gServerCfg.qq.app_key;
|
|
83
80
|
//必须 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或网站的用户中心
|
|
84
|
-
let redirect_uri = URLEncode.encode(
|
|
81
|
+
let redirect_uri = URLEncode.encode(global_1.global.gServerCfg.qq.redirect_uri);
|
|
85
82
|
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;
|
|
86
|
-
let rs = await
|
|
83
|
+
let rs = await global_1.global.gHttpTool.get(url);
|
|
87
84
|
if (rs.body && rs.body.access_token) {
|
|
88
85
|
return rs.body.access_token;
|
|
89
86
|
}
|
|
90
87
|
else {
|
|
91
|
-
|
|
88
|
+
global_1.global.gLog.error(rs.body);
|
|
92
89
|
}
|
|
93
90
|
return null;
|
|
94
91
|
}
|
|
95
92
|
async getOpenId(access_token) {
|
|
96
93
|
let url = "https://graph.qq.com/oauth2.0/me?access_token=" + access_token;
|
|
97
|
-
let rs = await
|
|
94
|
+
let rs = await global_1.global.gHttpTool.get(url);
|
|
98
95
|
let body = rs.response ? rs.response.body : null;
|
|
99
96
|
if (body) {
|
|
100
97
|
body = body.replace("callback( ", "");
|
|
@@ -104,7 +101,7 @@ class QQTool {
|
|
|
104
101
|
}
|
|
105
102
|
catch (e) { }
|
|
106
103
|
if (!body.openid) {
|
|
107
|
-
|
|
104
|
+
global_1.global.gLog.error(rs.response.body);
|
|
108
105
|
}
|
|
109
106
|
return body.openid;
|
|
110
107
|
}
|
|
@@ -114,12 +111,12 @@ class QQTool {
|
|
|
114
111
|
if (!access_token || !openid) {
|
|
115
112
|
return null;
|
|
116
113
|
}
|
|
117
|
-
if (!
|
|
118
|
-
|
|
114
|
+
if (!global_1.global.gServerCfg.qq) {
|
|
115
|
+
global_1.global.gLog.error("qq config not found!");
|
|
119
116
|
return null;
|
|
120
117
|
}
|
|
121
|
-
let url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token + "&oauth_consumer_key=" +
|
|
122
|
-
let rs = await
|
|
118
|
+
let url = "https://graph.qq.com/user/get_user_info?access_token=" + access_token + "&oauth_consumer_key=" + global_1.global.gServerCfg.qq.app_id + "&openid=" + openid;
|
|
119
|
+
let rs = await global_1.global.gHttpTool.get(url);
|
|
123
120
|
if (rs.body) {
|
|
124
121
|
return rs.body;
|
|
125
122
|
}
|
|
@@ -127,4 +124,3 @@ class QQTool {
|
|
|
127
124
|
}
|
|
128
125
|
}
|
|
129
126
|
exports.QQTool = QQTool;
|
|
130
|
-
exports.GQQTool = new QQTool();
|
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.QiniuTool = void 0;
|
|
4
4
|
const qiniu = require("qiniu");
|
|
5
|
-
const
|
|
6
|
-
const Log_1 = require("../Logic/Log");
|
|
7
|
-
exports.GQiniuTool = null;
|
|
5
|
+
const global_1 = require("../global");
|
|
8
6
|
class QiniuTool {
|
|
9
7
|
get host() {
|
|
10
|
-
if (!
|
|
8
|
+
if (!global_1.global.gServerCfg.qiniu) {
|
|
11
9
|
return "";
|
|
12
10
|
}
|
|
13
|
-
return
|
|
11
|
+
return global_1.global.gServerCfg.qiniu.host;
|
|
14
12
|
}
|
|
15
13
|
getUploadToken(filename) {
|
|
16
|
-
if (!
|
|
17
|
-
|
|
14
|
+
if (!global_1.global.gServerCfg.qiniu) {
|
|
15
|
+
global_1.global.gLog.error("qiniu config not found!");
|
|
18
16
|
return "";
|
|
19
17
|
}
|
|
20
|
-
let mac = new qiniu.auth.digest.Mac(
|
|
18
|
+
let mac = new qiniu.auth.digest.Mac(global_1.global.gServerCfg.qiniu.accessKey, global_1.global.gServerCfg.qiniu.secretKey);
|
|
21
19
|
let options = {
|
|
22
|
-
scope:
|
|
20
|
+
scope: global_1.global.gServerCfg.qiniu.bucket + ":" + filename,
|
|
23
21
|
};
|
|
24
22
|
let putPolicy = new qiniu.rs.PutPolicy(options);
|
|
25
23
|
let uploadToken = putPolicy.uploadToken(mac);
|
|
26
24
|
return uploadToken;
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
|
-
exports.
|
|
27
|
+
exports.QiniuTool = 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 global_1 = require("../global");
|
|
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
|
+
global_1.global.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,11 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WechatTool = exports.
|
|
3
|
+
exports.WechatTool = exports.WechatUserInfo = exports.WechatOAMsg = void 0;
|
|
4
4
|
const _ = require("underscore");
|
|
5
5
|
const URLEncode = require("urlencode");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const global_1 = require("../global");
|
|
7
|
+
class WechatOAMsg {
|
|
8
|
+
// <xml>
|
|
9
|
+
// <ToUserName><![CDATA[toUser]]></ToUserName>
|
|
10
|
+
// <FromUserName><![CDATA[fromUser]]></FromUserName>
|
|
11
|
+
// <CreateTime>1348831860</CreateTime>
|
|
12
|
+
// <MsgType><![CDATA[text]]></MsgType>
|
|
13
|
+
// <Content><![CDATA[this is a test]]></Content>
|
|
14
|
+
// <MsgId>1234567890123456</MsgId>
|
|
15
|
+
// </xml>
|
|
16
|
+
toUserName = "";
|
|
17
|
+
fromUserName = ""; //其实是一个userid
|
|
18
|
+
createTime = -1;
|
|
19
|
+
msgType = ""; //text文本
|
|
20
|
+
content = "";
|
|
21
|
+
msgId = -1; //只有收到消息才会有
|
|
22
|
+
}
|
|
23
|
+
exports.WechatOAMsg = WechatOAMsg;
|
|
9
24
|
class WechatUserInfo {
|
|
10
25
|
openid = "OPENID";
|
|
11
26
|
nickname = "NICKNAME";
|
|
@@ -21,18 +36,17 @@ class WechatUserInfo {
|
|
|
21
36
|
unionid = "o6_bmasdasdsad6_2sgVt7hMZOPfL";
|
|
22
37
|
}
|
|
23
38
|
exports.WechatUserInfo = WechatUserInfo;
|
|
24
|
-
exports.GWechatTool = null;
|
|
25
39
|
class WechatTool {
|
|
26
40
|
/**
|
|
27
41
|
* 获取获取code的url
|
|
28
42
|
*/
|
|
29
43
|
getAuthCodeUrl() {
|
|
30
|
-
if (!
|
|
31
|
-
|
|
44
|
+
if (!global_1.global.gServerCfg.wechat) {
|
|
45
|
+
global_1.global.gLog.error("wechat config not found!");
|
|
32
46
|
return null;
|
|
33
47
|
}
|
|
34
|
-
let url = "https://open.weixin.qq.com/connect/qrconnect?appid=" +
|
|
35
|
-
url += "&redirect_uri=" + URLEncode.encode(
|
|
48
|
+
let url = "https://open.weixin.qq.com/connect/qrconnect?appid=" + global_1.global.gServerCfg.wechat.app_id;
|
|
49
|
+
url += "&redirect_uri=" + URLEncode.encode(global_1.global.gServerCfg.wechat.redirect_uri);
|
|
36
50
|
url += "&response_type=code&scope=snsapi_login";
|
|
37
51
|
//必须 client端的状态值。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。
|
|
38
52
|
let state = _.random(1000000, 9999999);
|
|
@@ -43,12 +57,12 @@ class WechatTool {
|
|
|
43
57
|
if (!auth_code) {
|
|
44
58
|
return null;
|
|
45
59
|
}
|
|
46
|
-
if (!
|
|
47
|
-
|
|
60
|
+
if (!global_1.global.gServerCfg.wechat) {
|
|
61
|
+
global_1.global.gLog.error("wechat config not found!");
|
|
48
62
|
return null;
|
|
49
63
|
}
|
|
50
|
-
let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" +
|
|
51
|
-
let rs = await
|
|
64
|
+
let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + global_1.global.gServerCfg.wechat.app_id + "&secret=" + global_1.global.gServerCfg.wechat.app_key + "&code=" + auth_code + "&grant_type=authorization_code";
|
|
65
|
+
let rs = await global_1.global.gHttpTool.get(url);
|
|
52
66
|
/*
|
|
53
67
|
{
|
|
54
68
|
"access_token":"ACCESS_TOKEN",
|
|
@@ -64,18 +78,54 @@ class WechatTool {
|
|
|
64
78
|
return rs.body;
|
|
65
79
|
}
|
|
66
80
|
else {
|
|
67
|
-
|
|
81
|
+
global_1.global.gLog.error(rs.body);
|
|
68
82
|
}
|
|
69
83
|
return null;
|
|
70
84
|
}
|
|
71
85
|
async getUserInfo(access_token, openid) {
|
|
72
86
|
let url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + access_token + "&openid=" + openid;
|
|
73
|
-
let rs = await
|
|
87
|
+
let rs = await global_1.global.gHttpTool.get(url);
|
|
74
88
|
if (rs.body) {
|
|
75
89
|
return rs.body;
|
|
76
90
|
}
|
|
77
91
|
return null;
|
|
78
92
|
}
|
|
93
|
+
//公众号
|
|
94
|
+
convertOAMsg(xmlStr) {
|
|
95
|
+
if (!xmlStr) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
let msg = new WechatOAMsg();
|
|
99
|
+
let pre = "<ToUserName><![CDATA[";
|
|
100
|
+
xmlStr = xmlStr.substr(xmlStr.indexOf(pre) + pre.length);
|
|
101
|
+
msg.toUserName = xmlStr.substr(0, xmlStr.indexOf("]"));
|
|
102
|
+
pre = "<FromUserName><![CDATA[";
|
|
103
|
+
xmlStr = xmlStr.substr(xmlStr.indexOf(pre) + pre.length);
|
|
104
|
+
msg.fromUserName = xmlStr.substr(0, xmlStr.indexOf("]"));
|
|
105
|
+
pre = "<CreateTime>";
|
|
106
|
+
xmlStr = xmlStr.substr(xmlStr.indexOf(pre) + pre.length);
|
|
107
|
+
msg.createTime = parseInt(xmlStr.substr(0, xmlStr.indexOf("<")));
|
|
108
|
+
pre = "<MsgType><![CDATA[";
|
|
109
|
+
xmlStr = xmlStr.substr(xmlStr.indexOf(pre) + pre.length);
|
|
110
|
+
msg.msgType = xmlStr.substr(0, xmlStr.indexOf("]"));
|
|
111
|
+
pre = "<Content><![CDATA[";
|
|
112
|
+
xmlStr = xmlStr.substr(xmlStr.indexOf(pre) + pre.length);
|
|
113
|
+
msg.content = xmlStr.substr(0, xmlStr.indexOf("]"));
|
|
114
|
+
pre = "<MsgId>";
|
|
115
|
+
xmlStr = xmlStr.substr(xmlStr.indexOf(pre) + pre.length);
|
|
116
|
+
msg.msgId = parseInt(xmlStr.substr(0, xmlStr.indexOf("<")));
|
|
117
|
+
return msg;
|
|
118
|
+
}
|
|
119
|
+
//公众号
|
|
120
|
+
toReplyXmlStr(msg) {
|
|
121
|
+
let xmlStr = "<xml>";
|
|
122
|
+
xmlStr += "<ToUserName><![CDATA[" + msg.toUserName + "]]></ToUserName>";
|
|
123
|
+
xmlStr += "<FromUserName><![CDATA[" + msg.fromUserName + "]]></FromUserName>";
|
|
124
|
+
xmlStr += "<CreateTime>" + msg.createTime + "</CreateTime>";
|
|
125
|
+
xmlStr += "<MsgType><![CDATA[" + msg.msgType + "]]></MsgType>";
|
|
126
|
+
xmlStr += "<Content><![CDATA[" + msg.content + "]]></Content>";
|
|
127
|
+
xmlStr += "</xml>";
|
|
128
|
+
return xmlStr;
|
|
129
|
+
}
|
|
79
130
|
}
|
|
80
131
|
exports.WechatTool = WechatTool;
|
|
81
|
-
exports.GWechatTool = new WechatTool();
|