✨ updated
This commit is contained in:
1332
.idea/GOHCache.xml
generated
1332
.idea/GOHCache.xml
generated
File diff suppressed because it is too large
Load Diff
6
.idea/JavaSceneConfigState.xml
generated
Normal file
6
.idea/JavaSceneConfigState.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SmartInputSourceJavaSceneConfigState">
|
||||
<option name="customChineseScenes" value="{"capsLockState":false,"code":";FormatText(defaultText)","enable":true,"languageType":"CHINESE","name":"自定义中文切换","tip":""}" />
|
||||
</component>
|
||||
</project>
|
||||
35
app/core/api/common/captcha/verify/verify_rotate_captcha.go
Normal file
35
app/core/api/common/captcha/verify/verify_rotate_captcha.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package verify
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/wenlng/go-captcha/v2/rotate"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/constant"
|
||||
)
|
||||
|
||||
// VerifyRotateCaptcha verify rotate captcha
|
||||
func VerifyRotateCaptcha(context context.Context, redis *redis.Client, angle int64, key string) bool {
|
||||
cacheDataByte := redis.Get(context, constant.UserCaptchaPrefix+key).Val()
|
||||
if len(cacheDataByte) == 0 {
|
||||
return false
|
||||
}
|
||||
var dct *rotate.Block
|
||||
if err := json.Unmarshal([]byte(cacheDataByte), &dct); err != nil {
|
||||
return false
|
||||
}
|
||||
sAngle, err := strconv.ParseFloat(fmt.Sprintf("%v", angle), 64)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
chkRet := rotate.CheckAngle(int64(sAngle), int64(dct.Angle), 2)
|
||||
if chkRet {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
|
||||
}
|
||||
36
app/core/api/common/captcha/verify/verify_slide_captcha.go
Normal file
36
app/core/api/common/captcha/verify/verify_slide_captcha.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package verify
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/wenlng/go-captcha/v2/slide"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/constant"
|
||||
)
|
||||
|
||||
// VerifySlideCaptcha verify slide captcha
|
||||
func VerifySlideCaptcha(context context.Context, redis *redis.Client, point []int64, key string) bool {
|
||||
cacheDataByte := redis.Get(context, constant.UserCaptchaPrefix+key).Val()
|
||||
if len(cacheDataByte) == 0 {
|
||||
return false
|
||||
}
|
||||
var dct *slide.Block
|
||||
if err := json.Unmarshal([]byte(cacheDataByte), &dct); err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
chkRet := false
|
||||
if 2 == len(point) {
|
||||
sx, _ := strconv.ParseFloat(fmt.Sprintf("%v", point[0]), 64)
|
||||
sy, _ := strconv.ParseFloat(fmt.Sprintf("%v", point[1]), 64)
|
||||
chkRet = slide.CheckPoint(int64(sx), int64(sy), int64(dct.X), int64(dct.Y), 4)
|
||||
}
|
||||
if chkRet {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
8
app/core/api/common/constant/redis_prefix.go
Normal file
8
app/core/api/common/constant/redis_prefix.go
Normal file
@@ -0,0 +1,8 @@
|
||||
package constant
|
||||
|
||||
const (
|
||||
UserClientPrefix string = "user:client:"
|
||||
UserSessionPrefix string = "user:session:"
|
||||
UserCaptchaPrefix string = "user:captcha:"
|
||||
UserTokenPrefix string = "user:token:"
|
||||
)
|
||||
3
app/core/api/common/constant/session_key.go
Normal file
3
app/core/api/common/constant/session_key.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package constant
|
||||
|
||||
const SESSION_KEY = "SESSION"
|
||||
@@ -4,13 +4,13 @@ import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
"github.com/zeromicro/go-zero/core/logc"
|
||||
)
|
||||
|
||||
type AccessJWTPayload struct {
|
||||
UserID *string `json:"user_id"`
|
||||
Type *string `json:"type" default:"access"`
|
||||
UserID string `json:"user_id"`
|
||||
Type string `json:"type" default:"access"`
|
||||
}
|
||||
type AccessJWTClaims struct {
|
||||
AccessJWTPayload
|
||||
@@ -4,13 +4,13 @@ import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
"github.com/zeromicro/go-zero/core/logc"
|
||||
)
|
||||
|
||||
type RefreshJWTPayload struct {
|
||||
UserID *string `json:"user_id"`
|
||||
Type *string `json:"type" default:"refresh"`
|
||||
UserID string `json:"user_id"`
|
||||
Type string `json:"type" default:"refresh"`
|
||||
}
|
||||
type RefreshJWTClaims struct {
|
||||
RefreshJWTPayload
|
||||
24
app/core/api/common/middleware/i18n_middleware.go
Normal file
24
app/core/api/common/middleware/i18n_middleware.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/i18n"
|
||||
)
|
||||
|
||||
func I18nMiddleware(next http.HandlerFunc) http.HandlerFunc {
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
zhPath := filepath.Join(cwd, "/resources/language/", "active.zh.toml")
|
||||
enPath := filepath.Join(cwd, "/resources/language/", "active.en.toml")
|
||||
return i18n.NewI18nMiddleware([]language.Tag{
|
||||
language.English,
|
||||
language.Chinese,
|
||||
}, []string{enPath, zhPath}).Handle(next)
|
||||
}
|
||||
48
app/core/api/common/response/response.go
Normal file
48
app/core/api/common/response/response.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package response
|
||||
|
||||
import "schisandra-album-cloud-microservices/app/core/api/internal/types"
|
||||
|
||||
// Success returns a success response with the given data.
|
||||
func Success[T any](data T) *types.Response {
|
||||
return &types.Response{
|
||||
Code: 200,
|
||||
Message: "success",
|
||||
Data: data,
|
||||
}
|
||||
}
|
||||
|
||||
// SuccessWithMessage returns a success response with the given message.
|
||||
func SuccessWithMessage(message string) *types.Response {
|
||||
return &types.Response{
|
||||
Code: 200,
|
||||
Message: message,
|
||||
Data: nil,
|
||||
}
|
||||
}
|
||||
|
||||
// Error returns an error response with the given message.
|
||||
func Error() *types.Response {
|
||||
return &types.Response{
|
||||
Code: 500,
|
||||
Message: "error",
|
||||
Data: nil,
|
||||
}
|
||||
}
|
||||
|
||||
// ErrorWithCode returns an error response with the given code and message.
|
||||
func ErrorWithCode(code int64, message string) *types.Response {
|
||||
return &types.Response{
|
||||
Code: code,
|
||||
Message: message,
|
||||
Data: nil,
|
||||
}
|
||||
}
|
||||
|
||||
// ErrorWithMessage returns an error response with the given message.
|
||||
func ErrorWithMessage(message string) *types.Response {
|
||||
return &types.Response{
|
||||
Code: 500,
|
||||
Message: message,
|
||||
Data: nil,
|
||||
}
|
||||
}
|
||||
26
app/core/api/common/utils/get_client_ip.go
Normal file
26
app/core/api/common/utils/get_client_ip.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// GetClientIP returns the client IP address from the request.
|
||||
func GetClientIP(r *http.Request) string {
|
||||
xForwardedFor := strings.TrimSpace(r.Header.Get("X-Forwarded-For"))
|
||||
if xForwardedFor != "" {
|
||||
return strings.Split(xForwardedFor, ",")[0]
|
||||
}
|
||||
|
||||
ip := strings.TrimSpace(r.Header.Get("X-Real-Ip"))
|
||||
if ip != "" {
|
||||
return ip
|
||||
}
|
||||
|
||||
ip, _, err := net.SplitHostPort(strings.TrimSpace(r.RemoteAddr))
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
return ip
|
||||
}
|
||||
21
app/core/api/common/utils/ip2location.go
Normal file
21
app/core/api/common/utils/ip2location.go
Normal file
@@ -0,0 +1,21 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func RemoveZeroAndAdjust(s string) string {
|
||||
// 正则表达式匹配 "|0|" 或 "|0" 或 "0|" 并替换为 "|"
|
||||
re := regexp.MustCompile(`(\|0|0\||0)`)
|
||||
result := re.ReplaceAllString(s, "|")
|
||||
|
||||
// 移除可能出现的连续 "|"
|
||||
re = regexp.MustCompile(`\|+`)
|
||||
result = re.ReplaceAllString(result, "|")
|
||||
|
||||
// 移除字符串开头和结尾可能出现的 "|"
|
||||
result = strings.Trim(result, "|")
|
||||
|
||||
return result
|
||||
}
|
||||
@@ -35,10 +35,19 @@ type (
|
||||
LoginResponse {
|
||||
AccessToken string `json:"access_token"`
|
||||
UID string `json:"uid"`
|
||||
Username string `json:"username,optional"`
|
||||
Username string `json:"username,omitempty"`
|
||||
Nickname string `json:"nickname"`
|
||||
Avatar string `json:"avatar"`
|
||||
Status int64 `json:"status"`
|
||||
Status int8 `json:"status"`
|
||||
}
|
||||
)
|
||||
|
||||
// 统一响应参数
|
||||
type (
|
||||
Response {
|
||||
Code int64 `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data,optional"`
|
||||
}
|
||||
)
|
||||
|
||||
@@ -56,14 +65,30 @@ type (
|
||||
service core {
|
||||
// 账户登录
|
||||
@handler accountLogin
|
||||
post /login (AccountLoginRequest) returns (LoginResponse)
|
||||
post /login (AccountLoginRequest) returns (Response)
|
||||
|
||||
// 手机号登录
|
||||
@handler phoneLogin
|
||||
post /phone_login (PhoneLoginRequest) returns (LoginResponse)
|
||||
post /phone_login (PhoneLoginRequest) returns (Response)
|
||||
|
||||
// 重置密码
|
||||
@handler resetPassword
|
||||
post /reset_password (ResetPasswordRequest) returns (string)
|
||||
post /reset_password (ResetPasswordRequest) returns (Response)
|
||||
}
|
||||
|
||||
// 客户端服务
|
||||
@server (
|
||||
group: client // 微服务分组
|
||||
prefix: /api/client // 微服务前缀
|
||||
timeout: 10s // 超时时间
|
||||
maxBytes: 1048576 // 最大请求大小
|
||||
signature: false // 是否开启签名验证
|
||||
middleware: SecurityHeadersMiddleware // 注册中间件
|
||||
MaxConns: true // 是否开启最大连接数限制
|
||||
Recover: true // 是否开启自动恢复
|
||||
)
|
||||
service core {
|
||||
@handler generateClientId
|
||||
get /generate_client_id returns (Response)
|
||||
}
|
||||
|
||||
|
||||
@@ -4,10 +4,10 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/middleware"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/config"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/handler"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/common/middleware"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/conf"
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
@@ -21,7 +21,7 @@ func main() {
|
||||
var c config.Config
|
||||
conf.MustLoad(*configFile, &c)
|
||||
|
||||
server := rest.MustNewServer(c.RestConf, rest.WithCustomCors(middleware.CORSMiddleware(), nil, "*"))
|
||||
server := rest.MustNewServer(c.RestConf, rest.WithCors())
|
||||
defer server.Stop()
|
||||
// i18n middleware
|
||||
server.Use(middleware.I18nMiddleware)
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
Name: main
|
||||
Host: 0.0.0.0
|
||||
Port: 8888
|
||||
Port: 80
|
||||
Web:
|
||||
Addr: localhost:8080
|
||||
Middlewares:
|
||||
Log: true
|
||||
Mysql:
|
||||
DataSource: root:1611@tcp(localhost:3306)/schisandra-cloud-album?charset=utf8mb4&parseTime=True&loc=Local
|
||||
Auth:
|
||||
@@ -8,9 +12,8 @@ Auth:
|
||||
AccessExpire: 86400
|
||||
Redis:
|
||||
Host: 1.95.0.111:6379
|
||||
Type: node
|
||||
Pass: LDQ20020618xxx
|
||||
Tls: false
|
||||
DB: 0
|
||||
Mongo:
|
||||
Uri: mongodb://1.95.0.111:27017
|
||||
Username: landaiqing
|
||||
|
||||
@@ -13,9 +13,8 @@ type Config struct {
|
||||
}
|
||||
Redis struct {
|
||||
Host string
|
||||
Type string
|
||||
Pass string
|
||||
Tls bool
|
||||
DB int
|
||||
}
|
||||
Mongo struct {
|
||||
Uri string
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/utils"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/logic/client"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
)
|
||||
|
||||
func GenerateClientIdHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
clientIP := utils.GetClientIP(r)
|
||||
l := client.NewGenerateClientIdLogic(r.Context(), svcCtx)
|
||||
resp, err := l.GenerateClientId(clientIP)
|
||||
if err != nil || resp.Code == 500 {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
client "schisandra-album-cloud-microservices/app/core/api/internal/handler/client"
|
||||
user "schisandra-album-cloud-microservices/app/core/api/internal/handler/user"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
|
||||
@@ -14,6 +15,22 @@ import (
|
||||
)
|
||||
|
||||
func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||
server.AddRoutes(
|
||||
rest.WithMiddlewares(
|
||||
[]rest.Middleware{serverCtx.SecurityHeadersMiddleware},
|
||||
[]rest.Route{
|
||||
{
|
||||
Method: http.MethodGet,
|
||||
Path: "/generate_client_id",
|
||||
Handler: client.GenerateClientIdHandler(serverCtx),
|
||||
},
|
||||
}...,
|
||||
),
|
||||
rest.WithPrefix("/api/client"),
|
||||
rest.WithTimeout(10000*time.Millisecond),
|
||||
rest.WithMaxBytes(1048576),
|
||||
)
|
||||
|
||||
server.AddRoutes(
|
||||
rest.WithMiddlewares(
|
||||
[]rest.Middleware{serverCtx.SecurityHeadersMiddleware},
|
||||
|
||||
@@ -19,8 +19,8 @@ func AccountLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
}
|
||||
|
||||
l := user.NewAccountLoginLogic(r.Context(), svcCtx)
|
||||
resp, err := l.AccountLogin(&req)
|
||||
if err != nil {
|
||||
resp, err := l.AccountLogin(w, r, &req)
|
||||
if err != nil || resp.Code == 500 {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
|
||||
@@ -20,7 +20,7 @@ func PhoneLoginHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
|
||||
l := user.NewPhoneLoginLogic(r.Context(), svcCtx)
|
||||
resp, err := l.PhoneLogin(&req)
|
||||
if err != nil {
|
||||
if err != nil || resp.Code == 500 {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
|
||||
@@ -20,7 +20,7 @@ func ResetPasswordHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
|
||||
l := user.NewResetPasswordLogic(r.Context(), svcCtx)
|
||||
resp, err := l.ResetPassword(&req)
|
||||
if err != nil {
|
||||
if err != nil || resp.Code == 500 {
|
||||
httpx.ErrorCtx(r.Context(), w, err)
|
||||
} else {
|
||||
httpx.OkJsonCtx(r.Context(), w, resp)
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/ccpwcn/kgo"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/constant"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/response"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type GenerateClientIdLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewGenerateClientIdLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GenerateClientIdLogic {
|
||||
return &GenerateClientIdLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GenerateClientIdLogic) GenerateClientId(clientIP string) (resp *types.Response, err error) {
|
||||
clientId := l.svcCtx.RedisClient.Get(l.ctx, constant.UserClientPrefix+clientIP).Val()
|
||||
|
||||
if clientId != "" {
|
||||
return response.Success(clientId), nil
|
||||
}
|
||||
simpleUuid := kgo.SimpleUuid()
|
||||
if err = l.svcCtx.RedisClient.SetEx(l.ctx, constant.UserClientPrefix+clientIP, simpleUuid, time.Hour*24*7).Err(); err != nil {
|
||||
l.Error(err)
|
||||
return response.Error(), err
|
||||
}
|
||||
return response.Success(simpleUuid), nil
|
||||
}
|
||||
@@ -2,14 +2,27 @@ package user
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
|
||||
"github.com/mssola/useragent"
|
||||
"github.com/zeromicro/go-zero/core/logc"
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/captcha/verify"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/constant"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/i18n"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/jwt"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/response"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/utils"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/types"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mongodb/collection"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mongodb/model"
|
||||
"schisandra-album-cloud-microservices/common/i18n"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuser"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuserdevice"
|
||||
types3 "schisandra-album-cloud-microservices/app/core/api/repository/redis_session/types"
|
||||
types2 "schisandra-album-cloud-microservices/app/core/api/repository/redisx/types"
|
||||
)
|
||||
|
||||
type AccountLoginLogic struct {
|
||||
@@ -26,13 +39,160 @@ func NewAccountLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Acco
|
||||
}
|
||||
}
|
||||
|
||||
func (l *AccountLoginLogic) AccountLogin(req *types.AccountLoginRequest) (resp *types.LoginResponse, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
i18n.IsHasI18n(l.ctx)
|
||||
text := i18n.FormatText(l.ctx, "user.name", "landaiqing")
|
||||
collection.MustNewCollection[model.CommentImage](l.svcCtx, "comment_image")
|
||||
func (l *AccountLoginLogic) AccountLogin(w http.ResponseWriter, r *http.Request, req *types.AccountLoginRequest) (resp *types.Response, err error) {
|
||||
verifyResult := verify.VerifyRotateCaptcha(l.ctx, l.svcCtx.RedisClient, req.Angle, req.Key)
|
||||
if !verifyResult {
|
||||
return response.ErrorWithMessage(i18n.FormatText(l.ctx, "captcha.verificationFailure", "验证失败!")), nil
|
||||
}
|
||||
var user *ent.ScaAuthUser
|
||||
var query *ent.ScaAuthUserQuery
|
||||
|
||||
return &types.LoginResponse{
|
||||
AccessToken: text,
|
||||
}, nil
|
||||
switch {
|
||||
case utils.IsPhone(req.Account):
|
||||
query = l.svcCtx.MySQLClient.ScaAuthUser.Query().Where(scaauthuser.PhoneEQ(req.Account), scaauthuser.DeletedEQ(0))
|
||||
case utils.IsEmail(req.Account):
|
||||
query = l.svcCtx.MySQLClient.ScaAuthUser.Query().Where(scaauthuser.EmailEQ(req.Account), scaauthuser.DeletedEQ(0))
|
||||
case utils.IsUsername(req.Account):
|
||||
query = l.svcCtx.MySQLClient.ScaAuthUser.Query().Where(scaauthuser.UsernameEQ(req.Account), scaauthuser.DeletedEQ(0))
|
||||
default:
|
||||
return response.ErrorWithMessage(i18n.FormatText(l.ctx, "login.invalidAccount", "无效账号!")), nil
|
||||
}
|
||||
|
||||
user, err = query.First(l.ctx)
|
||||
if err != nil {
|
||||
if ent.IsNotFound(err) {
|
||||
return response.ErrorWithMessage(i18n.FormatText(l.ctx, "login.notFoundAccount", "无效账号!")), nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if !utils.Verify(user.Password, req.Password) {
|
||||
return response.ErrorWithMessage(i18n.FormatText(l.ctx, "login.invalidPassword", "密码错误!")), nil
|
||||
}
|
||||
data, result := HandleUserLogin(user, l, req.AutoLogin, r, w, l.svcCtx.Ip2Region, l.svcCtx.MySQLClient)
|
||||
if !result {
|
||||
return response.ErrorWithMessage(i18n.FormatText(l.ctx, "login.loginFailed", "登录失败!")), nil
|
||||
}
|
||||
return response.Success(data), nil
|
||||
}
|
||||
|
||||
// HandleUserLogin 处理用户登录
|
||||
func HandleUserLogin(user *ent.ScaAuthUser, l *AccountLoginLogic, autoLogin bool, r *http.Request, w http.ResponseWriter, ip2location *xdb.Searcher, entClient *ent.Client) (*types.LoginResponse, bool) {
|
||||
// 生成jwt token
|
||||
accessToken := jwt.GenerateAccessToken(l.svcCtx.Config.Auth.AccessSecret, jwt.AccessJWTPayload{
|
||||
UserID: user.UID,
|
||||
})
|
||||
var days time.Duration
|
||||
if autoLogin {
|
||||
days = 7 * 24 * time.Hour
|
||||
} else {
|
||||
days = time.Hour * 24
|
||||
}
|
||||
refreshToken := jwt.GenerateRefreshToken(l.svcCtx.Config.Auth.AccessSecret, jwt.RefreshJWTPayload{
|
||||
UserID: user.UID,
|
||||
}, days)
|
||||
data := types.LoginResponse{
|
||||
AccessToken: accessToken,
|
||||
UID: user.UID,
|
||||
Username: user.Username,
|
||||
Nickname: user.Nickname,
|
||||
Avatar: user.Avatar,
|
||||
Status: user.Status,
|
||||
}
|
||||
|
||||
redisToken := types2.RedisToken{
|
||||
AccessToken: accessToken,
|
||||
UID: user.UID,
|
||||
}
|
||||
err := l.svcCtx.RedisClient.SetEx(l.ctx, constant.UserTokenPrefix+user.UID, redisToken, days).Err()
|
||||
if err != nil {
|
||||
logc.Error(l.ctx, err)
|
||||
return nil, false
|
||||
}
|
||||
sessionData := types3.SessionData{
|
||||
RefreshToken: refreshToken,
|
||||
UID: user.UID,
|
||||
}
|
||||
session, err := l.svcCtx.Session.Get(r, constant.SESSION_KEY)
|
||||
if err != nil {
|
||||
logc.Error(l.ctx, err)
|
||||
return nil, false
|
||||
}
|
||||
session.Values[constant.SESSION_KEY] = sessionData
|
||||
if err = session.Save(r, w); err != nil {
|
||||
logc.Error(l.ctx, err)
|
||||
return nil, false
|
||||
}
|
||||
// 记录用户登录设备
|
||||
if !getUserLoginDevice(user.UID, r, ip2location, entClient, l.ctx) {
|
||||
return nil, false
|
||||
}
|
||||
return &data, true
|
||||
|
||||
}
|
||||
|
||||
// getUserLoginDevice 获取用户登录设备
|
||||
func getUserLoginDevice(userId string, r *http.Request, ip2location *xdb.Searcher, entClient *ent.Client, ctx context.Context) bool {
|
||||
userAgent := r.Header.Get("User-Agent")
|
||||
if userAgent == "" {
|
||||
return false
|
||||
}
|
||||
ip := utils.GetClientIP(r)
|
||||
location, err := ip2location.SearchByStr(ip)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
location = utils.RemoveZeroAndAdjust(location)
|
||||
|
||||
ua := useragent.New(userAgent)
|
||||
isBot := ua.Bot()
|
||||
browser, browserVersion := ua.Browser()
|
||||
os := ua.OS()
|
||||
mobile := ua.Mobile()
|
||||
mozilla := ua.Mozilla()
|
||||
platform := ua.Platform()
|
||||
engine, engineVersion := ua.Engine()
|
||||
|
||||
device, err := entClient.ScaAuthUserDevice.Query().
|
||||
Where(scaauthuserdevice.UserID(userId), scaauthuserdevice.IP(ip), scaauthuserdevice.Agent(userAgent)).
|
||||
Only(ctx)
|
||||
|
||||
// 如果有错误,表示设备不存在,执行插入
|
||||
if ent.IsNotFound(err) {
|
||||
// 创建新的设备记录
|
||||
entClient.ScaAuthUserDevice.Create().
|
||||
SetBot(isBot).
|
||||
SetAgent(userAgent).
|
||||
SetBrowser(browser).
|
||||
SetBrowserVersion(browserVersion).
|
||||
SetEngineName(engine).
|
||||
SetEngineVersion(engineVersion).
|
||||
SetIP(ip).
|
||||
SetLocation(location).
|
||||
SetOperatingSystem(os).
|
||||
SetMobile(mobile).
|
||||
SetMozilla(mozilla).
|
||||
SetPlatform(platform).
|
||||
SaveX(ctx)
|
||||
} else if err == nil {
|
||||
// 如果设备存在,执行更新
|
||||
device.Update().
|
||||
SetBot(isBot).
|
||||
SetAgent(userAgent).
|
||||
SetBrowser(browser).
|
||||
SetBrowserVersion(browserVersion).
|
||||
SetEngineName(engine).
|
||||
SetEngineVersion(engineVersion).
|
||||
SetIP(ip).
|
||||
SetLocation(location).
|
||||
SetOperatingSystem(os).
|
||||
SetMobile(mobile).
|
||||
SetMozilla(mozilla).
|
||||
SetPlatform(platform).
|
||||
SaveX(ctx)
|
||||
} else {
|
||||
logc.Error(ctx, err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -3,10 +3,10 @@ package user
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type PhoneLoginLogic struct {
|
||||
@@ -23,7 +23,7 @@ func NewPhoneLoginLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PhoneL
|
||||
}
|
||||
}
|
||||
|
||||
func (l *PhoneLoginLogic) PhoneLogin(req *types.PhoneLoginRequest) (resp *types.LoginResponse, err error) {
|
||||
func (l *PhoneLoginLogic) PhoneLogin(req *types.PhoneLoginRequest) (resp *types.Response, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
|
||||
@@ -3,10 +3,10 @@ package user
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type ResetPasswordLogic struct {
|
||||
@@ -23,7 +23,7 @@ func NewResetPasswordLogic(ctx context.Context, svcCtx *svc.ServiceContext) *Res
|
||||
}
|
||||
}
|
||||
|
||||
func (l *ResetPasswordLogic) ResetPassword(req *types.ResetPasswordRequest) (resp string, err error) {
|
||||
func (l *ResetPasswordLogic) ResetPassword(req *types.ResetPasswordRequest) (resp *types.Response, err error) {
|
||||
// todo: add your logic here and delete this line
|
||||
|
||||
return
|
||||
|
||||
@@ -3,7 +3,7 @@ package middleware
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"schisandra-album-cloud-microservices/common/middleware"
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/middleware"
|
||||
)
|
||||
|
||||
type SecurityHeadersMiddleware struct {
|
||||
|
||||
@@ -1,24 +1,31 @@
|
||||
package svc
|
||||
|
||||
import (
|
||||
"github.com/zeromicro/go-zero/core/stores/redis"
|
||||
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
|
||||
"github.com/rbcervilla/redisstore/v9"
|
||||
"github.com/redis/go-redis/v9"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest"
|
||||
"go.mongodb.org/mongo-driver/v2/mongo"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/config"
|
||||
"schisandra-album-cloud-microservices/app/core/api/internal/middleware"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/ip2region"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mongodb"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/redis_session"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/redisx"
|
||||
)
|
||||
|
||||
type ServiceContext struct {
|
||||
Config config.Config
|
||||
SecurityHeadersMiddleware rest.Middleware
|
||||
MySQLClient *ent.Client
|
||||
RedisClient *redis.Redis
|
||||
RedisClient *redis.Client
|
||||
MongoClient *mongo.Database
|
||||
Session *redisstore.RedisStore
|
||||
Ip2Region *xdb.Searcher
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
@@ -26,12 +33,9 @@ func NewServiceContext(c config.Config) *ServiceContext {
|
||||
Config: c,
|
||||
SecurityHeadersMiddleware: middleware.NewSecurityHeadersMiddleware().Handle,
|
||||
MySQLClient: mysql.NewMySQL(c.Mysql.DataSource),
|
||||
RedisClient: redis.MustNewRedis(redis.RedisConf{
|
||||
Host: c.Redis.Host,
|
||||
Pass: c.Redis.Pass,
|
||||
Type: c.Redis.Type,
|
||||
Tls: c.Redis.Tls,
|
||||
}),
|
||||
MongoClient: mongodb.NewMongoDB(c.Mongo.Uri, c.Mongo.Username, c.Mongo.Password, c.Mongo.AuthSource, c.Mongo.Database),
|
||||
RedisClient: redisx.NewRedis(c.Redis.Host, c.Redis.Pass, c.Redis.DB),
|
||||
MongoClient: mongodb.NewMongoDB(c.Mongo.Uri, c.Mongo.Username, c.Mongo.Password, c.Mongo.AuthSource, c.Mongo.Database),
|
||||
Session: redis_session.NewRedisSession(c.Redis.Host, c.Redis.Pass),
|
||||
Ip2Region: ip2region.NewIP2Region(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,10 +14,10 @@ type AccountLoginRequest struct {
|
||||
type LoginResponse struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
UID string `json:"uid"`
|
||||
Username string `json:"username,optional"`
|
||||
Username string `json:"username,omitempty"`
|
||||
Nickname string `json:"nickname"`
|
||||
Avatar string `json:"avatar"`
|
||||
Status int64 `json:"status"`
|
||||
Status int8 `json:"status"`
|
||||
}
|
||||
|
||||
type PhoneLoginRequest struct {
|
||||
@@ -32,3 +32,9 @@ type ResetPasswordRequest struct {
|
||||
Password string `json:"password"`
|
||||
Repassword string `json:"repassword"`
|
||||
}
|
||||
|
||||
type Response struct {
|
||||
Code int64 `json:"code"`
|
||||
Message string `json:"message"`
|
||||
Data interface{} `json:"data,optional"`
|
||||
}
|
||||
|
||||
27
app/core/api/repository/ip2region/init.go
Normal file
27
app/core/api/repository/ip2region/init.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package ip2region
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/lionsoul2014/ip2region/binding/golang/xdb"
|
||||
)
|
||||
|
||||
// NewIP2Region creates a new IP2Region searcher instance.
|
||||
func NewIP2Region() *xdb.Searcher {
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
dbPath := filepath.Join(cwd, "resources/ip2region", "ip2region.xdb")
|
||||
cBuff, err := xdb.LoadContentFromFile(dbPath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
searcher, err := xdb.NewWithBuffer(cBuff)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return nil
|
||||
}
|
||||
return searcher
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package model
|
||||
package types
|
||||
|
||||
import "github.com/chenmingyong0423/go-mongox/v2"
|
||||
|
||||
@@ -107,8 +107,8 @@ var schemaGraph = func() *sqlgraph.Schema {
|
||||
scaauthuserdevice.FieldBrowser: {Type: field.TypeString, Column: scaauthuserdevice.FieldBrowser},
|
||||
scaauthuserdevice.FieldOperatingSystem: {Type: field.TypeString, Column: scaauthuserdevice.FieldOperatingSystem},
|
||||
scaauthuserdevice.FieldBrowserVersion: {Type: field.TypeString, Column: scaauthuserdevice.FieldBrowserVersion},
|
||||
scaauthuserdevice.FieldMobile: {Type: field.TypeInt, Column: scaauthuserdevice.FieldMobile},
|
||||
scaauthuserdevice.FieldBot: {Type: field.TypeInt, Column: scaauthuserdevice.FieldBot},
|
||||
scaauthuserdevice.FieldMobile: {Type: field.TypeBool, Column: scaauthuserdevice.FieldMobile},
|
||||
scaauthuserdevice.FieldBot: {Type: field.TypeBool, Column: scaauthuserdevice.FieldBot},
|
||||
scaauthuserdevice.FieldMozilla: {Type: field.TypeString, Column: scaauthuserdevice.FieldMozilla},
|
||||
scaauthuserdevice.FieldPlatform: {Type: field.TypeString, Column: scaauthuserdevice.FieldPlatform},
|
||||
scaauthuserdevice.FieldEngineName: {Type: field.TypeString, Column: scaauthuserdevice.FieldEngineName},
|
||||
@@ -622,13 +622,13 @@ func (f *ScaAuthUserDeviceFilter) WhereBrowserVersion(p entql.StringP) {
|
||||
f.Where(p.Field(scaauthuserdevice.FieldBrowserVersion))
|
||||
}
|
||||
|
||||
// WhereMobile applies the entql int predicate on the mobile field.
|
||||
func (f *ScaAuthUserDeviceFilter) WhereMobile(p entql.IntP) {
|
||||
// WhereMobile applies the entql bool predicate on the mobile field.
|
||||
func (f *ScaAuthUserDeviceFilter) WhereMobile(p entql.BoolP) {
|
||||
f.Where(p.Field(scaauthuserdevice.FieldMobile))
|
||||
}
|
||||
|
||||
// WhereBot applies the entql int predicate on the bot field.
|
||||
func (f *ScaAuthUserDeviceFilter) WhereBot(p entql.IntP) {
|
||||
// WhereBot applies the entql bool predicate on the bot field.
|
||||
func (f *ScaAuthUserDeviceFilter) WhereBot(p entql.BoolP) {
|
||||
f.Where(p.Field(scaauthuserdevice.FieldBot))
|
||||
}
|
||||
|
||||
|
||||
@@ -109,8 +109,8 @@ var (
|
||||
{Name: "browser", Type: field.TypeString, Size: 20, Comment: "浏览器"},
|
||||
{Name: "operating_system", Type: field.TypeString, Size: 20, Comment: "操作系统"},
|
||||
{Name: "browser_version", Type: field.TypeString, Size: 20, Comment: "浏览器版本"},
|
||||
{Name: "mobile", Type: field.TypeInt, Comment: "是否为手机 0否1是"},
|
||||
{Name: "bot", Type: field.TypeInt, Comment: "是否为bot 0否1是"},
|
||||
{Name: "mobile", Type: field.TypeBool, Comment: "是否为手机 0否1是"},
|
||||
{Name: "bot", Type: field.TypeBool, Comment: "是否为bot 0否1是"},
|
||||
{Name: "mozilla", Type: field.TypeString, Size: 10, Comment: "火狐版本"},
|
||||
{Name: "platform", Type: field.TypeString, Size: 20, Comment: "平台"},
|
||||
{Name: "engine_name", Type: field.TypeString, Size: 20, Comment: "引擎名称"},
|
||||
|
||||
@@ -3193,10 +3193,8 @@ type ScaAuthUserDeviceMutation struct {
|
||||
browser *string
|
||||
operating_system *string
|
||||
browser_version *string
|
||||
mobile *int
|
||||
addmobile *int
|
||||
bot *int
|
||||
addbot *int
|
||||
mobile *bool
|
||||
bot *bool
|
||||
mozilla *string
|
||||
platform *string
|
||||
engine_name *string
|
||||
@@ -3708,13 +3706,12 @@ func (m *ScaAuthUserDeviceMutation) ResetBrowserVersion() {
|
||||
}
|
||||
|
||||
// SetMobile sets the "mobile" field.
|
||||
func (m *ScaAuthUserDeviceMutation) SetMobile(i int) {
|
||||
m.mobile = &i
|
||||
m.addmobile = nil
|
||||
func (m *ScaAuthUserDeviceMutation) SetMobile(b bool) {
|
||||
m.mobile = &b
|
||||
}
|
||||
|
||||
// Mobile returns the value of the "mobile" field in the mutation.
|
||||
func (m *ScaAuthUserDeviceMutation) Mobile() (r int, exists bool) {
|
||||
func (m *ScaAuthUserDeviceMutation) Mobile() (r bool, exists bool) {
|
||||
v := m.mobile
|
||||
if v == nil {
|
||||
return
|
||||
@@ -3725,7 +3722,7 @@ func (m *ScaAuthUserDeviceMutation) Mobile() (r int, exists bool) {
|
||||
// OldMobile returns the old "mobile" field's value of the ScaAuthUserDevice entity.
|
||||
// If the ScaAuthUserDevice object wasn't provided to the builder, the object is fetched from the database.
|
||||
// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
|
||||
func (m *ScaAuthUserDeviceMutation) OldMobile(ctx context.Context) (v int, err error) {
|
||||
func (m *ScaAuthUserDeviceMutation) OldMobile(ctx context.Context) (v bool, err error) {
|
||||
if !m.op.Is(OpUpdateOne) {
|
||||
return v, errors.New("OldMobile is only allowed on UpdateOne operations")
|
||||
}
|
||||
@@ -3739,38 +3736,18 @@ func (m *ScaAuthUserDeviceMutation) OldMobile(ctx context.Context) (v int, err e
|
||||
return oldValue.Mobile, nil
|
||||
}
|
||||
|
||||
// AddMobile adds i to the "mobile" field.
|
||||
func (m *ScaAuthUserDeviceMutation) AddMobile(i int) {
|
||||
if m.addmobile != nil {
|
||||
*m.addmobile += i
|
||||
} else {
|
||||
m.addmobile = &i
|
||||
}
|
||||
}
|
||||
|
||||
// AddedMobile returns the value that was added to the "mobile" field in this mutation.
|
||||
func (m *ScaAuthUserDeviceMutation) AddedMobile() (r int, exists bool) {
|
||||
v := m.addmobile
|
||||
if v == nil {
|
||||
return
|
||||
}
|
||||
return *v, true
|
||||
}
|
||||
|
||||
// ResetMobile resets all changes to the "mobile" field.
|
||||
func (m *ScaAuthUserDeviceMutation) ResetMobile() {
|
||||
m.mobile = nil
|
||||
m.addmobile = nil
|
||||
}
|
||||
|
||||
// SetBot sets the "bot" field.
|
||||
func (m *ScaAuthUserDeviceMutation) SetBot(i int) {
|
||||
m.bot = &i
|
||||
m.addbot = nil
|
||||
func (m *ScaAuthUserDeviceMutation) SetBot(b bool) {
|
||||
m.bot = &b
|
||||
}
|
||||
|
||||
// Bot returns the value of the "bot" field in the mutation.
|
||||
func (m *ScaAuthUserDeviceMutation) Bot() (r int, exists bool) {
|
||||
func (m *ScaAuthUserDeviceMutation) Bot() (r bool, exists bool) {
|
||||
v := m.bot
|
||||
if v == nil {
|
||||
return
|
||||
@@ -3781,7 +3758,7 @@ func (m *ScaAuthUserDeviceMutation) Bot() (r int, exists bool) {
|
||||
// OldBot returns the old "bot" field's value of the ScaAuthUserDevice entity.
|
||||
// If the ScaAuthUserDevice object wasn't provided to the builder, the object is fetched from the database.
|
||||
// An error is returned if the mutation operation is not UpdateOne, or the database query fails.
|
||||
func (m *ScaAuthUserDeviceMutation) OldBot(ctx context.Context) (v int, err error) {
|
||||
func (m *ScaAuthUserDeviceMutation) OldBot(ctx context.Context) (v bool, err error) {
|
||||
if !m.op.Is(OpUpdateOne) {
|
||||
return v, errors.New("OldBot is only allowed on UpdateOne operations")
|
||||
}
|
||||
@@ -3795,28 +3772,9 @@ func (m *ScaAuthUserDeviceMutation) OldBot(ctx context.Context) (v int, err erro
|
||||
return oldValue.Bot, nil
|
||||
}
|
||||
|
||||
// AddBot adds i to the "bot" field.
|
||||
func (m *ScaAuthUserDeviceMutation) AddBot(i int) {
|
||||
if m.addbot != nil {
|
||||
*m.addbot += i
|
||||
} else {
|
||||
m.addbot = &i
|
||||
}
|
||||
}
|
||||
|
||||
// AddedBot returns the value that was added to the "bot" field in this mutation.
|
||||
func (m *ScaAuthUserDeviceMutation) AddedBot() (r int, exists bool) {
|
||||
v := m.addbot
|
||||
if v == nil {
|
||||
return
|
||||
}
|
||||
return *v, true
|
||||
}
|
||||
|
||||
// ResetBot resets all changes to the "bot" field.
|
||||
func (m *ScaAuthUserDeviceMutation) ResetBot() {
|
||||
m.bot = nil
|
||||
m.addbot = nil
|
||||
}
|
||||
|
||||
// SetMozilla sets the "mozilla" field.
|
||||
@@ -4246,14 +4204,14 @@ func (m *ScaAuthUserDeviceMutation) SetField(name string, value ent.Value) error
|
||||
m.SetBrowserVersion(v)
|
||||
return nil
|
||||
case scaauthuserdevice.FieldMobile:
|
||||
v, ok := value.(int)
|
||||
v, ok := value.(bool)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected type %T for field %s", value, name)
|
||||
}
|
||||
m.SetMobile(v)
|
||||
return nil
|
||||
case scaauthuserdevice.FieldBot:
|
||||
v, ok := value.(int)
|
||||
v, ok := value.(bool)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected type %T for field %s", value, name)
|
||||
}
|
||||
@@ -4298,12 +4256,6 @@ func (m *ScaAuthUserDeviceMutation) AddedFields() []string {
|
||||
if m.adddeleted != nil {
|
||||
fields = append(fields, scaauthuserdevice.FieldDeleted)
|
||||
}
|
||||
if m.addmobile != nil {
|
||||
fields = append(fields, scaauthuserdevice.FieldMobile)
|
||||
}
|
||||
if m.addbot != nil {
|
||||
fields = append(fields, scaauthuserdevice.FieldBot)
|
||||
}
|
||||
return fields
|
||||
}
|
||||
|
||||
@@ -4314,10 +4266,6 @@ func (m *ScaAuthUserDeviceMutation) AddedField(name string) (ent.Value, bool) {
|
||||
switch name {
|
||||
case scaauthuserdevice.FieldDeleted:
|
||||
return m.AddedDeleted()
|
||||
case scaauthuserdevice.FieldMobile:
|
||||
return m.AddedMobile()
|
||||
case scaauthuserdevice.FieldBot:
|
||||
return m.AddedBot()
|
||||
}
|
||||
return nil, false
|
||||
}
|
||||
@@ -4334,20 +4282,6 @@ func (m *ScaAuthUserDeviceMutation) AddField(name string, value ent.Value) error
|
||||
}
|
||||
m.AddDeleted(v)
|
||||
return nil
|
||||
case scaauthuserdevice.FieldMobile:
|
||||
v, ok := value.(int)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected type %T for field %s", value, name)
|
||||
}
|
||||
m.AddMobile(v)
|
||||
return nil
|
||||
case scaauthuserdevice.FieldBot:
|
||||
v, ok := value.(int)
|
||||
if !ok {
|
||||
return fmt.Errorf("unexpected type %T for field %s", value, name)
|
||||
}
|
||||
m.AddBot(v)
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("unknown ScaAuthUserDevice numeric field %s", name)
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuser"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthuserdevice"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/scaauthusersocial"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/schema"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -16,7 +16,7 @@ import (
|
||||
// (default values, validators, hooks and policies) and stitches it
|
||||
// to their package variables.
|
||||
func init() {
|
||||
scaauthpermissionruleFields := schema.ScaAuthPermissionRule{}.Fields()
|
||||
scaauthpermissionruleFields := model.ScaAuthPermissionRule{}.Fields()
|
||||
_ = scaauthpermissionruleFields
|
||||
// scaauthpermissionruleDescPtype is the schema descriptor for ptype field.
|
||||
scaauthpermissionruleDescPtype := scaauthpermissionruleFields[1].Descriptor()
|
||||
@@ -46,10 +46,10 @@ func init() {
|
||||
scaauthpermissionruleDescV5 := scaauthpermissionruleFields[7].Descriptor()
|
||||
// scaauthpermissionrule.V5Validator is a validator for the "v5" field. It is called by the builders before save.
|
||||
scaauthpermissionrule.V5Validator = scaauthpermissionruleDescV5.Validators[0].(func(string) error)
|
||||
scaauthroleMixin := schema.ScaAuthRole{}.Mixin()
|
||||
scaauthroleMixin := model.ScaAuthRole{}.Mixin()
|
||||
scaauthroleMixinFields0 := scaauthroleMixin[0].Fields()
|
||||
_ = scaauthroleMixinFields0
|
||||
scaauthroleFields := schema.ScaAuthRole{}.Fields()
|
||||
scaauthroleFields := model.ScaAuthRole{}.Fields()
|
||||
_ = scaauthroleFields
|
||||
// scaauthroleDescCreatedAt is the schema descriptor for created_at field.
|
||||
scaauthroleDescCreatedAt := scaauthroleMixinFields0[0].Descriptor()
|
||||
@@ -75,10 +75,10 @@ func init() {
|
||||
scaauthroleDescRoleKey := scaauthroleFields[2].Descriptor()
|
||||
// scaauthrole.RoleKeyValidator is a validator for the "role_key" field. It is called by the builders before save.
|
||||
scaauthrole.RoleKeyValidator = scaauthroleDescRoleKey.Validators[0].(func(string) error)
|
||||
scaauthuserMixin := schema.ScaAuthUser{}.Mixin()
|
||||
scaauthuserMixin := model.ScaAuthUser{}.Mixin()
|
||||
scaauthuserMixinFields0 := scaauthuserMixin[0].Fields()
|
||||
_ = scaauthuserMixinFields0
|
||||
scaauthuserFields := schema.ScaAuthUser{}.Fields()
|
||||
scaauthuserFields := model.ScaAuthUser{}.Fields()
|
||||
_ = scaauthuserFields
|
||||
// scaauthuserDescCreatedAt is the schema descriptor for created_at field.
|
||||
scaauthuserDescCreatedAt := scaauthuserMixinFields0[0].Descriptor()
|
||||
@@ -144,10 +144,10 @@ func init() {
|
||||
scaauthuserDescCompany := scaauthuserFields[13].Descriptor()
|
||||
// scaauthuser.CompanyValidator is a validator for the "company" field. It is called by the builders before save.
|
||||
scaauthuser.CompanyValidator = scaauthuserDescCompany.Validators[0].(func(string) error)
|
||||
scaauthuserdeviceMixin := schema.ScaAuthUserDevice{}.Mixin()
|
||||
scaauthuserdeviceMixin := model.ScaAuthUserDevice{}.Mixin()
|
||||
scaauthuserdeviceMixinFields0 := scaauthuserdeviceMixin[0].Fields()
|
||||
_ = scaauthuserdeviceMixinFields0
|
||||
scaauthuserdeviceFields := schema.ScaAuthUserDevice{}.Fields()
|
||||
scaauthuserdeviceFields := model.ScaAuthUserDevice{}.Fields()
|
||||
_ = scaauthuserdeviceFields
|
||||
// scaauthuserdeviceDescCreatedAt is the schema descriptor for created_at field.
|
||||
scaauthuserdeviceDescCreatedAt := scaauthuserdeviceMixinFields0[0].Descriptor()
|
||||
@@ -209,10 +209,10 @@ func init() {
|
||||
scaauthuserdeviceDescEngineVersion := scaauthuserdeviceFields[13].Descriptor()
|
||||
// scaauthuserdevice.EngineVersionValidator is a validator for the "engine_version" field. It is called by the builders before save.
|
||||
scaauthuserdevice.EngineVersionValidator = scaauthuserdeviceDescEngineVersion.Validators[0].(func(string) error)
|
||||
scaauthusersocialMixin := schema.ScaAuthUserSocial{}.Mixin()
|
||||
scaauthusersocialMixin := model.ScaAuthUserSocial{}.Mixin()
|
||||
scaauthusersocialMixinFields0 := scaauthusersocialMixin[0].Fields()
|
||||
_ = scaauthusersocialMixinFields0
|
||||
scaauthusersocialFields := schema.ScaAuthUserSocial{}.Fields()
|
||||
scaauthusersocialFields := model.ScaAuthUserSocial{}.Fields()
|
||||
_ = scaauthusersocialFields
|
||||
// scaauthusersocialDescCreatedAt is the schema descriptor for created_at field.
|
||||
scaauthusersocialDescCreatedAt := scaauthusersocialMixinFields0[0].Descriptor()
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
package runtime
|
||||
|
||||
// The schema-stitching logic is generated in schisandra-album-cloud-microservices/app/main/api/repository/mysql/ent/runtime.go
|
||||
// The schema-stitching logic is generated in schisandra-album-cloud-microservices/app/core/api/repository/mysql/ent/runtime.go
|
||||
|
||||
const (
|
||||
Version = "v0.14.1" // Version of ent codegen.
|
||||
|
||||
@@ -40,9 +40,9 @@ type ScaAuthUserDevice struct {
|
||||
// 浏览器版本
|
||||
BrowserVersion string `json:"browser_version,omitempty"`
|
||||
// 是否为手机 0否1是
|
||||
Mobile int `json:"mobile,omitempty"`
|
||||
Mobile bool `json:"mobile,omitempty"`
|
||||
// 是否为bot 0否1是
|
||||
Bot int `json:"bot,omitempty"`
|
||||
Bot bool `json:"bot,omitempty"`
|
||||
// 火狐版本
|
||||
Mozilla string `json:"mozilla,omitempty"`
|
||||
// 平台
|
||||
@@ -83,7 +83,9 @@ func (*ScaAuthUserDevice) scanValues(columns []string) ([]any, error) {
|
||||
values := make([]any, len(columns))
|
||||
for i := range columns {
|
||||
switch columns[i] {
|
||||
case scaauthuserdevice.FieldID, scaauthuserdevice.FieldDeleted, scaauthuserdevice.FieldMobile, scaauthuserdevice.FieldBot:
|
||||
case scaauthuserdevice.FieldMobile, scaauthuserdevice.FieldBot:
|
||||
values[i] = new(sql.NullBool)
|
||||
case scaauthuserdevice.FieldID, scaauthuserdevice.FieldDeleted:
|
||||
values[i] = new(sql.NullInt64)
|
||||
case scaauthuserdevice.FieldUserID, scaauthuserdevice.FieldIP, scaauthuserdevice.FieldLocation, scaauthuserdevice.FieldAgent, scaauthuserdevice.FieldBrowser, scaauthuserdevice.FieldOperatingSystem, scaauthuserdevice.FieldBrowserVersion, scaauthuserdevice.FieldMozilla, scaauthuserdevice.FieldPlatform, scaauthuserdevice.FieldEngineName, scaauthuserdevice.FieldEngineVersion:
|
||||
values[i] = new(sql.NullString)
|
||||
@@ -173,16 +175,16 @@ func (saud *ScaAuthUserDevice) assignValues(columns []string, values []any) erro
|
||||
saud.BrowserVersion = value.String
|
||||
}
|
||||
case scaauthuserdevice.FieldMobile:
|
||||
if value, ok := values[i].(*sql.NullInt64); !ok {
|
||||
if value, ok := values[i].(*sql.NullBool); !ok {
|
||||
return fmt.Errorf("unexpected type %T for field mobile", values[i])
|
||||
} else if value.Valid {
|
||||
saud.Mobile = int(value.Int64)
|
||||
saud.Mobile = value.Bool
|
||||
}
|
||||
case scaauthuserdevice.FieldBot:
|
||||
if value, ok := values[i].(*sql.NullInt64); !ok {
|
||||
if value, ok := values[i].(*sql.NullBool); !ok {
|
||||
return fmt.Errorf("unexpected type %T for field bot", values[i])
|
||||
} else if value.Valid {
|
||||
saud.Bot = int(value.Int64)
|
||||
saud.Bot = value.Bool
|
||||
}
|
||||
case scaauthuserdevice.FieldMozilla:
|
||||
if value, ok := values[i].(*sql.NullString); !ok {
|
||||
|
||||
@@ -106,12 +106,12 @@ func BrowserVersion(v string) predicate.ScaAuthUserDevice {
|
||||
}
|
||||
|
||||
// Mobile applies equality check predicate on the "mobile" field. It's identical to MobileEQ.
|
||||
func Mobile(v int) predicate.ScaAuthUserDevice {
|
||||
func Mobile(v bool) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldEQ(FieldMobile, v))
|
||||
}
|
||||
|
||||
// Bot applies equality check predicate on the "bot" field. It's identical to BotEQ.
|
||||
func Bot(v int) predicate.ScaAuthUserDevice {
|
||||
func Bot(v bool) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldEQ(FieldBot, v))
|
||||
}
|
||||
|
||||
@@ -721,85 +721,25 @@ func BrowserVersionContainsFold(v string) predicate.ScaAuthUserDevice {
|
||||
}
|
||||
|
||||
// MobileEQ applies the EQ predicate on the "mobile" field.
|
||||
func MobileEQ(v int) predicate.ScaAuthUserDevice {
|
||||
func MobileEQ(v bool) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldEQ(FieldMobile, v))
|
||||
}
|
||||
|
||||
// MobileNEQ applies the NEQ predicate on the "mobile" field.
|
||||
func MobileNEQ(v int) predicate.ScaAuthUserDevice {
|
||||
func MobileNEQ(v bool) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldNEQ(FieldMobile, v))
|
||||
}
|
||||
|
||||
// MobileIn applies the In predicate on the "mobile" field.
|
||||
func MobileIn(vs ...int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldIn(FieldMobile, vs...))
|
||||
}
|
||||
|
||||
// MobileNotIn applies the NotIn predicate on the "mobile" field.
|
||||
func MobileNotIn(vs ...int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldNotIn(FieldMobile, vs...))
|
||||
}
|
||||
|
||||
// MobileGT applies the GT predicate on the "mobile" field.
|
||||
func MobileGT(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldGT(FieldMobile, v))
|
||||
}
|
||||
|
||||
// MobileGTE applies the GTE predicate on the "mobile" field.
|
||||
func MobileGTE(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldGTE(FieldMobile, v))
|
||||
}
|
||||
|
||||
// MobileLT applies the LT predicate on the "mobile" field.
|
||||
func MobileLT(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldLT(FieldMobile, v))
|
||||
}
|
||||
|
||||
// MobileLTE applies the LTE predicate on the "mobile" field.
|
||||
func MobileLTE(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldLTE(FieldMobile, v))
|
||||
}
|
||||
|
||||
// BotEQ applies the EQ predicate on the "bot" field.
|
||||
func BotEQ(v int) predicate.ScaAuthUserDevice {
|
||||
func BotEQ(v bool) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldEQ(FieldBot, v))
|
||||
}
|
||||
|
||||
// BotNEQ applies the NEQ predicate on the "bot" field.
|
||||
func BotNEQ(v int) predicate.ScaAuthUserDevice {
|
||||
func BotNEQ(v bool) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldNEQ(FieldBot, v))
|
||||
}
|
||||
|
||||
// BotIn applies the In predicate on the "bot" field.
|
||||
func BotIn(vs ...int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldIn(FieldBot, vs...))
|
||||
}
|
||||
|
||||
// BotNotIn applies the NotIn predicate on the "bot" field.
|
||||
func BotNotIn(vs ...int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldNotIn(FieldBot, vs...))
|
||||
}
|
||||
|
||||
// BotGT applies the GT predicate on the "bot" field.
|
||||
func BotGT(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldGT(FieldBot, v))
|
||||
}
|
||||
|
||||
// BotGTE applies the GTE predicate on the "bot" field.
|
||||
func BotGTE(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldGTE(FieldBot, v))
|
||||
}
|
||||
|
||||
// BotLT applies the LT predicate on the "bot" field.
|
||||
func BotLT(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldLT(FieldBot, v))
|
||||
}
|
||||
|
||||
// BotLTE applies the LTE predicate on the "bot" field.
|
||||
func BotLTE(v int) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldLTE(FieldBot, v))
|
||||
}
|
||||
|
||||
// MozillaEQ applies the EQ predicate on the "mozilla" field.
|
||||
func MozillaEQ(v string) predicate.ScaAuthUserDevice {
|
||||
return predicate.ScaAuthUserDevice(sql.FieldEQ(FieldMozilla, v))
|
||||
|
||||
@@ -106,14 +106,14 @@ func (saudc *ScaAuthUserDeviceCreate) SetBrowserVersion(s string) *ScaAuthUserDe
|
||||
}
|
||||
|
||||
// SetMobile sets the "mobile" field.
|
||||
func (saudc *ScaAuthUserDeviceCreate) SetMobile(i int) *ScaAuthUserDeviceCreate {
|
||||
saudc.mutation.SetMobile(i)
|
||||
func (saudc *ScaAuthUserDeviceCreate) SetMobile(b bool) *ScaAuthUserDeviceCreate {
|
||||
saudc.mutation.SetMobile(b)
|
||||
return saudc
|
||||
}
|
||||
|
||||
// SetBot sets the "bot" field.
|
||||
func (saudc *ScaAuthUserDeviceCreate) SetBot(i int) *ScaAuthUserDeviceCreate {
|
||||
saudc.mutation.SetBot(i)
|
||||
func (saudc *ScaAuthUserDeviceCreate) SetBot(b bool) *ScaAuthUserDeviceCreate {
|
||||
saudc.mutation.SetBot(b)
|
||||
return saudc
|
||||
}
|
||||
|
||||
@@ -395,11 +395,11 @@ func (saudc *ScaAuthUserDeviceCreate) createSpec() (*ScaAuthUserDevice, *sqlgrap
|
||||
_node.BrowserVersion = value
|
||||
}
|
||||
if value, ok := saudc.mutation.Mobile(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldMobile, field.TypeInt, value)
|
||||
_spec.SetField(scaauthuserdevice.FieldMobile, field.TypeBool, value)
|
||||
_node.Mobile = value
|
||||
}
|
||||
if value, ok := saudc.mutation.Bot(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldBot, field.TypeInt, value)
|
||||
_spec.SetField(scaauthuserdevice.FieldBot, field.TypeBool, value)
|
||||
_node.Bot = value
|
||||
}
|
||||
if value, ok := saudc.mutation.Mozilla(); ok {
|
||||
|
||||
@@ -161,47 +161,33 @@ func (saudu *ScaAuthUserDeviceUpdate) SetNillableBrowserVersion(s *string) *ScaA
|
||||
}
|
||||
|
||||
// SetMobile sets the "mobile" field.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetMobile(i int) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.ResetMobile()
|
||||
saudu.mutation.SetMobile(i)
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetMobile(b bool) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.SetMobile(b)
|
||||
return saudu
|
||||
}
|
||||
|
||||
// SetNillableMobile sets the "mobile" field if the given value is not nil.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetNillableMobile(i *int) *ScaAuthUserDeviceUpdate {
|
||||
if i != nil {
|
||||
saudu.SetMobile(*i)
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetNillableMobile(b *bool) *ScaAuthUserDeviceUpdate {
|
||||
if b != nil {
|
||||
saudu.SetMobile(*b)
|
||||
}
|
||||
return saudu
|
||||
}
|
||||
|
||||
// AddMobile adds i to the "mobile" field.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) AddMobile(i int) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.AddMobile(i)
|
||||
return saudu
|
||||
}
|
||||
|
||||
// SetBot sets the "bot" field.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetBot(i int) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.ResetBot()
|
||||
saudu.mutation.SetBot(i)
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetBot(b bool) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.SetBot(b)
|
||||
return saudu
|
||||
}
|
||||
|
||||
// SetNillableBot sets the "bot" field if the given value is not nil.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetNillableBot(i *int) *ScaAuthUserDeviceUpdate {
|
||||
if i != nil {
|
||||
saudu.SetBot(*i)
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetNillableBot(b *bool) *ScaAuthUserDeviceUpdate {
|
||||
if b != nil {
|
||||
saudu.SetBot(*b)
|
||||
}
|
||||
return saudu
|
||||
}
|
||||
|
||||
// AddBot adds i to the "bot" field.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) AddBot(i int) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.AddBot(i)
|
||||
return saudu
|
||||
}
|
||||
|
||||
// SetMozilla sets the "mozilla" field.
|
||||
func (saudu *ScaAuthUserDeviceUpdate) SetMozilla(s string) *ScaAuthUserDeviceUpdate {
|
||||
saudu.mutation.SetMozilla(s)
|
||||
@@ -435,16 +421,10 @@ func (saudu *ScaAuthUserDeviceUpdate) sqlSave(ctx context.Context) (n int, err e
|
||||
_spec.SetField(scaauthuserdevice.FieldBrowserVersion, field.TypeString, value)
|
||||
}
|
||||
if value, ok := saudu.mutation.Mobile(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldMobile, field.TypeInt, value)
|
||||
}
|
||||
if value, ok := saudu.mutation.AddedMobile(); ok {
|
||||
_spec.AddField(scaauthuserdevice.FieldMobile, field.TypeInt, value)
|
||||
_spec.SetField(scaauthuserdevice.FieldMobile, field.TypeBool, value)
|
||||
}
|
||||
if value, ok := saudu.mutation.Bot(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldBot, field.TypeInt, value)
|
||||
}
|
||||
if value, ok := saudu.mutation.AddedBot(); ok {
|
||||
_spec.AddField(scaauthuserdevice.FieldBot, field.TypeInt, value)
|
||||
_spec.SetField(scaauthuserdevice.FieldBot, field.TypeBool, value)
|
||||
}
|
||||
if value, ok := saudu.mutation.Mozilla(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldMozilla, field.TypeString, value)
|
||||
@@ -639,47 +619,33 @@ func (sauduo *ScaAuthUserDeviceUpdateOne) SetNillableBrowserVersion(s *string) *
|
||||
}
|
||||
|
||||
// SetMobile sets the "mobile" field.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetMobile(i int) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.ResetMobile()
|
||||
sauduo.mutation.SetMobile(i)
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetMobile(b bool) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.SetMobile(b)
|
||||
return sauduo
|
||||
}
|
||||
|
||||
// SetNillableMobile sets the "mobile" field if the given value is not nil.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetNillableMobile(i *int) *ScaAuthUserDeviceUpdateOne {
|
||||
if i != nil {
|
||||
sauduo.SetMobile(*i)
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetNillableMobile(b *bool) *ScaAuthUserDeviceUpdateOne {
|
||||
if b != nil {
|
||||
sauduo.SetMobile(*b)
|
||||
}
|
||||
return sauduo
|
||||
}
|
||||
|
||||
// AddMobile adds i to the "mobile" field.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) AddMobile(i int) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.AddMobile(i)
|
||||
return sauduo
|
||||
}
|
||||
|
||||
// SetBot sets the "bot" field.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetBot(i int) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.ResetBot()
|
||||
sauduo.mutation.SetBot(i)
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetBot(b bool) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.SetBot(b)
|
||||
return sauduo
|
||||
}
|
||||
|
||||
// SetNillableBot sets the "bot" field if the given value is not nil.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetNillableBot(i *int) *ScaAuthUserDeviceUpdateOne {
|
||||
if i != nil {
|
||||
sauduo.SetBot(*i)
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetNillableBot(b *bool) *ScaAuthUserDeviceUpdateOne {
|
||||
if b != nil {
|
||||
sauduo.SetBot(*b)
|
||||
}
|
||||
return sauduo
|
||||
}
|
||||
|
||||
// AddBot adds i to the "bot" field.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) AddBot(i int) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.AddBot(i)
|
||||
return sauduo
|
||||
}
|
||||
|
||||
// SetMozilla sets the "mozilla" field.
|
||||
func (sauduo *ScaAuthUserDeviceUpdateOne) SetMozilla(s string) *ScaAuthUserDeviceUpdateOne {
|
||||
sauduo.mutation.SetMozilla(s)
|
||||
@@ -943,16 +909,10 @@ func (sauduo *ScaAuthUserDeviceUpdateOne) sqlSave(ctx context.Context) (_node *S
|
||||
_spec.SetField(scaauthuserdevice.FieldBrowserVersion, field.TypeString, value)
|
||||
}
|
||||
if value, ok := sauduo.mutation.Mobile(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldMobile, field.TypeInt, value)
|
||||
}
|
||||
if value, ok := sauduo.mutation.AddedMobile(); ok {
|
||||
_spec.AddField(scaauthuserdevice.FieldMobile, field.TypeInt, value)
|
||||
_spec.SetField(scaauthuserdevice.FieldMobile, field.TypeBool, value)
|
||||
}
|
||||
if value, ok := sauduo.mutation.Bot(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldBot, field.TypeInt, value)
|
||||
}
|
||||
if value, ok := sauduo.mutation.AddedBot(); ok {
|
||||
_spec.AddField(scaauthuserdevice.FieldBot, field.TypeInt, value)
|
||||
_spec.SetField(scaauthuserdevice.FieldBot, field.TypeBool, value)
|
||||
}
|
||||
if value, ok := sauduo.mutation.Mozilla(); ok {
|
||||
_spec.SetField(scaauthuserdevice.FieldMozilla, field.TypeString, value)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
package mysql
|
||||
|
||||
//go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --feature privacy,entql --target ./ent ./schema
|
||||
//go:generate go run -mod=mod entgo.io/ent/cmd/ent generate --feature privacy,entql --target ./ent ./model
|
||||
|
||||
@@ -29,7 +29,7 @@ func NewMySQL(url string) *ent.Client {
|
||||
defer client.Close()
|
||||
|
||||
if err = client.Schema.Create(context.Background()); err != nil {
|
||||
log.Panicf("failed creating schema resources: %v", err)
|
||||
log.Panicf("failed creating model resources: %v", err)
|
||||
}
|
||||
return client
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package schema
|
||||
package model
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"entgo.io/ent/schema/field"
|
||||
)
|
||||
|
||||
// ScaAuthPermissionRule holds the schema definition for the ScaAuthPermissionRule entity.
|
||||
// ScaAuthPermissionRule holds the model definition for the ScaAuthPermissionRule entity.
|
||||
type ScaAuthPermissionRule struct {
|
||||
ent.Schema
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package schema
|
||||
package model
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
@@ -8,10 +8,10 @@ import (
|
||||
"entgo.io/ent/schema/edge"
|
||||
"entgo.io/ent/schema/field"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/schema/mixin"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model/mixin"
|
||||
)
|
||||
|
||||
// ScaAuthRole holds the schema definition for the ScaAuthRole entity.
|
||||
// ScaAuthRole holds the model definition for the ScaAuthRole entity.
|
||||
type ScaAuthRole struct {
|
||||
ent.Schema
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package schema
|
||||
package model
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
@@ -9,10 +9,10 @@ import (
|
||||
"entgo.io/ent/schema/field"
|
||||
"entgo.io/ent/schema/index"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/schema/mixin"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model/mixin"
|
||||
)
|
||||
|
||||
// ScaAuthUser holds the schema definition for the ScaAuthUser entity.
|
||||
// ScaAuthUser holds the model definition for the ScaAuthUser entity.
|
||||
type ScaAuthUser struct {
|
||||
ent.Schema
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package schema
|
||||
package model
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
@@ -9,10 +9,10 @@ import (
|
||||
"entgo.io/ent/schema/field"
|
||||
"entgo.io/ent/schema/index"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/schema/mixin"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model/mixin"
|
||||
)
|
||||
|
||||
// ScaAuthUserDevice holds the schema definition for the ScaAuthUserDevice entity.
|
||||
// ScaAuthUserDevice holds the model definition for the ScaAuthUserDevice entity.
|
||||
type ScaAuthUserDevice struct {
|
||||
ent.Schema
|
||||
}
|
||||
@@ -53,9 +53,9 @@ func (ScaAuthUserDevice) Fields() []ent.Field {
|
||||
field.String("browser_version").
|
||||
MaxLen(20).
|
||||
Comment("浏览器版本"),
|
||||
field.Int("mobile").
|
||||
field.Bool("mobile").
|
||||
Comment("是否为手机 0否1是"),
|
||||
field.Int("bot").
|
||||
field.Bool("bot").
|
||||
Comment("是否为bot 0否1是"),
|
||||
field.String("mozilla").
|
||||
MaxLen(10).
|
||||
@@ -1,4 +1,4 @@
|
||||
package schema
|
||||
package model
|
||||
|
||||
import (
|
||||
"entgo.io/ent"
|
||||
@@ -9,10 +9,10 @@ import (
|
||||
"entgo.io/ent/schema/field"
|
||||
"entgo.io/ent/schema/index"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/schema/mixin"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/mysql/model/mixin"
|
||||
)
|
||||
|
||||
// ScaAuthUserSocial holds the schema definition for the ScaAuthUserSocial entity.
|
||||
// ScaAuthUserSocial holds the model definition for the ScaAuthUserSocial entity.
|
||||
type ScaAuthUserSocial struct {
|
||||
ent.Schema
|
||||
}
|
||||
38
app/core/api/repository/redis_session/init.go
Normal file
38
app/core/api/repository/redis_session/init.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package redis_session
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/gob"
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/sessions"
|
||||
"github.com/rbcervilla/redisstore/v9"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"github.com/zeromicro/go-zero/core/logc"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/core/api/common/constant"
|
||||
"schisandra-album-cloud-microservices/app/core/api/repository/redis_session/types"
|
||||
)
|
||||
|
||||
func NewRedisSession(addr string, password string) *redisstore.RedisStore {
|
||||
client := redis.NewClient(&redis.Options{
|
||||
Addr: addr,
|
||||
Password: password,
|
||||
DB: 0,
|
||||
})
|
||||
store, err := redisstore.NewRedisStore(context.Background(), client)
|
||||
if err != nil {
|
||||
logc.Error(context.Background(), err)
|
||||
}
|
||||
store.KeyPrefix(constant.UserSessionPrefix)
|
||||
store.Options(sessions.Options{
|
||||
Path: "/",
|
||||
// Domain: global.CONFIG.System.Web,
|
||||
MaxAge: 86400 * 7,
|
||||
HttpOnly: true,
|
||||
Secure: true,
|
||||
SameSite: http.SameSiteLaxMode,
|
||||
})
|
||||
gob.Register(types.SessionData{})
|
||||
return store
|
||||
}
|
||||
7
app/core/api/repository/redis_session/types/session.go
Normal file
7
app/core/api/repository/redis_session/types/session.go
Normal file
@@ -0,0 +1,7 @@
|
||||
package types
|
||||
|
||||
// SessionData 返回数据
|
||||
type SessionData struct {
|
||||
RefreshToken string `json:"refresh_token"`
|
||||
UID string `json:"uid"`
|
||||
}
|
||||
12
app/core/api/repository/redisx/init.go
Normal file
12
app/core/api/repository/redisx/init.go
Normal file
@@ -0,0 +1,12 @@
|
||||
package redisx
|
||||
|
||||
import "github.com/redis/go-redis/v9"
|
||||
|
||||
func NewRedis(host, password string, db int) *redis.Client {
|
||||
rdb := redis.NewClient(&redis.Options{
|
||||
Addr: host,
|
||||
Password: password,
|
||||
DB: db,
|
||||
})
|
||||
return rdb
|
||||
}
|
||||
6
app/core/api/repository/redisx/types/redis_token.go
Normal file
6
app/core/api/repository/redisx/types/redis_token.go
Normal file
@@ -0,0 +1,6 @@
|
||||
package types
|
||||
|
||||
type RedisToken struct {
|
||||
AccessToken string `json:"access_token"`
|
||||
UID string `json:"uid"`
|
||||
}
|
||||
BIN
app/core/api/resources/ip2region/ip2region.xdb
Normal file
BIN
app/core/api/resources/ip2region/ip2region.xdb
Normal file
Binary file not shown.
7
app/core/api/resources/language/active.en.toml
Normal file
7
app/core/api/resources/language/active.en.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
[captcha]
|
||||
verificationFailure = "verification failure!"
|
||||
[login]
|
||||
invalidAccount = "invalid account!"
|
||||
notFoundAccount = "account not found!"
|
||||
invalidPassword = "invalid password!"
|
||||
loginFailed = "login failed!"
|
||||
7
app/core/api/resources/language/active.zh.toml
Normal file
7
app/core/api/resources/language/active.zh.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
[captcha]
|
||||
verificationFailure = "验证失败!"
|
||||
[login]
|
||||
invalidAccount = "无效的账号!"
|
||||
notFoundAccount = "未找到账号!"
|
||||
invalidPassword = "密码错误!"
|
||||
loginFailed = "登录失败!"
|
||||
48603
app/core/api/resources/sensitive/dict1.txt
Normal file
48603
app/core/api/resources/sensitive/dict1.txt
Normal file
File diff suppressed because it is too large
Load Diff
64454
app/core/api/resources/sensitive/dict2.txt
Normal file
64454
app/core/api/resources/sensitive/dict2.txt
Normal file
File diff suppressed because it is too large
Load Diff
170
app/core/api/resources/sensitive/其他词库.txt
Normal file
170
app/core/api/resources/sensitive/其他词库.txt
Normal file
@@ -0,0 +1,170 @@
|
||||
穴海
|
||||
协警
|
||||
纳米比亚
|
||||
专业调查
|
||||
有华龙
|
||||
jq的来
|
||||
电信路
|
||||
党鞭
|
||||
第一夫人
|
||||
黄巨
|
||||
荡尽天下
|
||||
家元自称玉皇大帝
|
||||
主席李世民
|
||||
何祚庥
|
||||
刘刚
|
||||
不要沉默
|
||||
后勤集团
|
||||
食堂涨价
|
||||
发国难财
|
||||
浪漫邂逅
|
||||
红满堂
|
||||
张小洋
|
||||
炸学校
|
||||
子宫
|
||||
叫晶晶的女孩
|
||||
回派
|
||||
社会黑暗
|
||||
国之母
|
||||
国母
|
||||
国姆
|
||||
东方微点
|
||||
震惊全球
|
||||
nowto
|
||||
chengdu
|
||||
徐明
|
||||
六月飞雪
|
||||
暴力虐待
|
||||
暴力袭击
|
||||
天府广场
|
||||
粮荒
|
||||
洗脑班
|
||||
李愚蠢
|
||||
中国猪
|
||||
台湾猪
|
||||
进化不完全的生命体
|
||||
震死他们
|
||||
|
||||
10010
|
||||
10086
|
||||
10159
|
||||
13423205670
|
||||
13725516608
|
||||
13875448369
|
||||
15112886328
|
||||
189
|
||||
6-4tianwang
|
||||
64
|
||||
68170802
|
||||
6a6.net
|
||||
7.31
|
||||
7.310
|
||||
89-64cdjp
|
||||
8945212
|
||||
23条
|
||||
259o
|
||||
381929279
|
||||
3P
|
||||
4-Jun
|
||||
AV
|
||||
BJ
|
||||
CBD
|
||||
CCTV
|
||||
CDMA
|
||||
DICK
|
||||
Dick
|
||||
FLG
|
||||
FOCUSC
|
||||
FUCK
|
||||
Fuck
|
||||
GAMEMASTER
|
||||
GCD
|
||||
GameMaster
|
||||
IP17908
|
||||
KEY_TEXT
|
||||
NMD
|
||||
QQb
|
||||
SM
|
||||
Soccer01.com
|
||||
TMD
|
||||
UltraSurf
|
||||
bignews
|
||||
Bitch
|
||||
boxun
|
||||
Chinaliberal
|
||||
chinamz
|
||||
Chinesenewsnet
|
||||
cnd
|
||||
Creaders
|
||||
dafa
|
||||
Dajiyuan
|
||||
df'd
|
||||
Dfdz
|
||||
die
|
||||
dpp
|
||||
Freechina
|
||||
freedom
|
||||
Freenet
|
||||
fuck
|
||||
fuck your mother
|
||||
hongzhi
|
||||
hrichina
|
||||
huanet
|
||||
hypermart.net
|
||||
incest
|
||||
jiangdongriji
|
||||
l2590803027
|
||||
lihongzhi
|
||||
ma
|
||||
making
|
||||
minghui
|
||||
minghuinews
|
||||
nacb
|
||||
na?ve
|
||||
nmis
|
||||
paper64
|
||||
peacehall
|
||||
piao
|
||||
playboy
|
||||
renminbao
|
||||
renmingbao
|
||||
rfa
|
||||
safeweb
|
||||
sex
|
||||
shit
|
||||
simple
|
||||
svdc
|
||||
taip
|
||||
tibetalk
|
||||
triangle
|
||||
triangleboy
|
||||
txwq.net
|
||||
unixbox
|
||||
ustibet
|
||||
voa
|
||||
voachinese
|
||||
wangce
|
||||
wstaiji
|
||||
www
|
||||
xinsheng
|
||||
yuming
|
||||
yy通讯录
|
||||
zhengjian
|
||||
zhengjianwang
|
||||
zhenshanren
|
||||
zhuanfalu
|
||||
zhuanfalun
|
||||
八九
|
||||
八老
|
||||
fuck
|
||||
duck
|
||||
shit
|
||||
chicken
|
||||
fowl
|
||||
sex
|
||||
sexy
|
||||
prostitute
|
||||
whore
|
||||
harlot
|
||||
hooker
|
||||
gender
|
||||
557
app/core/api/resources/sensitive/反动词库.txt
Normal file
557
app/core/api/resources/sensitive/反动词库.txt
Normal file
@@ -0,0 +1,557 @@
|
||||
腐败中国
|
||||
三个呆婊
|
||||
你办事我放心
|
||||
社会主义灭亡
|
||||
打倒中国
|
||||
打倒共产党
|
||||
打倒共产主义
|
||||
打倒胡锦涛
|
||||
打倒江泽民
|
||||
打倒江主席
|
||||
打倒李鹏
|
||||
打倒罗干
|
||||
打倒温家宝
|
||||
打倒中共
|
||||
打倒朱镕
|
||||
抵制共产党
|
||||
抵制共产主义
|
||||
抵制胡锦涛
|
||||
抵制江泽民
|
||||
抵制江主席
|
||||
抵制李鹏
|
||||
抵制罗干
|
||||
抵制温家宝
|
||||
抵制中共
|
||||
抵制朱镕基
|
||||
灭亡中国
|
||||
亡党亡国
|
||||
粉碎四人帮
|
||||
激流中国
|
||||
特供
|
||||
特贡
|
||||
特共
|
||||
zf大楼
|
||||
殃视
|
||||
贪污腐败
|
||||
强制拆除
|
||||
形式主义
|
||||
政治风波
|
||||
太子党
|
||||
上海帮
|
||||
北京帮
|
||||
清华帮
|
||||
红色贵族
|
||||
权贵集团
|
||||
河蟹社会
|
||||
喝血社会
|
||||
九风
|
||||
9风
|
||||
十七大
|
||||
十7大
|
||||
17da
|
||||
九学
|
||||
9学
|
||||
四风
|
||||
4风
|
||||
双规
|
||||
南街村
|
||||
最淫官员
|
||||
警匪
|
||||
官匪
|
||||
独夫民贼
|
||||
官商勾结
|
||||
城管暴力执法
|
||||
强制捐款
|
||||
毒豺
|
||||
一党执政
|
||||
一党专制
|
||||
一党专政
|
||||
专制政权
|
||||
宪法法院
|
||||
胡平
|
||||
苏晓康
|
||||
贺卫方
|
||||
谭作人
|
||||
焦国标
|
||||
万润南
|
||||
张志新
|
||||
辛灝年
|
||||
高勤荣
|
||||
王炳章
|
||||
高智晟
|
||||
司马璐
|
||||
刘晓竹
|
||||
刘宾雁
|
||||
魏京生
|
||||
寻找林昭的灵魂
|
||||
别梦成灰
|
||||
谁是新中国
|
||||
讨伐中宣部
|
||||
异议人士
|
||||
民运人士
|
||||
启蒙派
|
||||
选国家主席
|
||||
民一主
|
||||
min主
|
||||
民竹
|
||||
民珠
|
||||
民猪
|
||||
chinesedemocracy
|
||||
大赦国际
|
||||
国际特赦
|
||||
da选
|
||||
投公
|
||||
公头
|
||||
宪政
|
||||
平反
|
||||
党章
|
||||
维权
|
||||
昝爱宗
|
||||
宪章
|
||||
08宪
|
||||
08xz
|
||||
抿主
|
||||
敏主
|
||||
人拳
|
||||
人木又
|
||||
人quan
|
||||
renquan
|
||||
中国人权
|
||||
中国新民党
|
||||
群体事件
|
||||
群体性事件
|
||||
上中央
|
||||
去中央
|
||||
讨说法
|
||||
请愿
|
||||
请命
|
||||
公开信
|
||||
联名上书
|
||||
万人大签名
|
||||
万人骚动
|
||||
截访
|
||||
上访
|
||||
shangfang
|
||||
信访
|
||||
访民
|
||||
集合
|
||||
集会
|
||||
组织集体
|
||||
静坐
|
||||
静zuo
|
||||
jing坐
|
||||
示威
|
||||
示wei
|
||||
游行
|
||||
you行
|
||||
油行
|
||||
游xing
|
||||
youxing
|
||||
官逼民反
|
||||
反party
|
||||
反共
|
||||
抗议
|
||||
亢议
|
||||
抵制
|
||||
低制
|
||||
底制
|
||||
di制
|
||||
抵zhi
|
||||
dizhi
|
||||
boycott
|
||||
血书
|
||||
焚烧中国国旗
|
||||
baoluan
|
||||
流血冲突
|
||||
出现暴动
|
||||
发生暴动
|
||||
引起暴动
|
||||
baodong
|
||||
灭共
|
||||
杀毙
|
||||
罢工
|
||||
霸工
|
||||
罢考
|
||||
罢餐
|
||||
霸餐
|
||||
罢参
|
||||
罢饭
|
||||
罢吃
|
||||
罢食
|
||||
罢课
|
||||
罢ke
|
||||
霸课
|
||||
ba课
|
||||
罢教
|
||||
罢学
|
||||
罢运
|
||||
网特
|
||||
网评员
|
||||
网络评论员
|
||||
五毛党
|
||||
五毛们
|
||||
5毛党
|
||||
戒严
|
||||
jieyan
|
||||
jie严
|
||||
戒yan
|
||||
8的平方事件
|
||||
知道64
|
||||
八九年
|
||||
贰拾年
|
||||
2o年
|
||||
20和谐年
|
||||
贰拾周年
|
||||
六四
|
||||
六河蟹四
|
||||
六百度四
|
||||
六和谐四
|
||||
陆四
|
||||
陆肆
|
||||
198964
|
||||
5月35
|
||||
89年春夏之交
|
||||
64惨案
|
||||
64时期
|
||||
64运动
|
||||
4事件
|
||||
四事件
|
||||
北京风波
|
||||
学潮
|
||||
学chao
|
||||
xuechao
|
||||
学百度潮
|
||||
门安天
|
||||
天按门
|
||||
坦克压大学生
|
||||
民主女神
|
||||
历史的伤口
|
||||
高自联
|
||||
北高联
|
||||
血洗京城
|
||||
四二六社论
|
||||
王丹
|
||||
柴玲
|
||||
沈彤
|
||||
封从德
|
||||
王超华
|
||||
王维林
|
||||
吾尔开希
|
||||
吾尔开西
|
||||
侯德健
|
||||
阎明复
|
||||
方励之
|
||||
蒋捷连
|
||||
丁子霖
|
||||
辛灏年
|
||||
蒋彦永
|
||||
严家其
|
||||
陈一咨
|
||||
中华局域网
|
||||
党的喉舌
|
||||
互联网审查
|
||||
当局严密封锁
|
||||
新闻封锁
|
||||
封锁消息
|
||||
爱国者同盟
|
||||
关闭所有论坛
|
||||
网络封锁
|
||||
金盾工程
|
||||
gfw
|
||||
无界浏览
|
||||
无界网络
|
||||
自由门
|
||||
何清涟
|
||||
中国的陷阱
|
||||
汪兆钧
|
||||
记者无疆界
|
||||
境外媒体
|
||||
维基百科
|
||||
纽约时报
|
||||
bbc中文网
|
||||
华盛顿邮报
|
||||
世界日报
|
||||
东森新闻网
|
||||
东森电视
|
||||
星岛日报
|
||||
wikipedia
|
||||
youtube
|
||||
googleblogger
|
||||
美国广播公司
|
||||
英国金融时报
|
||||
自由亚洲
|
||||
自由时报
|
||||
中国时报
|
||||
反分裂
|
||||
威胁论
|
||||
左翼联盟
|
||||
钓鱼岛
|
||||
保钓组织
|
||||
主权
|
||||
弓单
|
||||
火乍
|
||||
木仓
|
||||
石肖
|
||||
核蛋
|
||||
步qiang
|
||||
bao炸
|
||||
爆zha
|
||||
baozha
|
||||
zha药
|
||||
zha弹
|
||||
炸dan
|
||||
炸yao
|
||||
zhadan
|
||||
zhayao
|
||||
hmtd
|
||||
三硝基甲苯
|
||||
六氟化铀
|
||||
炸药配方
|
||||
弹药配方
|
||||
炸弹配方
|
||||
皮箱炸弹
|
||||
火药配方
|
||||
人体炸弹
|
||||
人肉炸弹
|
||||
解放军
|
||||
兵力部署
|
||||
军转
|
||||
军事社
|
||||
8341部队
|
||||
第21集团军
|
||||
七大军区
|
||||
7大军区
|
||||
北京军区
|
||||
沈阳军区
|
||||
济南军区
|
||||
成都军区
|
||||
广州军区
|
||||
南京军区
|
||||
兰州军区
|
||||
颜色革命
|
||||
规模冲突
|
||||
塔利班
|
||||
基地组织
|
||||
恐怖分子
|
||||
恐怖份子
|
||||
三股势力
|
||||
印尼屠华
|
||||
印尼事件
|
||||
蒋公纪念歌
|
||||
马英九
|
||||
mayingjiu
|
||||
李天羽
|
||||
苏贞昌
|
||||
林文漪
|
||||
陈水扁
|
||||
陈s扁
|
||||
陈随便
|
||||
阿扁
|
||||
a扁
|
||||
告全国同胞书
|
||||
台百度湾
|
||||
台完
|
||||
台wan
|
||||
taiwan
|
||||
台弯
|
||||
湾台
|
||||
台湾国
|
||||
台湾共和国
|
||||
台军
|
||||
台独
|
||||
台毒
|
||||
台du
|
||||
taidu
|
||||
twdl
|
||||
一中一台
|
||||
打台湾
|
||||
两岸战争
|
||||
攻占台湾
|
||||
支持台湾
|
||||
进攻台湾
|
||||
占领台湾
|
||||
统一台湾
|
||||
收复台湾
|
||||
登陆台湾
|
||||
解放台湾
|
||||
解放tw
|
||||
解决台湾
|
||||
光复民国
|
||||
台湾独立
|
||||
台湾问题
|
||||
台海问题
|
||||
台海危机
|
||||
台海统一
|
||||
台海大战
|
||||
台海战争
|
||||
台海局势
|
||||
入联
|
||||
入耳关
|
||||
中华联邦
|
||||
国民党
|
||||
x民党
|
||||
民进党
|
||||
青天白日
|
||||
闹独立
|
||||
duli
|
||||
fenlie
|
||||
日本万岁
|
||||
小泽一郎
|
||||
劣等民族
|
||||
汉人
|
||||
汉维
|
||||
维汉
|
||||
维吾
|
||||
吾尔
|
||||
热比娅
|
||||
伊力哈木
|
||||
疆独
|
||||
东突厥斯坦解放组织
|
||||
东突解放组织
|
||||
蒙古分裂分子
|
||||
列确
|
||||
阿旺晋美
|
||||
藏人
|
||||
臧人
|
||||
zang人
|
||||
藏民
|
||||
藏m
|
||||
达赖
|
||||
赖达
|
||||
dalai
|
||||
哒赖
|
||||
dl喇嘛
|
||||
丹增嘉措
|
||||
打砸抢
|
||||
西独
|
||||
藏独
|
||||
葬独
|
||||
臧独
|
||||
藏毒
|
||||
藏du
|
||||
zangdu
|
||||
支持zd
|
||||
藏暴乱
|
||||
藏青会
|
||||
雪山狮子旗
|
||||
拉萨
|
||||
啦萨
|
||||
啦沙
|
||||
啦撒
|
||||
拉sa
|
||||
lasa
|
||||
la萨
|
||||
西藏
|
||||
藏西
|
||||
藏春阁
|
||||
藏獨
|
||||
藏独
|
||||
藏独立
|
||||
藏妇会
|
||||
藏青会
|
||||
藏字石
|
||||
xizang
|
||||
xi藏
|
||||
x藏
|
||||
西z
|
||||
tibet
|
||||
希葬
|
||||
希藏
|
||||
硒藏
|
||||
稀藏
|
||||
西脏
|
||||
西奘
|
||||
西葬
|
||||
西臧
|
||||
援藏
|
||||
bjork
|
||||
王千源
|
||||
安拉
|
||||
回教
|
||||
回族
|
||||
回回
|
||||
回民
|
||||
穆斯林
|
||||
穆罕穆德
|
||||
穆罕默德
|
||||
默罕默德
|
||||
伊斯兰
|
||||
圣战组织
|
||||
清真
|
||||
清zhen
|
||||
qingzhen
|
||||
真主
|
||||
阿拉伯
|
||||
高丽棒子
|
||||
韩国狗
|
||||
满洲第三帝国
|
||||
满狗
|
||||
鞑子
|
||||
江丑闻
|
||||
江嫡系
|
||||
江毒
|
||||
江独裁
|
||||
江蛤蟆
|
||||
江核心
|
||||
江黑心
|
||||
江胡内斗
|
||||
江祸心
|
||||
江家帮
|
||||
江绵恒
|
||||
江派和胡派
|
||||
江派人马
|
||||
江泉集团
|
||||
江人马
|
||||
江三条腿
|
||||
江氏集团
|
||||
江氏家族
|
||||
江氏政治局
|
||||
江氏政治委员
|
||||
江梳头
|
||||
江太上
|
||||
江戏子
|
||||
江系人
|
||||
江系人马
|
||||
江宰民
|
||||
江贼
|
||||
江贼民
|
||||
江主席
|
||||
麻果丸
|
||||
麻将透
|
||||
麻醉弹
|
||||
麻醉狗
|
||||
麻醉枪
|
||||
麻醉槍
|
||||
麻醉药
|
||||
麻醉藥
|
||||
台独
|
||||
台湾版假币
|
||||
台湾独立
|
||||
台湾国
|
||||
台湾应该独立
|
||||
台湾有权独立
|
||||
天灭中共
|
||||
中共帮凶
|
||||
中共保命
|
||||
中共裁
|
||||
中共党文化
|
||||
中共腐败
|
||||
中共的血旗
|
||||
中共的罪恶
|
||||
中共帝国
|
||||
中共独裁
|
||||
中共封锁
|
||||
中共封网
|
||||
中共腐败
|
||||
中共黑
|
||||
中共黑帮
|
||||
中共解体
|
||||
中共近期权力斗争
|
||||
中共恐惧
|
||||
中共权力斗争
|
||||
中共任用
|
||||
中共退党
|
||||
中共洗脑
|
||||
中共邪教
|
||||
中共政治游戏
|
||||
中共邪毒素
|
||||
178
app/core/api/resources/sensitive/暴恐词库.txt
Normal file
178
app/core/api/resources/sensitive/暴恐词库.txt
Normal file
@@ -0,0 +1,178 @@
|
||||
福音会
|
||||
中国教徒
|
||||
统一教
|
||||
观音法门
|
||||
清海无上师
|
||||
盘古
|
||||
李洪志
|
||||
志洪李
|
||||
李宏志
|
||||
轮功
|
||||
法轮
|
||||
轮法功
|
||||
三去车仑
|
||||
氵去车仑
|
||||
发论工
|
||||
法x功
|
||||
法o功
|
||||
法0功
|
||||
法一轮一功
|
||||
轮子功
|
||||
车仑工力
|
||||
法lun
|
||||
fa轮
|
||||
法lg
|
||||
flg
|
||||
fl功
|
||||
falungong
|
||||
大法弟子
|
||||
大纪元
|
||||
dajiyuan
|
||||
明慧网
|
||||
明慧周报
|
||||
正见网
|
||||
新唐人
|
||||
伪火
|
||||
退党
|
||||
tuidang
|
||||
退dang
|
||||
超越红墙
|
||||
自fen
|
||||
真善忍
|
||||
九评
|
||||
9评
|
||||
9ping
|
||||
九ping
|
||||
jiuping
|
||||
藏字石
|
||||
集体自杀
|
||||
自sha
|
||||
zi杀
|
||||
suicide
|
||||
titor
|
||||
逢8必灾
|
||||
逢八必灾
|
||||
逢9必乱
|
||||
逢九必乱
|
||||
朱瑟里诺
|
||||
根达亚文明
|
||||
诺查丹玛斯
|
||||
人类灭亡进程表
|
||||
按照马雅历法
|
||||
推背图
|
||||
推bei图
|
||||
济世灵文
|
||||
诸世纪
|
||||
电狗
|
||||
电话定位器
|
||||
电话拦截器
|
||||
电话窃听
|
||||
电话监
|
||||
电话交友
|
||||
电话追杀系统
|
||||
电击枪
|
||||
电鸡
|
||||
电警棒
|
||||
枪出售
|
||||
枪的制
|
||||
枪货到
|
||||
枪决女犯
|
||||
枪模
|
||||
枪手
|
||||
枪销售
|
||||
枪械制
|
||||
枪子弹
|
||||
售步枪
|
||||
售纯度
|
||||
售单管
|
||||
售弹簧刀
|
||||
售防身
|
||||
售狗子
|
||||
售虎头
|
||||
售火药
|
||||
售假币
|
||||
售健卫
|
||||
售军用
|
||||
售猎枪
|
||||
售氯胺
|
||||
售麻醉
|
||||
售枪支
|
||||
售热武
|
||||
售三棱
|
||||
售手枪
|
||||
售五四
|
||||
售一元硬
|
||||
售子弹
|
||||
售左轮
|
||||
亚砷(酸)酐
|
||||
亚砷酸钾
|
||||
亚砷酸钠
|
||||
亚硒酸
|
||||
亚硒酸二钠
|
||||
亚硒酸镁
|
||||
亚硒酸钠
|
||||
亚硒酸氢钠
|
||||
亚硝酸乙酯
|
||||
亚硝酰乙氧
|
||||
氧化二丁基锡
|
||||
氧化汞
|
||||
氧化铊
|
||||
氧化亚铊
|
||||
氧氯化磷
|
||||
原装弹
|
||||
原子弹方法
|
||||
原子弹清单
|
||||
安眠酮
|
||||
代血浆
|
||||
普萘洛尔
|
||||
呋塞米
|
||||
西布曲明
|
||||
testosterone
|
||||
胰岛素样生长因子
|
||||
促红细胞生成素
|
||||
地西泮
|
||||
尼可刹米
|
||||
甲睾酮
|
||||
adrenaline
|
||||
erythropoietin
|
||||
地奈德
|
||||
莫达非尼
|
||||
氯噻嗪
|
||||
苯巴比妥
|
||||
促性腺激素
|
||||
泼尼松
|
||||
麻黄草
|
||||
雄烯二醇
|
||||
地塞米松
|
||||
tamoxifen
|
||||
strychnine
|
||||
androst
|
||||
新型毒品
|
||||
杜冷丁
|
||||
兴奋剂
|
||||
mdma
|
||||
海洛因
|
||||
海luo因
|
||||
heroin
|
||||
diamorphine
|
||||
diacetylmorphine
|
||||
鸦片
|
||||
阿芙蓉
|
||||
咖啡因
|
||||
cocain
|
||||
三唑仑
|
||||
美沙酮
|
||||
麻古
|
||||
k粉
|
||||
凯他敏
|
||||
ketamine
|
||||
冰毒
|
||||
苯丙胺
|
||||
cannabis
|
||||
大麻
|
||||
爱他死
|
||||
氯胺酮
|
||||
benzodiazepines
|
||||
甲基安非他明
|
||||
吗啡
|
||||
安非他命
|
||||
571
app/core/api/resources/sensitive/民生词库.txt
Normal file
571
app/core/api/resources/sensitive/民生词库.txt
Normal file
@@ -0,0 +1,571 @@
|
||||
打人
|
||||
打人
|
||||
拆迁
|
||||
拆迁
|
||||
纠纷
|
||||
纠纷
|
||||
盗窃
|
||||
盗窃
|
||||
安眠酮
|
||||
代药物毒品类:血浆
|
||||
普萘洛尔
|
||||
呋塞米
|
||||
西布曲明
|
||||
testosterone
|
||||
胰岛素样生长因子
|
||||
促红细胞生成素
|
||||
地西泮
|
||||
尼可刹米
|
||||
甲睾酮
|
||||
adrenaline
|
||||
erythropoietin
|
||||
地奈德
|
||||
莫达非尼
|
||||
氯噻嗪
|
||||
苯巴比妥
|
||||
促性腺激素
|
||||
泼尼松
|
||||
麻黄草
|
||||
雄烯二醇
|
||||
地塞米松
|
||||
tamoxifen
|
||||
strychnine
|
||||
androst
|
||||
新型毒品
|
||||
杜冷丁
|
||||
兴奋剂
|
||||
mdma
|
||||
海洛因
|
||||
海luo因
|
||||
heroin
|
||||
diamorphine
|
||||
diacetylmorphine
|
||||
鸦片
|
||||
阿芙蓉
|
||||
咖啡因
|
||||
cocain
|
||||
三唑仑
|
||||
美沙酮
|
||||
麻古
|
||||
k粉
|
||||
凯他敏
|
||||
ketamine
|
||||
冰毒
|
||||
苯丙胺
|
||||
cannabis
|
||||
大麻
|
||||
爱他死
|
||||
氯胺酮
|
||||
benzodiazepines
|
||||
甲基安非他明
|
||||
安非他命
|
||||
吗啡
|
||||
morphine
|
||||
摇头丸
|
||||
迷药
|
||||
乖乖粉
|
||||
narcotic
|
||||
麻醉药
|
||||
精神药品
|
||||
专业代理
|
||||
帮忙点一下
|
||||
帮忙点下
|
||||
请点击进入
|
||||
详情请进入
|
||||
私人侦探
|
||||
私家侦探
|
||||
针孔摄象
|
||||
调查婚外情
|
||||
信用卡提现
|
||||
无抵押贷款
|
||||
广告代理
|
||||
原音铃声
|
||||
借腹生子
|
||||
找个妈妈
|
||||
找个爸爸
|
||||
代孕妈妈
|
||||
代生孩子
|
||||
代开发票
|
||||
腾讯客服电话
|
||||
销售热线
|
||||
免费订购热线
|
||||
低价出售
|
||||
款到发货
|
||||
回复可见
|
||||
连锁加盟
|
||||
加盟连锁
|
||||
免费二级域名
|
||||
免费使用
|
||||
免费索取
|
||||
蚁力神
|
||||
婴儿汤
|
||||
售肾
|
||||
刻章办
|
||||
买小车
|
||||
套牌车
|
||||
玛雅网
|
||||
电脑传讯
|
||||
视频来源
|
||||
下载速度
|
||||
高清在线
|
||||
全集在线
|
||||
在线播放
|
||||
txt下载
|
||||
六位qq
|
||||
6位qq
|
||||
位的qq
|
||||
个qb
|
||||
送qb
|
||||
用刀横向切腹
|
||||
完全自杀手册
|
||||
四海帮
|
||||
足球投注
|
||||
地下钱庄
|
||||
中国复兴党
|
||||
阿波罗网
|
||||
曾道人
|
||||
六合彩
|
||||
改卷内幕
|
||||
替考试
|
||||
隐形耳机
|
||||
出售答案
|
||||
考中答案
|
||||
答an
|
||||
da案
|
||||
资金周转
|
||||
救市
|
||||
股市圈钱
|
||||
崩盘
|
||||
资金短缺
|
||||
证监会
|
||||
质押贷款
|
||||
小额贷款
|
||||
周小川
|
||||
刘明康
|
||||
尚福林
|
||||
孔丹
|
||||
汉芯造假
|
||||
杨树宽
|
||||
中印边界谈判结果
|
||||
喂奶门
|
||||
摸nai门
|
||||
酒瓶门
|
||||
脱裤门
|
||||
75事件
|
||||
乌鲁木齐
|
||||
新疆骚乱
|
||||
针刺
|
||||
打针
|
||||
食堂涨价
|
||||
饭菜涨价
|
||||
h1n1
|
||||
瘟疫爆发
|
||||
yangjia
|
||||
y佳
|
||||
yang佳
|
||||
杨佳
|
||||
杨j
|
||||
袭警
|
||||
杀警
|
||||
武侯祠
|
||||
川b26931
|
||||
贺立旗
|
||||
周正毅
|
||||
px项目
|
||||
骂四川
|
||||
家l福
|
||||
家le福
|
||||
加了服
|
||||
麦当劳被砸
|
||||
豆腐渣
|
||||
这不是天灾
|
||||
龙小霞
|
||||
震其国土
|
||||
yuce
|
||||
提前预测
|
||||
地震预测
|
||||
隐瞒地震
|
||||
李四光预测
|
||||
蟾蜍迁徙
|
||||
地震来得更猛烈
|
||||
八级地震毫无预报
|
||||
踩踏事故
|
||||
聂树斌
|
||||
万里大造林
|
||||
陈相贵
|
||||
张丹红
|
||||
尹方明
|
||||
李树菲
|
||||
王奉友
|
||||
零八奥运艰
|
||||
惨奥
|
||||
奥晕
|
||||
凹晕
|
||||
懊运
|
||||
懊孕
|
||||
奥孕
|
||||
奥你妈的运
|
||||
反奥
|
||||
628事件
|
||||
weng安
|
||||
wengan
|
||||
翁安
|
||||
瓮安事件
|
||||
化工厂爆炸
|
||||
讨回工资
|
||||
代办发票
|
||||
代办各
|
||||
代办文
|
||||
代办学
|
||||
代办制
|
||||
代辦
|
||||
代表烦
|
||||
代开发票
|
||||
代開
|
||||
代考
|
||||
代理发票
|
||||
代理票据
|
||||
代您考
|
||||
代讨债
|
||||
代写毕
|
||||
代写论文
|
||||
代孕
|
||||
代追债
|
||||
考后付款
|
||||
考机构
|
||||
考考邓
|
||||
考联盟
|
||||
考前答案
|
||||
考前付
|
||||
考前密卷
|
||||
考前预测
|
||||
考试,答案
|
||||
考试,作弊器
|
||||
考试包过
|
||||
考试保
|
||||
考试答案
|
||||
考试机构
|
||||
考试联盟
|
||||
考试枪
|
||||
考试作弊
|
||||
考试作弊器
|
||||
考研考中
|
||||
考中答案
|
||||
透视功能
|
||||
透视镜
|
||||
透视扑
|
||||
透视器
|
||||
透视眼睛
|
||||
透视眼镜
|
||||
透视药
|
||||
透视仪
|
||||
打死经过
|
||||
打死人
|
||||
打砸办公
|
||||
打砸抢
|
||||
安眠酮
|
||||
代血浆
|
||||
普萘洛尔
|
||||
呋塞米
|
||||
西布曲明
|
||||
testosterone
|
||||
胰岛素样生长因子
|
||||
促红细胞生成素
|
||||
地西泮
|
||||
尼可刹米
|
||||
甲睾酮
|
||||
adrenaline
|
||||
erythropoietin
|
||||
地奈德
|
||||
莫达非尼
|
||||
氯噻嗪
|
||||
苯巴比妥
|
||||
促性腺激素
|
||||
泼尼松
|
||||
麻黄草
|
||||
雄烯二醇
|
||||
地塞米松
|
||||
tamoxifen
|
||||
strychnine
|
||||
androst
|
||||
新型毒品
|
||||
杜冷丁
|
||||
兴奋剂
|
||||
mdma
|
||||
海洛因
|
||||
海luo因
|
||||
heroin
|
||||
diamorphine
|
||||
diacetylmorphine
|
||||
鸦片
|
||||
阿芙蓉
|
||||
咖啡因
|
||||
cocain
|
||||
三唑仑
|
||||
美沙酮
|
||||
麻古
|
||||
k粉
|
||||
凯他敏
|
||||
ketamine
|
||||
冰毒
|
||||
苯丙胺
|
||||
cannabis
|
||||
大麻
|
||||
爱他死
|
||||
氯胺酮
|
||||
benzodiazepines
|
||||
甲基安非他明
|
||||
安非他命
|
||||
吗啡
|
||||
KC短信
|
||||
KC嘉年华
|
||||
短信广告
|
||||
短信群发
|
||||
短信群发器
|
||||
小6灵通
|
||||
短信商务广告
|
||||
段录定
|
||||
无界浏览
|
||||
无界浏览器
|
||||
无界
|
||||
无网界
|
||||
无网界浏览
|
||||
无帮国
|
||||
KC提示
|
||||
KC网站
|
||||
UP8新势力
|
||||
白皮书
|
||||
UP新势力
|
||||
移民
|
||||
易达网络卡
|
||||
安魂网
|
||||
罢工
|
||||
罢课
|
||||
纽崔莱七折
|
||||
手机复制
|
||||
手机铃声
|
||||
网关
|
||||
神通加持法
|
||||
全1球通
|
||||
如6意通
|
||||
清仓
|
||||
灵动卡
|
||||
答案卫星接收机
|
||||
高薪养廉
|
||||
考后付款
|
||||
佳静安定片
|
||||
航空母舰
|
||||
航空售票
|
||||
号码百事通
|
||||
考前发放
|
||||
成本价
|
||||
诚信通手机商城
|
||||
高利贷
|
||||
联4通
|
||||
黑庄
|
||||
黑手党
|
||||
黑车
|
||||
联通贵宾卡
|
||||
联总
|
||||
联总这声传单
|
||||
联总之声传单
|
||||
高息贷款
|
||||
高干子弟
|
||||
恭喜你的号码
|
||||
恭喜您的号码
|
||||
高干子女
|
||||
各个银行全称
|
||||
各种发票
|
||||
高官
|
||||
高官互调
|
||||
高官子女
|
||||
喝一送一
|
||||
卡号
|
||||
复制
|
||||
监听王
|
||||
传单
|
||||
旦科
|
||||
钓鱼岛
|
||||
钓鱼台
|
||||
当官靠后台
|
||||
党校安插亲信
|
||||
传九促三
|
||||
客户端非法字符
|
||||
刻章
|
||||
大麻树脂
|
||||
大麻油
|
||||
大法
|
||||
大法弟子
|
||||
dpp大法
|
||||
fa lun
|
||||
falu
|
||||
发抡
|
||||
发抡功
|
||||
洗脑
|
||||
下法轮
|
||||
发轮
|
||||
发伦
|
||||
发伦功
|
||||
发仑
|
||||
发沦
|
||||
发纶
|
||||
发论
|
||||
发论功
|
||||
发论公
|
||||
发正念
|
||||
发囵
|
||||
发愣
|
||||
发瞟
|
||||
罚抡
|
||||
罚伦
|
||||
罚仑
|
||||
罚沦
|
||||
罚纶
|
||||
罚囵
|
||||
筏抡
|
||||
筏轮
|
||||
筏伦
|
||||
筏仑
|
||||
筏沦
|
||||
筏纶
|
||||
筏论
|
||||
筏囵
|
||||
伐抡
|
||||
伐轮
|
||||
伐伦
|
||||
伐仑
|
||||
伐沦
|
||||
伐论
|
||||
伐囵
|
||||
乏抡
|
||||
乏轮
|
||||
乏伦
|
||||
乏仑
|
||||
乏沦
|
||||
乏纶
|
||||
乏论
|
||||
乏囵
|
||||
阀抡
|
||||
阀伦
|
||||
阀仑
|
||||
阀沦
|
||||
阀纶
|
||||
阀论
|
||||
阀囵
|
||||
法 轮 功
|
||||
法*功
|
||||
法.轮.功
|
||||
法L功
|
||||
法lun功
|
||||
法功
|
||||
法会
|
||||
法抡
|
||||
法抡功
|
||||
法轮
|
||||
法轮大法
|
||||
法轮佛法
|
||||
法轮功
|
||||
法伦
|
||||
法仑
|
||||
法沦
|
||||
法纶
|
||||
法论
|
||||
法十轮十功
|
||||
法西斯
|
||||
法院
|
||||
法正
|
||||
法谪
|
||||
法谪功
|
||||
法輪
|
||||
法囵
|
||||
法愣
|
||||
珐.輪功
|
||||
珐抡
|
||||
珐轮
|
||||
珐伦
|
||||
珐仑
|
||||
珐沦
|
||||
五不
|
||||
五不争鸣论坛
|
||||
五出三进
|
||||
五套功法
|
||||
邝锦文
|
||||
垡抡
|
||||
垡轮
|
||||
垡伦
|
||||
垡仑
|
||||
垡沦
|
||||
垡纶
|
||||
垡论
|
||||
垡囵
|
||||
茳澤民
|
||||
荭志
|
||||
闳志
|
||||
闵维方
|
||||
氵去
|
||||
氵去车仑工力
|
||||
转法轮
|
||||
砝抡
|
||||
砝轮
|
||||
砝伦
|
||||
砝仑
|
||||
砝沦
|
||||
砝纶
|
||||
真、善、忍
|
||||
真理教
|
||||
真善美
|
||||
真善忍
|
||||
砝论
|
||||
砝囵
|
||||
泓志
|
||||
屙民
|
||||
珐纶
|
||||
珐论
|
||||
珐囵
|
||||
falun
|
||||
Falundafa
|
||||
fa轮
|
||||
Flg
|
||||
弟子
|
||||
地下教会
|
||||
炼功
|
||||
梦网洪志
|
||||
轮大
|
||||
抡功
|
||||
轮功
|
||||
伦功
|
||||
摩门教
|
||||
三水法轮
|
||||
三唑仑
|
||||
天皇
|
||||
天怒
|
||||
天葬
|
||||
车臣
|
||||
达赖
|
||||
功法
|
||||
讲法
|
||||
基督
|
||||
基督教
|
||||
护法
|
||||
回教
|
||||
教徒
|
||||
功友
|
||||
大师
|
||||
达赖喇嘛
|
||||
虹志
|
||||
鸿志
|
||||
洪传
|
||||
贯通两极法
|
||||
光祖
|
||||
洪吟
|
||||
洪哲胜
|
||||
洪志
|
||||
宏法
|
||||
观世音
|
||||
宏志
|
||||
弘志
|
||||
古兰经
|
||||
红志
|
||||
车库
|
||||
经文
|
||||
车仑
|
||||
929
app/core/api/resources/sensitive/色情词库.txt
Normal file
929
app/core/api/resources/sensitive/色情词库.txt
Normal file
@@ -0,0 +1,929 @@
|
||||
爱女人
|
||||
爱液
|
||||
按摩棒
|
||||
拔出来
|
||||
爆草
|
||||
包二奶
|
||||
暴干
|
||||
暴奸
|
||||
暴乳
|
||||
爆乳
|
||||
暴淫
|
||||
屄
|
||||
被插
|
||||
被操
|
||||
被干
|
||||
逼奸
|
||||
仓井空
|
||||
插暴
|
||||
操逼
|
||||
操黑
|
||||
操烂
|
||||
肏你
|
||||
肏死
|
||||
操死
|
||||
操我
|
||||
厕奴
|
||||
插比
|
||||
插b
|
||||
插逼
|
||||
插进
|
||||
插你
|
||||
插我
|
||||
插阴
|
||||
潮吹
|
||||
潮喷
|
||||
成人dv
|
||||
成人电影
|
||||
成人论坛
|
||||
成人小说
|
||||
成人电
|
||||
成人电影
|
||||
成人卡通
|
||||
成人聊
|
||||
成人片
|
||||
成人视
|
||||
成人图
|
||||
成人文
|
||||
成人小
|
||||
成人电影
|
||||
成人论坛
|
||||
成人色情
|
||||
成人网站
|
||||
成人文学
|
||||
成人小说
|
||||
艳情小说
|
||||
成人游戏
|
||||
吃精
|
||||
赤裸
|
||||
抽插
|
||||
扌由插
|
||||
抽一插
|
||||
春药
|
||||
大波
|
||||
大力抽送
|
||||
大乳
|
||||
荡妇
|
||||
荡女
|
||||
盗撮
|
||||
多人轮
|
||||
发浪
|
||||
放尿
|
||||
肥逼
|
||||
粉穴
|
||||
封面女郎
|
||||
风月大陆
|
||||
干死你
|
||||
干穴
|
||||
肛交
|
||||
肛门
|
||||
龟头
|
||||
裹本
|
||||
国产av
|
||||
好嫩
|
||||
豪乳
|
||||
黑逼
|
||||
后庭
|
||||
后穴
|
||||
虎骑
|
||||
花花公子
|
||||
换妻俱乐部
|
||||
黄片
|
||||
几吧
|
||||
鸡吧
|
||||
鸡巴
|
||||
鸡奸
|
||||
寂寞男
|
||||
寂寞女
|
||||
妓女
|
||||
激情
|
||||
集体淫
|
||||
奸情
|
||||
叫床
|
||||
脚交
|
||||
金鳞岂是池中物
|
||||
金麟岂是池中物
|
||||
精液
|
||||
就去日
|
||||
巨屌
|
||||
菊花洞
|
||||
菊门
|
||||
巨奶
|
||||
巨乳
|
||||
菊穴
|
||||
开苞
|
||||
口爆
|
||||
口活
|
||||
口交
|
||||
口射
|
||||
口淫
|
||||
裤袜
|
||||
狂操
|
||||
狂插
|
||||
浪逼
|
||||
浪妇
|
||||
浪叫
|
||||
浪女
|
||||
狼友
|
||||
聊性
|
||||
流淫
|
||||
铃木麻
|
||||
凌辱
|
||||
漏乳
|
||||
露b
|
||||
乱交
|
||||
乱伦
|
||||
轮暴
|
||||
轮操
|
||||
轮奸
|
||||
裸陪
|
||||
买春
|
||||
美逼
|
||||
美少妇
|
||||
美乳
|
||||
美腿
|
||||
美穴
|
||||
美幼
|
||||
秘唇
|
||||
迷奸
|
||||
密穴
|
||||
蜜穴
|
||||
蜜液
|
||||
摸奶
|
||||
摸胸
|
||||
母奸
|
||||
奈美
|
||||
奶子
|
||||
男奴
|
||||
内射
|
||||
嫩逼
|
||||
嫩女
|
||||
嫩穴
|
||||
捏弄
|
||||
女优
|
||||
炮友
|
||||
砲友
|
||||
喷精
|
||||
屁眼
|
||||
品香堂
|
||||
前凸后翘
|
||||
强jian
|
||||
强暴
|
||||
强奸处女
|
||||
情趣用品
|
||||
情色
|
||||
拳交
|
||||
全裸
|
||||
群交
|
||||
惹火身材
|
||||
人妻
|
||||
人兽
|
||||
日逼
|
||||
日烂
|
||||
肉棒
|
||||
肉逼
|
||||
肉唇
|
||||
肉洞
|
||||
肉缝
|
||||
肉棍
|
||||
肉茎
|
||||
肉具
|
||||
揉乳
|
||||
肉穴
|
||||
肉欲
|
||||
乳爆
|
||||
乳房
|
||||
乳沟
|
||||
乳交
|
||||
乳头
|
||||
三级片
|
||||
骚逼
|
||||
骚比
|
||||
骚女
|
||||
骚水
|
||||
骚穴
|
||||
色逼
|
||||
色界
|
||||
色猫
|
||||
色盟
|
||||
色情网站
|
||||
色区
|
||||
色色
|
||||
色诱
|
||||
色欲
|
||||
色b
|
||||
少年阿宾
|
||||
少修正
|
||||
射爽
|
||||
射颜
|
||||
食精
|
||||
释欲
|
||||
兽奸
|
||||
兽交
|
||||
手淫
|
||||
兽欲
|
||||
熟妇
|
||||
熟母
|
||||
熟女
|
||||
爽片
|
||||
爽死我了
|
||||
双臀
|
||||
死逼
|
||||
丝袜
|
||||
丝诱
|
||||
松岛枫
|
||||
酥痒
|
||||
汤加丽
|
||||
套弄
|
||||
体奸
|
||||
体位
|
||||
舔脚
|
||||
舔阴
|
||||
调教
|
||||
偷欢
|
||||
偷拍
|
||||
推油
|
||||
脱内裤
|
||||
文做
|
||||
我就色
|
||||
无码
|
||||
舞女
|
||||
无修正
|
||||
吸精
|
||||
夏川纯
|
||||
相奸
|
||||
小逼
|
||||
校鸡
|
||||
小穴
|
||||
小xue
|
||||
写真
|
||||
性感妖娆
|
||||
性感诱惑
|
||||
性虎
|
||||
性饥渴
|
||||
性技巧
|
||||
性交
|
||||
性奴
|
||||
性虐
|
||||
性息
|
||||
性欲
|
||||
胸推
|
||||
穴口
|
||||
学生妹
|
||||
穴图
|
||||
亚情
|
||||
颜射
|
||||
阳具
|
||||
杨思敏
|
||||
要射了
|
||||
夜勤病栋
|
||||
一本道
|
||||
一夜欢
|
||||
一夜情
|
||||
一ye情
|
||||
阴部
|
||||
淫虫
|
||||
阴唇
|
||||
淫荡
|
||||
阴道
|
||||
淫电影
|
||||
阴阜
|
||||
淫妇
|
||||
淫河
|
||||
阴核
|
||||
阴户
|
||||
淫贱
|
||||
淫叫
|
||||
淫教师
|
||||
阴茎
|
||||
阴精
|
||||
淫浪
|
||||
淫媚
|
||||
淫糜
|
||||
淫魔
|
||||
淫母
|
||||
淫女
|
||||
淫虐
|
||||
淫妻
|
||||
淫情
|
||||
淫色
|
||||
淫声浪语
|
||||
淫兽学园
|
||||
淫书
|
||||
淫术炼金士
|
||||
淫水
|
||||
淫娃
|
||||
淫威
|
||||
淫亵
|
||||
淫样
|
||||
淫液
|
||||
淫照
|
||||
阴b
|
||||
应召
|
||||
幼交
|
||||
幼男
|
||||
幼女
|
||||
欲火
|
||||
欲女
|
||||
玉女心经
|
||||
玉蒲团
|
||||
玉乳
|
||||
欲仙欲死
|
||||
玉穴
|
||||
援交
|
||||
原味内衣
|
||||
援助交际
|
||||
张筱雨
|
||||
招鸡
|
||||
招妓
|
||||
中年美妇
|
||||
抓胸
|
||||
自拍
|
||||
自慰
|
||||
作爱
|
||||
18禁
|
||||
99bb
|
||||
a4u
|
||||
a4y
|
||||
adult
|
||||
amateur
|
||||
anal
|
||||
a片
|
||||
fuck
|
||||
gay片
|
||||
g点
|
||||
g片
|
||||
hardcore
|
||||
h动画
|
||||
h动漫
|
||||
incest
|
||||
porn
|
||||
secom
|
||||
sexinsex
|
||||
sm女王
|
||||
xiao77
|
||||
xing伴侣
|
||||
tokyohot
|
||||
yin荡
|
||||
贱人
|
||||
装b
|
||||
大sb
|
||||
傻逼
|
||||
傻b
|
||||
煞逼
|
||||
煞笔
|
||||
刹笔
|
||||
傻比
|
||||
沙比
|
||||
欠干
|
||||
婊子养的
|
||||
我日你
|
||||
我操
|
||||
我草
|
||||
卧艹
|
||||
卧槽
|
||||
爆你菊
|
||||
艹你
|
||||
cao你
|
||||
你他妈
|
||||
真他妈
|
||||
别他吗
|
||||
草你吗
|
||||
草你丫
|
||||
操你妈
|
||||
擦你妈
|
||||
操你娘
|
||||
操他妈
|
||||
日你妈
|
||||
干你妈
|
||||
干你娘
|
||||
娘西皮
|
||||
狗操
|
||||
狗草
|
||||
狗杂种
|
||||
狗日的
|
||||
操你祖宗
|
||||
操你全家
|
||||
操你大爷
|
||||
妈逼
|
||||
你麻痹
|
||||
麻痹的
|
||||
妈了个逼
|
||||
马勒
|
||||
狗娘养
|
||||
贱比
|
||||
贱b
|
||||
下贱
|
||||
死全家
|
||||
全家死光
|
||||
全家不得好死
|
||||
全家死绝
|
||||
白痴
|
||||
无耻
|
||||
sb
|
||||
杀b
|
||||
你吗b
|
||||
你妈的
|
||||
婊子
|
||||
贱货
|
||||
人渣
|
||||
混蛋
|
||||
媚外
|
||||
和弦
|
||||
兼职
|
||||
限量
|
||||
铃声
|
||||
性伴侣
|
||||
男公关
|
||||
火辣
|
||||
精子
|
||||
射精
|
||||
诱奸
|
||||
强奸
|
||||
做爱
|
||||
性爱
|
||||
发生关系
|
||||
按摩
|
||||
快感
|
||||
处男
|
||||
猛男
|
||||
少妇
|
||||
屌
|
||||
屁股
|
||||
下体
|
||||
a片
|
||||
内裤
|
||||
浑圆
|
||||
咪咪
|
||||
发情
|
||||
刺激
|
||||
白嫩
|
||||
粉嫩
|
||||
兽性
|
||||
风骚
|
||||
呻吟
|
||||
sm
|
||||
阉割
|
||||
高潮
|
||||
裸露
|
||||
不穿
|
||||
一丝不挂
|
||||
脱光
|
||||
干你
|
||||
干死
|
||||
我干
|
||||
裙中性运动
|
||||
乱奸
|
||||
乱伦
|
||||
乱伦类
|
||||
乱伦小
|
||||
伦理大
|
||||
伦理电影
|
||||
伦理毛
|
||||
伦理片
|
||||
裸聊
|
||||
裸聊网
|
||||
裸体写真
|
||||
裸舞视
|
||||
裸照
|
||||
美女裸体
|
||||
美女写真
|
||||
美女上门
|
||||
美艳少妇
|
||||
妹按摩
|
||||
妹上门
|
||||
迷幻药
|
||||
迷幻藥
|
||||
迷昏口
|
||||
迷昏药
|
||||
迷昏藥
|
||||
迷魂香
|
||||
迷魂药
|
||||
迷魂藥
|
||||
迷奸粉
|
||||
迷奸药
|
||||
迷情粉
|
||||
迷情水
|
||||
迷情药
|
||||
迷药
|
||||
迷藥
|
||||
谜奸药
|
||||
骚妇
|
||||
骚货
|
||||
骚浪
|
||||
骚女
|
||||
骚嘴
|
||||
色电影
|
||||
色妹妹
|
||||
色情表演
|
||||
色情电影
|
||||
色情服务
|
||||
色情图片
|
||||
色情小说
|
||||
色情影片
|
||||
色情表演
|
||||
色情电影
|
||||
色情服务
|
||||
色情片
|
||||
色视频
|
||||
色小说
|
||||
性伴侣
|
||||
性服务
|
||||
性福情
|
||||
性感少
|
||||
性伙伴
|
||||
性交
|
||||
性交视频
|
||||
性交图片
|
||||
性奴
|
||||
性奴集中营
|
||||
性虐
|
||||
阴唇
|
||||
阴道
|
||||
阴蒂
|
||||
阴户
|
||||
阴间来电
|
||||
阴茎
|
||||
阴茎增大
|
||||
阴茎助勃
|
||||
阴毛
|
||||
陰唇
|
||||
陰道
|
||||
陰戶
|
||||
淫荡
|
||||
淫荡美女
|
||||
淫荡视频
|
||||
淫荡照片
|
||||
淫乱
|
||||
淫靡
|
||||
淫魔
|
||||
淫魔舞
|
||||
淫女
|
||||
淫情女
|
||||
淫肉
|
||||
淫騷妹
|
||||
淫兽
|
||||
淫兽学
|
||||
淫水
|
||||
淫穴
|
||||
morphine
|
||||
摇头丸
|
||||
迷药
|
||||
乖乖粉
|
||||
narcotic
|
||||
麻醉药
|
||||
精神药品
|
||||
爱女人
|
||||
爱液
|
||||
按摩棒
|
||||
拔出来
|
||||
爆草
|
||||
包二奶
|
||||
暴干
|
||||
暴奸
|
||||
暴乳
|
||||
爆乳
|
||||
暴淫
|
||||
屄
|
||||
被操
|
||||
被插
|
||||
被干
|
||||
逼奸
|
||||
仓井空
|
||||
插暴
|
||||
操逼
|
||||
操黑
|
||||
操烂
|
||||
肏你
|
||||
肏死
|
||||
操死
|
||||
操我
|
||||
厕奴
|
||||
插比
|
||||
插b
|
||||
插逼
|
||||
插进
|
||||
插你
|
||||
插我
|
||||
插阴
|
||||
潮吹
|
||||
潮喷
|
||||
成人电影
|
||||
成人论坛
|
||||
成人色情
|
||||
成人网站
|
||||
成人文学
|
||||
成人小说
|
||||
艳情小说
|
||||
成人游戏
|
||||
吃精
|
||||
赤裸
|
||||
抽插
|
||||
扌由插
|
||||
抽一插
|
||||
春药
|
||||
大波
|
||||
大力抽送
|
||||
大乳
|
||||
荡妇
|
||||
荡女
|
||||
盗撮
|
||||
多人轮
|
||||
发浪
|
||||
放尿
|
||||
肥逼
|
||||
粉穴
|
||||
封面女郎
|
||||
风月大陆
|
||||
干死你
|
||||
干穴
|
||||
肛交
|
||||
肛门
|
||||
龟头
|
||||
裹本
|
||||
国产av
|
||||
好嫩
|
||||
豪乳
|
||||
黑逼
|
||||
后庭
|
||||
后穴
|
||||
虎骑
|
||||
花花公子
|
||||
换妻俱乐部
|
||||
黄片
|
||||
几吧
|
||||
鸡吧
|
||||
鸡巴
|
||||
鸡奸
|
||||
寂寞男
|
||||
寂寞女
|
||||
妓女
|
||||
激情
|
||||
集体淫
|
||||
奸情
|
||||
叫床
|
||||
脚交
|
||||
金鳞岂是池中物
|
||||
金麟岂是池中物
|
||||
精液
|
||||
就去日
|
||||
巨屌
|
||||
菊花洞
|
||||
菊门
|
||||
巨奶
|
||||
巨乳
|
||||
菊穴
|
||||
开苞
|
||||
口爆
|
||||
口活
|
||||
口交
|
||||
口射
|
||||
口淫
|
||||
裤袜
|
||||
狂操
|
||||
狂插
|
||||
浪逼
|
||||
浪妇
|
||||
浪叫
|
||||
浪女
|
||||
狼友
|
||||
聊性
|
||||
流淫
|
||||
铃木麻
|
||||
凌辱
|
||||
漏乳
|
||||
露b
|
||||
乱交
|
||||
乱伦
|
||||
轮暴
|
||||
轮操
|
||||
轮奸
|
||||
裸陪
|
||||
买春
|
||||
美逼
|
||||
美少妇
|
||||
美乳
|
||||
美腿
|
||||
美穴
|
||||
美幼
|
||||
秘唇
|
||||
迷奸
|
||||
密穴
|
||||
蜜穴
|
||||
蜜液
|
||||
摸奶
|
||||
摸胸
|
||||
母奸
|
||||
奈美
|
||||
奶子
|
||||
男奴
|
||||
内射
|
||||
嫩逼
|
||||
嫩女
|
||||
嫩穴
|
||||
捏弄
|
||||
女优
|
||||
炮友
|
||||
砲友
|
||||
喷精
|
||||
屁眼
|
||||
品香堂
|
||||
前凸后翘
|
||||
强jian
|
||||
强暴
|
||||
强奸处女
|
||||
情趣用品
|
||||
情色
|
||||
拳交
|
||||
全裸
|
||||
群交
|
||||
惹火身材
|
||||
人妻
|
||||
人兽
|
||||
日逼
|
||||
日烂
|
||||
肉棒
|
||||
肉逼
|
||||
肉唇
|
||||
肉洞
|
||||
肉缝
|
||||
肉棍
|
||||
肉茎
|
||||
肉具
|
||||
揉乳
|
||||
肉穴
|
||||
肉欲
|
||||
乳爆
|
||||
乳房
|
||||
乳沟
|
||||
乳交
|
||||
乳头
|
||||
三级片
|
||||
骚逼
|
||||
骚比
|
||||
骚女
|
||||
骚水
|
||||
骚穴
|
||||
色逼
|
||||
色界
|
||||
色猫
|
||||
色盟
|
||||
色情网站
|
||||
色区
|
||||
色色
|
||||
色诱
|
||||
色欲
|
||||
色b
|
||||
少年阿宾
|
||||
少修正
|
||||
射爽
|
||||
射颜
|
||||
食精
|
||||
释欲
|
||||
兽奸
|
||||
兽交
|
||||
手淫
|
||||
兽欲
|
||||
熟妇
|
||||
熟母
|
||||
熟女
|
||||
爽片
|
||||
爽死我了
|
||||
双臀
|
||||
死逼
|
||||
丝袜
|
||||
丝诱
|
||||
松岛枫
|
||||
酥痒
|
||||
汤加丽
|
||||
套弄
|
||||
体奸
|
||||
体位
|
||||
舔脚
|
||||
舔阴
|
||||
调教
|
||||
偷欢
|
||||
偷拍
|
||||
推油
|
||||
脱内裤
|
||||
文做
|
||||
我就色
|
||||
无码
|
||||
舞女
|
||||
无修正
|
||||
吸精
|
||||
夏川纯
|
||||
相奸
|
||||
小逼
|
||||
校鸡
|
||||
小穴
|
||||
小xue
|
||||
写真
|
||||
性感妖娆
|
||||
性感诱惑
|
||||
性虎
|
||||
性饥渴
|
||||
性技巧
|
||||
性交
|
||||
性奴
|
||||
性虐
|
||||
性息
|
||||
性欲
|
||||
胸推
|
||||
穴口
|
||||
学生妹
|
||||
穴图
|
||||
亚情
|
||||
颜射
|
||||
阳具
|
||||
杨思敏
|
||||
要射了
|
||||
夜勤病栋
|
||||
一本道
|
||||
一夜欢
|
||||
一夜情
|
||||
一ye情
|
||||
阴部
|
||||
淫虫
|
||||
阴唇
|
||||
淫荡
|
||||
阴道
|
||||
淫电影
|
||||
阴阜
|
||||
淫妇
|
||||
淫河
|
||||
阴核
|
||||
阴户
|
||||
淫贱
|
||||
淫叫
|
||||
淫教师
|
||||
阴茎
|
||||
阴精
|
||||
淫浪
|
||||
淫媚
|
||||
淫糜
|
||||
淫魔
|
||||
淫母
|
||||
淫女
|
||||
淫虐
|
||||
淫妻
|
||||
淫情
|
||||
淫色
|
||||
淫声浪语
|
||||
淫兽学园
|
||||
淫书
|
||||
淫术炼金士
|
||||
淫水
|
||||
淫娃
|
||||
淫威
|
||||
淫亵
|
||||
淫样
|
||||
淫液
|
||||
淫照
|
||||
阴b
|
||||
应召
|
||||
幼交
|
||||
幼男
|
||||
幼女
|
||||
欲火
|
||||
欲女
|
||||
玉女心经
|
||||
玉蒲团
|
||||
玉乳
|
||||
欲仙欲死
|
||||
玉穴
|
||||
援交
|
||||
原味内衣
|
||||
援助交际
|
||||
张筱雨
|
||||
招鸡
|
||||
招妓
|
||||
中年美妇
|
||||
抓胸
|
||||
自拍
|
||||
自慰
|
||||
作爱
|
||||
18禁
|
||||
99bb
|
||||
a4u
|
||||
a4y
|
||||
adult
|
||||
amateur
|
||||
anal
|
||||
a片
|
||||
fuck
|
||||
gay片
|
||||
g点
|
||||
g片
|
||||
hardcore
|
||||
h动画
|
||||
h动漫
|
||||
incest
|
||||
porn
|
||||
secom
|
||||
sexinsex
|
||||
sm女王
|
||||
xiao77
|
||||
xing伴侣
|
||||
tokyohot
|
||||
yin荡
|
||||
1064
app/core/api/resources/sensitive/补充词库.txt
Normal file
1064
app/core/api/resources/sensitive/补充词库.txt
Normal file
File diff suppressed because it is too large
Load Diff
244
app/core/api/resources/sensitive/贪腐词库.txt
Normal file
244
app/core/api/resources/sensitive/贪腐词库.txt
Normal file
@@ -0,0 +1,244 @@
|
||||
腐败
|
||||
贪污
|
||||
gcd
|
||||
共贪党
|
||||
gongchandang
|
||||
阿共
|
||||
共一产一党
|
||||
产党共
|
||||
公产党
|
||||
工产党
|
||||
共c党
|
||||
共x党
|
||||
供产
|
||||
共铲
|
||||
共惨
|
||||
供铲党
|
||||
供铲谠
|
||||
供铲裆
|
||||
共残党
|
||||
共残主义
|
||||
共产主义的幽灵
|
||||
拱铲
|
||||
老共
|
||||
中珙
|
||||
中gong
|
||||
gc党
|
||||
贡挡
|
||||
gong党
|
||||
g产
|
||||
狗产蛋
|
||||
共残裆
|
||||
恶党
|
||||
邪党
|
||||
共产专制
|
||||
共产王朝
|
||||
裆中央
|
||||
土共
|
||||
土g
|
||||
共狗
|
||||
g匪
|
||||
共匪
|
||||
仇共
|
||||
共产党腐败
|
||||
共产党专制
|
||||
共产党的报应
|
||||
共产党的末日
|
||||
共产党专制
|
||||
communistparty
|
||||
症腐
|
||||
政腐
|
||||
政付
|
||||
正府
|
||||
政俯
|
||||
政f
|
||||
zhengfu
|
||||
政zhi
|
||||
挡中央
|
||||
档中央
|
||||
中国zf
|
||||
中央zf
|
||||
国wu院
|
||||
中华帝国
|
||||
gong和
|
||||
大陆官方
|
||||
北京政权
|
||||
刘志军
|
||||
张曙
|
||||
刘志军
|
||||
买别墅
|
||||
玩女人
|
||||
贪20亿
|
||||
许宗衡
|
||||
贪财物
|
||||
李启红
|
||||
贪腐财富
|
||||
落马
|
||||
高官名单
|
||||
陈希同
|
||||
贪污
|
||||
玩忽职守
|
||||
有期徒刑
|
||||
陈良宇
|
||||
受贿罪
|
||||
滥用职权
|
||||
有期徒刑
|
||||
没收个人财产
|
||||
成克杰
|
||||
死刑
|
||||
程维高
|
||||
严重违纪
|
||||
开除党籍
|
||||
撤销职务
|
||||
刘方仁
|
||||
无期徒刑
|
||||
倪献策
|
||||
徇私舞弊
|
||||
梁湘
|
||||
以权谋私
|
||||
撤职。
|
||||
李嘉廷
|
||||
死刑缓期
|
||||
张国光
|
||||
韩桂芝
|
||||
宋平顺
|
||||
自杀
|
||||
黄瑶
|
||||
双规
|
||||
陈绍基
|
||||
判处死刑
|
||||
剥夺政治权利终身
|
||||
没收个人全部财产
|
||||
石兆彬
|
||||
侯伍杰
|
||||
王昭耀
|
||||
剥夺政治权利
|
||||
杜世成
|
||||
沈图
|
||||
叛逃美国
|
||||
罗云光
|
||||
起诉
|
||||
张辛泰
|
||||
李效时
|
||||
边少斌
|
||||
徐鹏航
|
||||
违纪
|
||||
收受股票
|
||||
王乐毅
|
||||
李纪周
|
||||
郑光迪
|
||||
田凤山。
|
||||
邱晓华
|
||||
郑筱萸
|
||||
孙鹤龄
|
||||
蓝田造假案
|
||||
于幼军
|
||||
留党察看
|
||||
何洪达
|
||||
朱志刚
|
||||
杨汇泉
|
||||
官僚主义
|
||||
徐炳松
|
||||
托乎提沙比尔
|
||||
王宝森
|
||||
经济犯罪
|
||||
畏罪自杀。
|
||||
陈水文
|
||||
孟庆平
|
||||
胡长清
|
||||
朱川
|
||||
许运鸿
|
||||
丘广钟
|
||||
刘知炳
|
||||
丛福奎
|
||||
王怀忠
|
||||
巨额财产
|
||||
来源不明罪
|
||||
李达昌
|
||||
刘长贵
|
||||
王钟麓
|
||||
阿曼哈吉
|
||||
付晓光
|
||||
自动辞
|
||||
刘克田
|
||||
吕德彬
|
||||
刘维明
|
||||
双开
|
||||
刘志华
|
||||
孙瑜
|
||||
李堂堂
|
||||
韩福才 青海
|
||||
欧阳德 广东
|
||||
韦泽芳 海南
|
||||
铁英 北京
|
||||
辛业江 海南
|
||||
于飞 广东
|
||||
姜殿武 河北
|
||||
秦昌典 重庆
|
||||
范广举 黑龙江
|
||||
张凯广东
|
||||
王厚宏海南
|
||||
陈维席安徽
|
||||
王有杰河南
|
||||
王武龙江苏
|
||||
米凤君吉林
|
||||
宋勇辽宁
|
||||
张家盟浙江
|
||||
马烈孙宁夏
|
||||
黄纪诚北京
|
||||
常征贵州
|
||||
王式惠重庆
|
||||
周文吉
|
||||
王庆录广西
|
||||
潘广田山东
|
||||
朱作勇甘肃
|
||||
孙善武河南
|
||||
宋晨光江西
|
||||
梁春禄广西政协
|
||||
鲁家善 中国交通
|
||||
金德琴 中信
|
||||
李大强 神华
|
||||
吴文英 纺织
|
||||
查克明 华能
|
||||
朱小华光大
|
||||
高严 国家电力
|
||||
王雪冰
|
||||
林孔兴
|
||||
刘金宝
|
||||
张恩照
|
||||
陈同海
|
||||
康日新
|
||||
王益
|
||||
张春江
|
||||
洪清源
|
||||
平义杰
|
||||
李恩潮
|
||||
孙小虹
|
||||
陈忠
|
||||
慕绥新
|
||||
田凤岐
|
||||
麦崇楷
|
||||
柴王群
|
||||
吴振汉
|
||||
张秋阳
|
||||
徐衍东
|
||||
徐发 黑龙江
|
||||
张宗海
|
||||
丁鑫发
|
||||
徐国健
|
||||
李宝金
|
||||
单平
|
||||
段义和
|
||||
荆福生
|
||||
陈少勇
|
||||
黄松有
|
||||
皮黔生
|
||||
王华元
|
||||
王守业
|
||||
刘连昆
|
||||
孙晋美
|
||||
邵松高
|
||||
肖怀枢
|
||||
刘广智 空军
|
||||
姬胜德 总参
|
||||
廖伯年 北京
|
||||
53308
app/core/api/resources/sensitive/零时-Tencent.txt
Normal file
53308
app/core/api/resources/sensitive/零时-Tencent.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,16 +0,0 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"golang.org/x/text/language"
|
||||
|
||||
"schisandra-album-cloud-microservices/common/i18n"
|
||||
)
|
||||
|
||||
func I18nMiddleware(next http.HandlerFunc) http.HandlerFunc {
|
||||
return i18n.NewI18nMiddleware([]language.Tag{
|
||||
language.English,
|
||||
language.Chinese,
|
||||
}, []string{"../../resources/language/active.en.toml", "../../resources/language/active.zh.toml"}).Handle(next)
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
package response
|
||||
17
go.mod
17
go.mod
@@ -6,13 +6,12 @@ require (
|
||||
entgo.io/ent v0.14.1
|
||||
github.com/chenmingyong0423/go-mongox/v2 v2.0.0-beta1
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1
|
||||
github.com/nicksnyder/go-i18n/v2 v2.4.1
|
||||
github.com/pelletier/go-toml/v2 v2.2.2
|
||||
github.com/zeromicro/go-zero v1.7.3
|
||||
go.mongodb.org/mongo-driver/v2 v2.0.0-beta2
|
||||
golang.org/x/crypto v0.28.0
|
||||
golang.org/x/text v0.19.0
|
||||
golang.org/x/text v0.20.0
|
||||
google.golang.org/grpc v1.65.0
|
||||
)
|
||||
|
||||
@@ -22,11 +21,13 @@ require (
|
||||
github.com/agext/levenshtein v1.2.1 // indirect
|
||||
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/ccpwcn/kgo v1.2.3 // indirect
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||
github.com/fatih/color v1.17.0 // indirect
|
||||
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
|
||||
github.com/go-bindata/go-bindata v3.1.2+incompatible // indirect
|
||||
github.com/go-logr/logr v1.4.2 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-openapi/inflect v0.19.0 // indirect
|
||||
@@ -34,24 +35,33 @@ require (
|
||||
github.com/go-playground/universal-translator v0.18.1 // indirect
|
||||
github.com/go-playground/validator/v10 v10.20.0 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||
github.com/golang/snappy v0.0.4 // indirect
|
||||
github.com/google/go-cmp v0.6.0 // indirect
|
||||
github.com/google/uuid v1.6.0 // indirect
|
||||
github.com/gorilla/securecookie v1.1.1 // indirect
|
||||
github.com/gorilla/sessions v1.2.0 // indirect
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
|
||||
github.com/hashicorp/hcl/v2 v2.13.0 // indirect
|
||||
github.com/klauspost/compress v1.17.9 // indirect
|
||||
github.com/leodido/go-urn v1.4.0 // indirect
|
||||
github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20240510055607-89e20ab7b6c6 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect
|
||||
github.com/mssola/useragent v1.0.0 // indirect
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||
github.com/openzipkin/zipkin-go v0.4.3 // indirect
|
||||
github.com/prometheus/client_golang v1.20.5 // indirect
|
||||
github.com/prometheus/client_model v0.6.1 // indirect
|
||||
github.com/prometheus/common v0.55.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
github.com/rbcervilla/redisstore/v9 v9.0.0 // indirect
|
||||
github.com/redis/go-redis/v9 v9.7.0 // indirect
|
||||
github.com/spaolacci/murmur3 v1.1.0 // indirect
|
||||
github.com/wenlng/go-captcha-assets v1.0.1 // indirect
|
||||
github.com/wenlng/go-captcha/v2 v2.0.1 // indirect
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
|
||||
github.com/xdg-go/scram v1.1.2 // indirect
|
||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||
@@ -69,9 +79,10 @@ require (
|
||||
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
|
||||
go.uber.org/automaxprocs v1.6.0 // indirect
|
||||
golang.org/x/image v0.22.0 // indirect
|
||||
golang.org/x/mod v0.20.0 // indirect
|
||||
golang.org/x/net v0.30.0 // indirect
|
||||
golang.org/x/sync v0.8.0 // indirect
|
||||
golang.org/x/sync v0.9.0 // indirect
|
||||
golang.org/x/sys v0.26.0 // indirect
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d // indirect
|
||||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect
|
||||
|
||||
51
go.sum
51
go.sum
@@ -22,6 +22,8 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
|
||||
github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c=
|
||||
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
|
||||
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
|
||||
github.com/ccpwcn/kgo v1.2.3 h1:lcCO26EH/FcAhjuVgEkkJ2YcEOQd5TiFYAak9qwYknI=
|
||||
github.com/ccpwcn/kgo v1.2.3/go.mod h1:y6G244zGfW95c6aCcw00TdZR6JUfBCmQ4acJcFdaktA=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
@@ -37,6 +39,8 @@ github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
|
||||
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
|
||||
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0=
|
||||
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk=
|
||||
github.com/go-bindata/go-bindata v3.1.2+incompatible h1:5vjJMVhowQdPzjE1LdxyFF7YFTXg5IgGVW4gBr5IbvE=
|
||||
github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo=
|
||||
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
||||
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
||||
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||
@@ -60,6 +64,8 @@ github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOW
|
||||
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
|
||||
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
|
||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||
@@ -69,12 +75,18 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
|
||||
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
|
||||
github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ=
|
||||
github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k=
|
||||
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw=
|
||||
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=
|
||||
github.com/hashicorp/hcl/v2 v2.13.0 h1:0Apadu1w6M11dyGFxWnmhhcMjkbAiKCv7G1r/2QgCNc=
|
||||
github.com/hashicorp/hcl/v2 v2.13.0/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
|
||||
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
@@ -88,19 +100,29 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
|
||||
github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
|
||||
github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20240510055607-89e20ab7b6c6 h1:YeIGErDiB/fhmNsJy0cfjoT8XnRNT9hb19xZ4MvWQDU=
|
||||
github.com/lionsoul2014/ip2region/binding/golang v0.0.0-20240510055607-89e20ab7b6c6/go.mod h1:C5LA5UO2ZXJrLaPLYtE1wUJMiyd/nwWaCO5cw/2pSHs=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/mattn/go-sqlite3 v1.14.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y=
|
||||
github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
|
||||
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM=
|
||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||
github.com/mssola/useragent v1.0.0 h1:WRlDpXyxHDNfvZaPEut5Biveq86Ze4o4EMffyMxmH5o=
|
||||
github.com/mssola/useragent v1.0.0/go.mod h1:hz9Cqz4RXusgg1EdI4Al0INR62kP7aPSRNHnpU+b85Y=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||
github.com/nicksnyder/go-i18n/v2 v2.4.1 h1:zwzjtX4uYyiaU02K5Ia3zSkpJZrByARkRB4V3YPrr0g=
|
||||
github.com/nicksnyder/go-i18n/v2 v2.4.1/go.mod h1:++Pl70FR6Cki7hdzZRnEEqdc2dJt+SAGotyFg/SvZMk=
|
||||
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg=
|
||||
github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c=
|
||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||
@@ -117,14 +139,22 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G
|
||||
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
|
||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
||||
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
||||
github.com/rbcervilla/redisstore/v9 v9.0.0 h1:wOPbBaydbdxzi1gTafDftCI/Z7vnsXw0QDPCuhiMG0g=
|
||||
github.com/rbcervilla/redisstore/v9 v9.0.0/go.mod h1:q/acLpoKkTZzIsBYt0R4THDnf8W/BH6GjQYvxDSSfdI=
|
||||
github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E=
|
||||
github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw=
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
||||
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
|
||||
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
|
||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I=
|
||||
github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
@@ -137,6 +167,10 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT
|
||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
|
||||
github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
|
||||
github.com/wenlng/go-captcha-assets v1.0.1 h1:AdjRFMKmadPRWRTv0XEYfjDvcaayZ2yExITDvlK/7bk=
|
||||
github.com/wenlng/go-captcha-assets v1.0.1/go.mod h1:yQqc7rRbxgLCg+tWtVp+7Y317D1wIZDan/yIwt8wSac=
|
||||
github.com/wenlng/go-captcha/v2 v2.0.1 h1:N6XSHymJ7e9Z/LyWWTWLMAkAXtW27ZROZpvNrqPhSnA=
|
||||
github.com/wenlng/go-captcha/v2 v2.0.1/go.mod h1:5hac1em3uXoyC5ipZ0xFv9umNM/waQvYAQdr0cx/h34=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
|
||||
github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
|
||||
github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY=
|
||||
@@ -186,7 +220,11 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw=
|
||||
golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U=
|
||||
golang.org/x/image v0.16.0/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs=
|
||||
golang.org/x/image v0.22.0 h1:UtK5yLUzilVrkjMAZAZ34DXGpASN8i8pj8g+O+yd10g=
|
||||
golang.org/x/image v0.22.0/go.mod h1:9hPFhljd4zZ1GNSIZJ49sqbp45GKK9t6w+iXvGqZUz4=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
|
||||
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||
@@ -194,34 +232,47 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
|
||||
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
|
||||
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
|
||||
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
|
||||
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
|
||||
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
|
||||
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
|
||||
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
|
||||
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d h1:kHjw/5UfflP/L5EbledDrcG4C2597RtymmGRZvHiCuY=
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
[user]
|
||||
name = "John Doe"
|
||||
@@ -1,2 +0,0 @@
|
||||
[user]
|
||||
name = "张三"
|
||||
Reference in New Issue
Block a user