aliyun sensor server
This commit is contained in:
+17
-13
@@ -31,6 +31,7 @@ import (
|
||||
"github.com/tamakyi/TamaBox/internal/i18n"
|
||||
"github.com/tamakyi/TamaBox/internal/mail"
|
||||
"github.com/tamakyi/TamaBox/internal/security/censor"
|
||||
"github.com/tamakyi/TamaBox/internal/security/moderation"
|
||||
"github.com/tamakyi/TamaBox/internal/shared"
|
||||
)
|
||||
|
||||
@@ -57,16 +58,19 @@ func InvalidateResultsCache(voteID uint) {
|
||||
resultsCache.Delete(strconv.FormatUint(uint64(voteID), 10))
|
||||
}
|
||||
|
||||
// censorCheck 对开放文本做内容审核(fail-closed;EnableTextCensor=false 时自动放行)。
|
||||
func censorCheck(ctx context.Context, lang, text string) error {
|
||||
resp, err := censor.Text(ctx.Request().Context(), text)
|
||||
if err != nil {
|
||||
return errors.New(i18n.T(lang, "censor.unavailable"))
|
||||
// censorCheck 对开放文本做内容审核。
|
||||
//
|
||||
// 与提问 / 私聊共用同一个守卫(internal/security/moderation.Check):是否拦截由
|
||||
// 投票发起人的「审核严格度」档位决定,而不是无条件采信审核服务的判定。
|
||||
// 审核服务异常仍为 fail-closed 拒绝提交;EnableTextCensor=false 时底层自动放行。
|
||||
// owner 为 nil 时回退到最严档位,避免发起人为空就把或从宽放行。
|
||||
func censorCheck(ctx context.Context, owner *db.User, lang, text string) error {
|
||||
strictness := censor.StrictnessStrict
|
||||
if owner != nil {
|
||||
strictness = moderation.StrictnessFor(owner.ModerationStrictness)
|
||||
}
|
||||
if !resp.Pass {
|
||||
return errors.New(resp.ErrorMessage())
|
||||
}
|
||||
return nil
|
||||
_, err := moderation.Check(ctx.Request().Context(), strictness, lang, text)
|
||||
return err
|
||||
}
|
||||
|
||||
// blockWordCheck 校验开放文本是否命中投票发起人的全局屏蔽词表
|
||||
@@ -968,7 +972,7 @@ func parseSubmission(ctx context.Context, v *db.Vote, owner *db.User) (*db.Creat
|
||||
return nil, err
|
||||
}
|
||||
// 开放文本内容审核(fail-closed)
|
||||
if err := censorCheck(ctx, lang, custom); err != nil {
|
||||
if err := censorCheck(ctx, owner, lang, custom); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
formData[f.Label] = custom
|
||||
@@ -1004,7 +1008,7 @@ func parseSubmission(ctx context.Context, v *db.Vote, owner *db.User) (*db.Creat
|
||||
return nil, err
|
||||
}
|
||||
// 开放文本内容审核(fail-closed)
|
||||
if err := censorCheck(ctx, lang, custom); err != nil {
|
||||
if err := censorCheck(ctx, owner, lang, custom); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
chosen = append(chosen, custom)
|
||||
@@ -1088,7 +1092,7 @@ func parseSubmission(ctx context.Context, v *db.Vote, owner *db.User) (*db.Creat
|
||||
return nil, err
|
||||
}
|
||||
// 开放文本内容审核(fail-closed)
|
||||
if err := censorCheck(ctx, lang, val); err != nil {
|
||||
if err := censorCheck(ctx, owner, lang, val); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
formData[f.Label] = val
|
||||
@@ -1110,7 +1114,7 @@ func parseSubmission(ctx context.Context, v *db.Vote, owner *db.User) (*db.Creat
|
||||
return nil, err
|
||||
}
|
||||
// 开放文本内容审核(fail-closed)
|
||||
if err := censorCheck(ctx, lang, custom); err != nil {
|
||||
if err := censorCheck(ctx, owner, lang, custom); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
sub.CustomText = custom
|
||||
|
||||
Reference in New Issue
Block a user