2025-05-13 09:29:13 +08:00
|
|
|
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"
|
2025-05-13 18:47:30 +08:00
|
|
|
|
2025-05-27 15:08:18 +08:00
|
|
|
"github.com/gofiber/fiber/v2"
|
2025-05-13 09:29:13 +08:00
|
|
|
)
|
|
|
|
|
|
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
|
|
|
|
|
}
|
2025-05-13 15:26:40 +08:00
|
|
|
|
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)
|
2025-05-13 09:29:13 +08:00
|
|
|
}
|
|
|
|
|
|
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)
|
2025-05-14 17:45:14 +08:00
|
|
|
}
|
|
|
|
|
|
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
|
|
|
|
|
}
|
2025-05-14 17:45:14 +08:00
|
|
|
|
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
|
|
|
|
|
}
|
2025-05-27 15:08:18 +08:00
|
|
|
|
2026-06-10 14:32:45 +08:00
|
|
|
return c.JSON(nil)
|
2025-05-27 15:08:18 +08:00
|
|
|
}
|