Files
platform/web/handlers/proxy.go

161 lines
2.8 KiB
Go
Raw Normal View History

package handlers
import (
2025-12-22 17:31:31 +08:00
"platform/web/auth"
2025-12-05 18:57:52 +08:00
"platform/web/core"
2026-04-18 11:15:29 +08:00
g "platform/web/globals"
2025-12-01 12:42:51 +08:00
s "platform/web/services"
"github.com/gofiber/fiber/v2"
)
2026-06-10 14:32:45 +08:00
// ====================
// admin 路由
// ====================
2026-04-18 11:15:29 +08:00
func PageProxyByAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyRead)
if err != nil {
return err
}
var req core.PageReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
2025-12-01 12:42:51 +08:00
}
2026-04-18 11:15:29 +08:00
list, total, err := s.Proxy.Page(req)
2025-12-01 12:42:51 +08:00
if err != nil {
2026-04-18 11:15:29 +08:00
return err
2025-12-01 12:42:51 +08:00
}
2026-04-18 11:15:29 +08:00
return c.JSON(core.PageResp{
List: list,
Total: int(total),
Page: req.GetPage(),
Size: req.GetSize(),
})
2025-12-01 12:42:51 +08:00
}
2026-04-18 11:15:29 +08:00
func AllProxyByAdmin(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyRead)
2025-12-22 17:31:31 +08:00
if err != nil {
return err
}
2026-04-18 11:15:29 +08:00
list, err := s.Proxy.All()
2025-12-22 17:31:31 +08:00
if err != nil {
return err
}
2026-04-18 11:15:29 +08:00
return c.JSON(list)
}
func CreateProxy(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyWrite)
2025-12-22 17:31:31 +08:00
if err != nil {
2026-04-18 11:15:29 +08:00
return err
}
var req s.CreateProxy
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
if err := s.Proxy.Create(&req); err != nil {
return err
2025-12-22 17:31:31 +08:00
}
2026-04-18 11:15:29 +08:00
return c.JSON(nil)
}
func UpdateProxy(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyWrite)
2025-12-22 17:31:31 +08:00
if err != nil {
2026-04-18 11:15:29 +08:00
return err
}
var req s.UpdateProxy
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
2025-12-22 17:31:31 +08:00
}
2026-04-18 11:15:29 +08:00
if err := s.Proxy.Update(&req); err != nil {
return err
}
return c.JSON(nil)
}
2026-04-18 11:15:29 +08:00
func UpdateProxyStatus(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyWriteStatus)
if err != nil {
return err
}
var req s.UpdateProxyStatus
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
if err := s.Proxy.UpdateStatus(&req); err != nil {
return err
}
return c.JSON(nil)
}
2026-06-11 15:07:46 +08:00
func SyncProxyPorts(c *fiber.Ctx) error {
2026-04-18 11:15:29 +08:00
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyWrite)
if err != nil {
return err
}
var req core.IdReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
2026-06-11 15:07:46 +08:00
if err := s.Proxy.SyncPorts(req.Id); err != nil {
return err
}
return c.JSON(nil)
}
func SyncProxyChains(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyWrite)
if err != nil {
return err
}
var req core.IdReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
if err := s.Proxy.SyncChains(req.Id); err != nil {
2026-04-18 11:15:29 +08:00
return err
}
return c.JSON(nil)
}
2026-06-10 14:32:45 +08:00
func RemoveProxy(c *fiber.Ctx) error {
_, err := auth.GetAuthCtx(c).PermitAdmin(core.ScopeProxyWrite)
if err != nil {
return err
}
2026-06-10 14:32:45 +08:00
var req core.IdReq
if err := g.Validator.ParseBody(c, &req); err != nil {
return err
}
2025-12-22 17:31:31 +08:00
2026-06-10 14:32:45 +08:00
if err := s.Proxy.Remove(req.Id); err != nil {
return err
}
2026-06-10 14:32:45 +08:00
return c.JSON(nil)
}