sub.go 892 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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, header, 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 subscription-userinfo
  33. c.Writer.Header().Set("Subscription-Userinfo", header)
  34. c.String(200, base64.StdEncoding.EncodeToString([]byte(result)))
  35. }
  36. }