diff options
Diffstat (limited to 'sub/subController.go')
| -rw-r--r-- | sub/subController.go | 69 |
1 files changed, 55 insertions, 14 deletions
diff --git a/sub/subController.go b/sub/subController.go index 5f7c69cf..e0b641df 100644 --- a/sub/subController.go +++ b/sub/subController.go @@ -3,34 +3,57 @@ package sub import ( "encoding/base64" "strings" - "x-ui/web/service" "github.com/gin-gonic/gin" ) type SUBController struct { - subService SubService - settingService service.SettingService + subPath string + subJsonPath string + subEncrypt bool + updateInterval string + + subService *SubService + subJsonService *SubJsonService } -func NewSUBController(g *gin.RouterGroup) *SUBController { - a := &SUBController{} +func NewSUBController( + g *gin.RouterGroup, + subPath string, + jsonPath string, + encrypt bool, + showInfo bool, + rModel string, + update string, + jsonFragment string) *SUBController { + + a := &SUBController{ + subPath: subPath, + subJsonPath: jsonPath, + subEncrypt: encrypt, + updateInterval: update, + + subService: NewSubService(showInfo, rModel), + subJsonService: NewSubJsonService(jsonFragment), + } a.initRouter(g) return a } func (a *SUBController) initRouter(g *gin.RouterGroup) { - g = g.Group("/") + gLink := g.Group(a.subPath) + gJson := g.Group(a.subJsonPath) - g.GET("/:subid", a.subs) + gLink.GET(":subid", a.subs) + + gJson.GET(":subid", a.subJsons) } func (a *SUBController) subs(c *gin.Context) { - subEncrypt, _ := a.settingService.GetSubEncrypt() - subShowInfo, _ := a.settingService.GetSubShowInfo() + println(c.Request.Header["User-Agent"][0]) subId := c.Param("subid") host := strings.Split(c.Request.Host, ":")[0] - subs, headers, err := a.subService.GetSubs(subId, host, subShowInfo) + subs, header, err := a.subService.GetSubs(subId, host) if err != nil || len(subs) == 0 { c.String(400, "Error!") } else { @@ -40,14 +63,32 @@ func (a *SUBController) subs(c *gin.Context) { } // Add headers - c.Writer.Header().Set("Subscription-Userinfo", headers[0]) - c.Writer.Header().Set("Profile-Update-Interval", headers[1]) - c.Writer.Header().Set("Profile-Title", headers[2]) + c.Writer.Header().Set("Subscription-Userinfo", header) + c.Writer.Header().Set("Profile-Update-Interval", a.updateInterval) + c.Writer.Header().Set("Profile-Title", subId) - if subEncrypt { + if a.subEncrypt { c.String(200, base64.StdEncoding.EncodeToString([]byte(result))) } else { c.String(200, result) } } } + +func (a *SUBController) subJsons(c *gin.Context) { + println(c.Request.Header["User-Agent"][0]) + subId := c.Param("subid") + host := strings.Split(c.Request.Host, ":")[0] + jsonSub, header, err := a.subJsonService.GetJson(subId, host) + if err != nil || len(jsonSub) == 0 { + c.String(400, "Error!") + } else { + + // Add headers + c.Writer.Header().Set("Subscription-Userinfo", header) + c.Writer.Header().Set("Profile-Update-Interval", a.updateInterval) + c.Writer.Header().Set("Profile-Title", subId) + + c.String(200, jsonSub) + } +} |
