1
0

subController.go 1.0 KB

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