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
path: root/web
diff options
context:
space:
mode:
authorMHSanaei <ho3ein.sanaei@gmail.com>2023-05-17 00:37:35 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2023-05-17 00:37:35 +0300
commitbe50be75fe56a617713efe1cc56de3a14ec7e0c9 (patch)
tree3ae5c9174486a34f89779692907c599f11f5af22 /web
parent70e7987df5f3018d62cc39758824ebbdf2ee64ca (diff)
[sub] add more headers
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
Diffstat (limited to 'web')
-rw-r--r--web/controller/sub.go8
-rw-r--r--web/service/sub.go15
2 files changed, 13 insertions, 10 deletions
diff --git a/web/controller/sub.go b/web/controller/sub.go
index 5ab1fe46..2b218c21 100644
--- a/web/controller/sub.go
+++ b/web/controller/sub.go
@@ -29,7 +29,7 @@ func (a *SUBController) initRouter(g *gin.RouterGroup) {
func (a *SUBController) subs(c *gin.Context) {
subId := c.Param("subid")
host := strings.Split(c.Request.Host, ":")[0]
- subs, header, err := a.subService.GetSubs(subId, host)
+ subs, headers, err := a.subService.GetSubs(subId, host)
if err != nil || len(subs) == 0 {
c.String(400, "Error!")
} else {
@@ -38,8 +38,10 @@ func (a *SUBController) subs(c *gin.Context) {
result += sub + "\n"
}
- // Add subscription-userinfo
- c.Writer.Header().Set("Subscription-Userinfo", header)
+ // 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.String(200, base64.StdEncoding.EncodeToString([]byte(result)))
}
diff --git a/web/service/sub.go b/web/service/sub.go
index bc34366f..01cd29dd 100644
--- a/web/service/sub.go
+++ b/web/service/sub.go
@@ -11,7 +11,6 @@ import (
"x-ui/xray"
"github.com/goccy/go-json"
- "gorm.io/gorm"
)
type SubService struct {
@@ -19,15 +18,15 @@ type SubService struct {
inboundService InboundService
}
-func (s *SubService) GetSubs(subId string, host string) ([]string, string, error) {
+func (s *SubService) GetSubs(subId string, host string) ([]string, []string, error) {
s.address = host
var result []string
- var header string
+ var headers []string
var traffic xray.ClientTraffic
var clientTraffics []xray.ClientTraffic
inbounds, err := s.getInboundsBySubId(subId)
if err != nil {
- return nil, "", err
+ return nil, nil, err
}
for _, inbound := range inbounds {
clients, err := s.inboundService.getClients(inbound)
@@ -66,15 +65,17 @@ func (s *SubService) GetSubs(subId string, host string) ([]string, string, error
}
}
}
- header = fmt.Sprintf("upload=%d; download=%d; total=%d; expire=%d", traffic.Up, traffic.Down, traffic.Total, traffic.ExpiryTime/1000)
- return result, header, nil
+ headers = append(headers, fmt.Sprintf("upload=%d; download=%d; total=%d; expire=%d", traffic.Up, traffic.Down, traffic.Total, traffic.ExpiryTime/1000))
+ headers = append(headers, "12")
+ headers = append(headers, subId)
+ return result, headers, nil
}
func (s *SubService) getInboundsBySubId(subId string) ([]*model.Inbound, error) {
db := database.GetDB()
var inbounds []*model.Inbound
err := db.Model(model.Inbound{}).Preload("ClientStats").Where("settings like ? and enable = ?", fmt.Sprintf(`%%"subId": "%s"%%`, subId), true).Find(&inbounds).Error
- if err != nil && err != gorm.ErrRecordNotFound {
+ if err != nil {
return nil, err
}
return inbounds, nil