优化表结构,重构模型,重新实现基于白银网关的提取节点流程
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"net"
|
||||
"platform/pkg/env"
|
||||
"platform/pkg/u"
|
||||
"platform/web/auth"
|
||||
"platform/web/core"
|
||||
g "platform/web/globals"
|
||||
"platform/web/globals/orm"
|
||||
m "platform/web/models"
|
||||
q "platform/web/queries"
|
||||
"time"
|
||||
@@ -89,7 +90,7 @@ func CreateWhitelist(c *fiber.Ctx) error {
|
||||
return err
|
||||
}
|
||||
|
||||
err = secureAddr(req.Host)
|
||||
ip, err := secureAddr(req.Host)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -97,7 +98,7 @@ func CreateWhitelist(c *fiber.Ctx) error {
|
||||
// 创建白名单
|
||||
err = q.Whitelist.Create(&m.Whitelist{
|
||||
UserID: authCtx.User.ID,
|
||||
Host: req.Host,
|
||||
IP: u.Z(ip),
|
||||
Remark: &req.Remark,
|
||||
})
|
||||
return nil
|
||||
@@ -125,17 +126,21 @@ func UpdateWhitelist(c *fiber.Ctx) error {
|
||||
return fiber.NewError(fiber.StatusBadRequest, "id is required")
|
||||
}
|
||||
|
||||
ip, err := secureAddr(req.Host)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新白名单
|
||||
_, err = q.Whitelist.
|
||||
Where(
|
||||
q.Whitelist.ID.Eq(req.ID),
|
||||
q.Whitelist.UserID.Eq(authCtx.User.ID),
|
||||
).
|
||||
Updates(&m.Whitelist{
|
||||
ID: req.ID,
|
||||
Host: req.Host,
|
||||
Remark: &req.Remark,
|
||||
})
|
||||
UpdateSimple(
|
||||
q.Whitelist.IP.Value(ip),
|
||||
q.Whitelist.Remark.Value(req.Remark),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -186,13 +191,13 @@ func RemoveWhitelist(c *fiber.Ctx) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func secureAddr(str string) error {
|
||||
var addr = net.ParseIP(str)
|
||||
if addr == nil {
|
||||
return fiber.NewError(fiber.StatusBadRequest, "IP 解析失败")
|
||||
func secureAddr(str string) (*orm.Inet, error) {
|
||||
ip, err := orm.ParseInet(str)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if env.RunMode == env.RunModeDev || addr.IsGlobalUnicast() {
|
||||
return nil
|
||||
if !ip.IsGlobalUnicast() && env.RunMode != env.RunModeDev {
|
||||
return nil, fiber.NewError(fiber.StatusBadRequest, "IP 地址不可用")
|
||||
}
|
||||
return fiber.NewError(fiber.StatusBadRequest, "IP 地址不可用")
|
||||
return ip, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user