tkserver 1.7.19 → 1.7.21
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/index.js +13 -5
- package/mongo.js +13 -5
- package/package.json +2 -2
package/index.js
CHANGED
|
@@ -12,7 +12,7 @@ const getUserIP = require('get-user-ip')
|
|
|
12
12
|
const Lfsa = require('lokijs/src/loki-fs-structured-adapter')
|
|
13
13
|
const { v4: uuidv4 } = require('uuid') // 用户 id 生成
|
|
14
14
|
const {
|
|
15
|
-
|
|
15
|
+
getHtmlToText,
|
|
16
16
|
getDomPurify,
|
|
17
17
|
getMd5,
|
|
18
18
|
getSha256,
|
|
@@ -63,7 +63,7 @@ const { sendNotice, emailTest } = require('twikoo-func/utils/notify')
|
|
|
63
63
|
const { uploadImage } = require('twikoo-func/utils/image')
|
|
64
64
|
const logger = require('twikoo-func/utils/logger')
|
|
65
65
|
|
|
66
|
-
const
|
|
66
|
+
const htmlToText = getHtmlToText()
|
|
67
67
|
const DOMPurify = getDomPurify()
|
|
68
68
|
const md5 = getMd5()
|
|
69
69
|
const sha256 = getSha256()
|
|
@@ -83,6 +83,7 @@ connectToDatabase()
|
|
|
83
83
|
|
|
84
84
|
module.exports = async (request, response) => {
|
|
85
85
|
let accessToken
|
|
86
|
+
let hasClientToken = false
|
|
86
87
|
const event = request.body || {}
|
|
87
88
|
logger.log('请求 IP:', getIp(request))
|
|
88
89
|
logger.log('请求函数:', event.event)
|
|
@@ -90,6 +91,8 @@ module.exports = async (request, response) => {
|
|
|
90
91
|
let res = {}
|
|
91
92
|
try {
|
|
92
93
|
protect(request)
|
|
94
|
+
// 判断客户端是否自带 accessToken,须在 anonymousSignIn 回填身份之前
|
|
95
|
+
hasClientToken = !!(request.body && request.body.accessToken)
|
|
93
96
|
accessToken = anonymousSignIn(request)
|
|
94
97
|
await readConfig()
|
|
95
98
|
allowCors(request, response)
|
|
@@ -187,7 +190,9 @@ module.exports = async (request, response) => {
|
|
|
187
190
|
res.code = RES_CODE.FAIL
|
|
188
191
|
res.message = e.message
|
|
189
192
|
}
|
|
190
|
-
|
|
193
|
+
// 客户端未携带 accessToken 时,将本次绑定的身份令牌随响应返回,
|
|
194
|
+
// 客户端会持久化并在后续请求中携带,从而获得稳定的匿名身份
|
|
195
|
+
if (!res.code && !hasClientToken) {
|
|
191
196
|
res.accessToken = accessToken
|
|
192
197
|
}
|
|
193
198
|
logger.log('请求返回:', res)
|
|
@@ -233,7 +238,10 @@ function anonymousSignIn (request) {
|
|
|
233
238
|
if (request.body.accessToken) {
|
|
234
239
|
return request.body.accessToken
|
|
235
240
|
} else {
|
|
236
|
-
|
|
241
|
+
// 为匿名访客签发固定身份令牌,写回请求体供本次请求的
|
|
242
|
+
// 评论存储(uid)与归属校验使用,避免出现 undefined 身份
|
|
243
|
+
request.body.accessToken = uuidv4().replace(/-/g, '')
|
|
244
|
+
return request.body.accessToken
|
|
237
245
|
}
|
|
238
246
|
}
|
|
239
247
|
}
|
|
@@ -1039,7 +1047,7 @@ async function getRecentComments (event) {
|
|
|
1039
1047
|
mailMd5: getMailMd5(comment),
|
|
1040
1048
|
link: comment.link,
|
|
1041
1049
|
comment: comment.comment,
|
|
1042
|
-
commentText:
|
|
1050
|
+
commentText: htmlToText(comment.comment),
|
|
1043
1051
|
created: comment.created
|
|
1044
1052
|
}
|
|
1045
1053
|
})
|
package/mongo.js
CHANGED
|
@@ -10,7 +10,7 @@ const getUserIP = require('get-user-ip')
|
|
|
10
10
|
const { URL } = require('url')
|
|
11
11
|
const { v4: uuidv4 } = require('uuid') // 用户 id 生成
|
|
12
12
|
const {
|
|
13
|
-
|
|
13
|
+
getHtmlToText,
|
|
14
14
|
getDomPurify,
|
|
15
15
|
getMd5,
|
|
16
16
|
getSha256,
|
|
@@ -59,7 +59,7 @@ const { sendNotice, emailTest } = require('twikoo-func/utils/notify')
|
|
|
59
59
|
const { uploadImage } = require('twikoo-func/utils/image')
|
|
60
60
|
const logger = require('twikoo-func/utils/logger')
|
|
61
61
|
|
|
62
|
-
const
|
|
62
|
+
const htmlToText = getHtmlToText()
|
|
63
63
|
const DOMPurify = getDomPurify()
|
|
64
64
|
const md5 = getMd5()
|
|
65
65
|
const sha256 = getSha256()
|
|
@@ -78,6 +78,7 @@ let requestTimesTimer = null
|
|
|
78
78
|
|
|
79
79
|
module.exports = async (request, response) => {
|
|
80
80
|
let accessToken
|
|
81
|
+
let hasClientToken = false
|
|
81
82
|
const event = request.body || {}
|
|
82
83
|
logger.log('请求 IP:', getIp(request))
|
|
83
84
|
logger.log('请求函数:', event.event)
|
|
@@ -85,6 +86,8 @@ module.exports = async (request, response) => {
|
|
|
85
86
|
let res = {}
|
|
86
87
|
try {
|
|
87
88
|
protect(request)
|
|
89
|
+
// 判断客户端是否自带 accessToken,须在 anonymousSignIn 回填身份之前
|
|
90
|
+
hasClientToken = !!(request.body && request.body.accessToken)
|
|
88
91
|
accessToken = anonymousSignIn(request)
|
|
89
92
|
await connectToDatabase(process.env.MONGODB_URI || process.env.MONGO_URL)
|
|
90
93
|
await readConfig()
|
|
@@ -180,7 +183,9 @@ module.exports = async (request, response) => {
|
|
|
180
183
|
res.code = RES_CODE.FAIL
|
|
181
184
|
res.message = e.message
|
|
182
185
|
}
|
|
183
|
-
|
|
186
|
+
// 客户端未携带 accessToken 时,将本次绑定的身份令牌随响应返回,
|
|
187
|
+
// 客户端会持久化并在后续请求中携带,从而获得稳定的匿名身份
|
|
188
|
+
if (!res.code && !hasClientToken) {
|
|
184
189
|
res.accessToken = accessToken
|
|
185
190
|
}
|
|
186
191
|
logger.log('请求返回:', res)
|
|
@@ -226,7 +231,10 @@ function anonymousSignIn (request) {
|
|
|
226
231
|
if (request.body.accessToken) {
|
|
227
232
|
return request.body.accessToken
|
|
228
233
|
} else {
|
|
229
|
-
|
|
234
|
+
// 为匿名访客签发固定身份令牌,写回请求体供本次请求的
|
|
235
|
+
// 评论存储(uid)与归属校验使用,避免出现 undefined 身份
|
|
236
|
+
request.body.accessToken = uuidv4().replace(/-/g, '')
|
|
237
|
+
return request.body.accessToken
|
|
230
238
|
}
|
|
231
239
|
}
|
|
232
240
|
}
|
|
@@ -1026,7 +1034,7 @@ async function getRecentComments (event) {
|
|
|
1026
1034
|
mailMd5: getMailMd5(comment),
|
|
1027
1035
|
link: comment.link,
|
|
1028
1036
|
comment: comment.comment,
|
|
1029
|
-
commentText:
|
|
1037
|
+
commentText: htmlToText(comment.comment),
|
|
1030
1038
|
created: comment.created
|
|
1031
1039
|
}
|
|
1032
1040
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tkserver",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.21",
|
|
4
4
|
"description": "A simple comment system.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"twikoo",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"get-user-ip": "^1.0.1",
|
|
32
32
|
"lokijs": "^1.5.12",
|
|
33
33
|
"mongodb": "^6.3.0",
|
|
34
|
-
"twikoo-func": "1.7.
|
|
34
|
+
"twikoo-func": "1.7.21",
|
|
35
35
|
"uuid": "^8.3.2"
|
|
36
36
|
}
|
|
37
37
|
}
|