使用指针类型存储白名单、用户名和密码,允许批量传入授权配置

This commit is contained in:
2025-05-19 10:57:56 +08:00
parent 24351e1c56
commit 8c824595f4
3 changed files with 11 additions and 9 deletions

View File

@@ -4,7 +4,7 @@ import "time"
type Permit struct { type Permit struct {
Expire time.Time `json:"expire"` Expire time.Time `json:"expire"`
Whitelists []string `json:"whitelists"` Whitelists *[]string `json:"whitelists"`
Username string `json:"username"` Username *string `json:"username"`
Password string `json:"password"` Password *string `json:"password"`
} }

View File

@@ -47,9 +47,9 @@ func Protect(conn net.Conn, proto Protocol, username, password *string) (*core.A
} }
// 检查 IP 是否可用 // 检查 IP 是否可用
if len(permit.Whitelists) > 0 { if permit.Whitelists != nil && len(*permit.Whitelists) > 0 {
var found = false var found = false
for _, allowedHost := range permit.Whitelists { for _, allowedHost := range *permit.Whitelists {
var allowed = net.ParseIP(allowedHost) var allowed = net.ParseIP(allowedHost)
var remote = net.ParseIP(remoteHost) var remote = net.ParseIP(remoteHost)
if remote.Equal(allowed) { if remote.Equal(allowed) {
@@ -62,8 +62,8 @@ func Protect(conn net.Conn, proto Protocol, username, password *string) (*core.A
} }
} }
if username != nil && password != nil { if permit.Username != nil || permit.Password != nil {
if *username != permit.Username || *password != permit.Password { if *username != *permit.Username || *password != *permit.Password {
return nil, errors.New("用户名或密码错误") return nil, errors.New("用户名或密码错误")
} }
} }

View File

@@ -20,13 +20,15 @@ func Permit(ctx *fiber.Ctx) (err error) {
} }
// 获取请求参数 // 获取请求参数
req, err := core.Decrypt[PermitReq](&sec, app.PlatformSecret) req, err := core.Decrypt[[]PermitReq](&sec, app.PlatformSecret)
if err != nil { if err != nil {
return err return err
} }
// 保存授权配置 // 保存授权配置
app.Permits.Store(req.Id, &req.Permit) for _, permit := range *req {
app.Permits.Store(permit.Id, &permit.Permit)
}
return nil return nil
} }