使用指针类型存储白名单、用户名和密码,允许批量传入授权配置
This commit is contained in:
@@ -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"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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("用户名或密码错误")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user