sub.go 999 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package controller
  2. import (
  3. "encoding/base64"
  4. "strings"
  5. "x-ui/web/service"
  6. "github.com/gin-gonic/gin"
  7. )
  8. type SUBController struct {
  9. BaseController
  10. subService service.SubService
  11. }
  12. func NewSUBController(g *gin.RouterGroup) *SUBController {
  13. a := &SUBController{}
  14. a.initRouter(g)
  15. return a
  16. }
  17. func (a *SUBController) initRouter(g *gin.RouterGroup) {
  18. g = g.Group("/sub")
  19. g.GET("/:subid", a.subs)
  20. }
  21. func (a *SUBController) subs(c *gin.Context) {
  22. subId := c.Param("subid")
  23. host := strings.Split(c.Request.Host, ":")[0]
  24. subs, headers, err := a.subService.GetSubs(subId, host)
  25. if err != nil || len(subs) == 0 {
  26. c.String(400, "Error!")
  27. } else {
  28. result := ""
  29. for _, sub := range subs {
  30. result += sub + "\n"
  31. }
  32. // Add headers
  33. c.Writer.Header().Set("Subscription-Userinfo", headers[0])
  34. c.Writer.Header().Set("Profile-Update-Interval", headers[1])
  35. c.Writer.Header().Set("Profile-Title", headers[2])
  36. c.String(200, base64.StdEncoding.EncodeToString([]byte(result)))
  37. }
  38. }