From 3ac1d7f5460b4e89d8057c27d7772bd34519269d Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Sun, 14 Sep 2025 19:44:26 +0200 Subject: [PATCH] enhancements --- sub/subController.go | 19 ++++++++++++------- sub/subService.go | 12 ------------ web/html/subscription.html | 12 +++++++----- 3 files changed, 19 insertions(+), 24 deletions(-) diff --git a/sub/subController.go b/sub/subController.go index ac0c09a1..c37ff5a9 100644 --- a/sub/subController.go +++ b/sub/subController.go @@ -3,6 +3,7 @@ package sub import ( "encoding/base64" "strings" + "x-ui/config" "github.com/gin-gonic/gin" ) @@ -67,10 +68,6 @@ func (a *SUBController) subs(c *gin.Context) { result += sub + "\n" } - // Add headers via service - a.subService.ApplyCommonHeaders(c, header, a.updateInterval, a.subTitle) - a.subService.ApplyBase64ContentHeader(c, result) - // If the request expects HTML (e.g., browser) or explicitly asked (?html=1 or ?view=html), render the info page here accept := c.GetHeader("Accept") if strings.Contains(strings.ToLower(accept), "text/html") || c.Query("html") == "1" || strings.EqualFold(c.Query("view"), "html") { @@ -79,6 +76,7 @@ func (a *SUBController) subs(c *gin.Context) { page := a.subService.BuildPageData(subId, hostHeader, header, lastOnline, subs, subURL, subJsonURL) c.HTML(200, "subscription.html", gin.H{ "title": "subscription.title", + "cur_ver": config.GetVersion(), "host": page.Host, "base_path": page.BasePath, "sId": page.SId, @@ -100,6 +98,9 @@ func (a *SUBController) subs(c *gin.Context) { return } + // Add headers + a.ApplyCommonHeaders(c, header, a.updateInterval, a.subTitle) + if a.subEncrypt { c.String(200, base64.StdEncoding.EncodeToString([]byte(result))) } else { @@ -116,11 +117,15 @@ func (a *SUBController) subJsons(c *gin.Context) { c.String(400, "Error!") } else { - // Add headers via service - a.subService.ApplyCommonHeaders(c, header, a.updateInterval, a.subTitle) + // Add headers + a.ApplyCommonHeaders(c, header, a.updateInterval, a.subTitle) c.String(200, jsonSub) } } -// Note: host parsing and page data preparation moved to SubService +func (a *SUBController) ApplyCommonHeaders(c *gin.Context, header, updateInterval, profileTitle string) { + c.Writer.Header().Set("Subscription-Userinfo", header) + c.Writer.Header().Set("Profile-Update-Interval", updateInterval) + c.Writer.Header().Set("Profile-Title", "base64:"+base64.StdEncoding.EncodeToString([]byte(profileTitle))) +} diff --git a/sub/subService.go b/sub/subService.go index 485048fd..a47cb6be 100644 --- a/sub/subService.go +++ b/sub/subService.go @@ -1178,15 +1178,3 @@ func parseInt64(s string) (int64, error) { n, err := strconv.ParseInt(s, 10, 64) return n, err } - -// ApplyCommonHeaders sets standard subscription headers on the response writer. -func (s *SubService) ApplyCommonHeaders(c *gin.Context, header, updateInterval, profileTitle string) { - c.Writer.Header().Set("Subscription-Userinfo", header) - c.Writer.Header().Set("Profile-Update-Interval", updateInterval) - c.Writer.Header().Set("Profile-Title", "base64:"+base64.StdEncoding.EncodeToString([]byte(profileTitle))) -} - -// ApplyBase64ContentHeader adds the full subscription content as base64 header for convenience. -func (s *SubService) ApplyBase64ContentHeader(c *gin.Context, content string) { - c.Writer.Header().Set("Subscription-Content-Base64", base64.StdEncoding.EncodeToString([]byte(content))) -} diff --git a/web/html/subscription.html b/web/html/subscription.html index adcc97b1..710bfe43 100644 --- a/web/html/subscription.html +++ b/web/html/subscription.html @@ -1,4 +1,10 @@ {{ template "page/head_start" .}} + + + + + + {{ template "page/head_end" .}} {{ template "page/body_start" .}} @@ -262,11 +268,7 @@ style="display:none">{{ range .result }}{{ . }} {{ end }} -{{template "page/body_scripts" .}} - - {{template "component/aThemeSwitch" .}} + {{ template "page/body_end" .}} \ No newline at end of file