docs(website): 添加简记memo产品原型和UI设计规范文档
- 新增「简记memo」一体化小程序产品原型设计文档 - 新增简记memo完整版UI视觉设计规范和界面细节 - 添加IDEA项目配置文件.gitignore - 创建404页面HTML文件,包含响应式布局和错误提示 - 添加关于页面HTML文件,展示品牌介绍和团队信息 - 实现AES加解密工具函数,支持请求体加密 - 添加用户协议页面基础框架
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
// utils/sensitive.go
|
||||
// 敏感词过滤工具
|
||||
package utils
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/importcjj/sensitive"
|
||||
)
|
||||
|
||||
//go:embed sensitive_words.txt
|
||||
var sensitiveWordsFS embed.FS
|
||||
|
||||
var (
|
||||
filter *sensitive.Filter
|
||||
filterOnce sync.Once
|
||||
)
|
||||
|
||||
// GetSensitiveFilter 获取敏感词过滤器单例
|
||||
func GetSensitiveFilter() *sensitive.Filter {
|
||||
filterOnce.Do(func() {
|
||||
filter = sensitive.New()
|
||||
loadDefaultWords()
|
||||
})
|
||||
return filter
|
||||
}
|
||||
|
||||
// loadDefaultWords 加载默认敏感词库
|
||||
func loadDefaultWords() {
|
||||
// 从嵌入的文件系统读取
|
||||
data, err := sensitiveWordsFS.ReadFile("sensitive_words.txt")
|
||||
if err != nil {
|
||||
// 如果文件不存在,使用内置的基础词库
|
||||
loadBuiltinWords()
|
||||
return
|
||||
}
|
||||
|
||||
words := strings.Split(string(data), "\n")
|
||||
for _, word := range words {
|
||||
word = strings.TrimSpace(word)
|
||||
if word != "" && !strings.HasPrefix(word, "#") {
|
||||
filter.AddWord(word)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// loadBuiltinWords 加载内置基础敏感词
|
||||
func loadBuiltinWords() {
|
||||
// 基硎敏感词列表
|
||||
builtinWords := []string{
|
||||
// 政治相关
|
||||
"习近平", "江泽民", "胡锦涛", "温家宝", "李克强",
|
||||
"法轮功", "六四", "天安门", "台独", "藏独", "疆独",
|
||||
// 色情相关
|
||||
"色情", "黄色", "裸体", "做爱", "性交", "强奸", "乱伦",
|
||||
// 暴力相关
|
||||
"杀人", "自杀", "爆炸", "恐怖", "炸弹", "袭击",
|
||||
// 赌博相关
|
||||
"赌博", "赌钱", "博彩", "六合彩",
|
||||
// 毒品相关
|
||||
"毒品", "吸毒", "贩毒", "冰毒", "海洛因",
|
||||
// 侮辱性词汇
|
||||
"傻逼", "操你", "妈的", "王八蛋", "畜生",
|
||||
}
|
||||
|
||||
for _, word := range builtinWords {
|
||||
filter.AddWord(word)
|
||||
}
|
||||
}
|
||||
|
||||
// FilterSensitive 过滤敏感词,替换为 *
|
||||
func FilterSensitive(text string) string {
|
||||
f := GetSensitiveFilter()
|
||||
return f.Replace(text, '*')
|
||||
}
|
||||
|
||||
// ContainsSensitive 检查是否包含敏感词
|
||||
func ContainsSensitive(text string) bool {
|
||||
f := GetSensitiveFilter()
|
||||
has, _ := f.FindIn(text)
|
||||
return has
|
||||
}
|
||||
|
||||
// FindAllSensitive 查找所有敏感词
|
||||
func FindAllSensitive(text string) []string {
|
||||
f := GetSensitiveFilter()
|
||||
return f.FindAll(text)
|
||||
}
|
||||
|
||||
// ValidateContent 验证内容,返回是否通过和第一个敏感词
|
||||
func ValidateContent(text string) (bool, string) {
|
||||
f := GetSensitiveFilter()
|
||||
return f.Validate(text)
|
||||
}
|
||||
|
||||
// AddSensitiveWord 动态添加敏感词
|
||||
func AddSensitiveWord(word string) {
|
||||
f := GetSensitiveFilter()
|
||||
f.AddWord(word)
|
||||
}
|
||||
|
||||
// AddSensitiveWords 批量添加敏感词
|
||||
func AddSensitiveWords(words []string) {
|
||||
f := GetSensitiveFilter()
|
||||
for _, word := range words {
|
||||
f.AddWord(word)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user