Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sub/subController.go')
-rw-r--r--sub/subController.go69
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)
+ }
+}