Files
Prism/internal/api/handlers_outbound.go
T
renjue 9dfa7aa7c5
CI / docker (push) Successful in 4m28s
feat: Prism HTTP/SOCKS5 代理网关及管理台
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 15:37:02 +08:00

53 lines
1.3 KiB
Go

package api
import (
"net/http"
"github.com/gin-gonic/gin"
)
func (s *Server) outboundOverview(c *gin.Context) {
data, err := s.app.OutboundOverview(c.Request.Context())
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, data)
}
type selectOutboundReq struct {
Proxy string `json:"proxy"`
}
func (s *Server) selectOutboundGroup(c *gin.Context) {
name := c.Param("name")
var req selectOutboundReq
if err := c.ShouldBindJSON(&req); err != nil || req.Proxy == "" {
c.JSON(http.StatusBadRequest, gin.H{"error": "proxy required"})
return
}
if err := s.app.SelectOutboundGroup(c.Request.Context(), name, req.Proxy); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"ok": true})
}
type defaultPolicyReq struct {
Policy string `json:"policy"`
}
func (s *Server) setDefaultPolicy(c *gin.Context) {
var req defaultPolicyReq
if err := c.ShouldBindJSON(&req); err != nil || req.Policy == "" {
c.JSON(http.StatusBadRequest, gin.H{"error": "policy required"})
return
}
if err := s.app.SetDefaultPolicy(c.Request.Context(), req.Policy); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
s.syncMihomoClient(c.Request.Context())
c.JSON(http.StatusOK, gin.H{"ok": true})
}