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:
Diffstat (limited to 'web')
-rw-r--r--web/controller/util.go4
-rw-r--r--web/entity/entity.go6
-rw-r--r--web/job/check_client_ip_job.go9
-rw-r--r--web/job/xray_traffic_job.go2
-rw-r--r--web/locale/locale.go4
-rw-r--r--web/service/inbound.go146
-rw-r--r--web/service/outbound.go2
-rw-r--r--web/service/server.go8
-rw-r--r--web/service/setting.go38
-rw-r--r--web/service/tgbot.go16
-rw-r--r--web/service/user.go2
-rw-r--r--web/service/xray.go20
12 files changed, 122 insertions, 135 deletions
diff --git a/web/controller/util.go b/web/controller/util.go
index 440de276..40c7a8e9 100644
--- a/web/controller/util.go
+++ b/web/controller/util.go
@@ -31,11 +31,11 @@ func jsonMsg(c *gin.Context, msg string, err error) {
jsonMsgObj(c, msg, nil, err)
}
-func jsonObj(c *gin.Context, obj interface{}, err error) {
+func jsonObj(c *gin.Context, obj any, err error) {
jsonMsgObj(c, "", obj, err)
}
-func jsonMsgObj(c *gin.Context, msg string, obj interface{}, err error) {
+func jsonMsgObj(c *gin.Context, msg string, obj any, err error) {
m := entity.Msg{
Obj: obj,
}
diff --git a/web/entity/entity.go b/web/entity/entity.go
index 98d26faf..02d19701 100644
--- a/web/entity/entity.go
+++ b/web/entity/entity.go
@@ -10,9 +10,9 @@ import (
)
type Msg struct {
- Success bool `json:"success"`
- Msg string `json:"msg"`
- Obj interface{} `json:"obj"`
+ Success bool `json:"success"`
+ Msg string `json:"msg"`
+ Obj any `json:"obj"`
}
type AllSetting struct {
diff --git a/web/job/check_client_ip_job.go b/web/job/check_client_ip_job.go
index c960268d..b95c8ee2 100644
--- a/web/job/check_client_ip_job.go
+++ b/web/job/check_client_ip_job.go
@@ -11,6 +11,7 @@ import (
"sort"
"time"
+ "slices"
"x-ui/database"
"x-ui/database/model"
"x-ui/logger"
@@ -193,13 +194,7 @@ func (j *CheckClientIpJob) checkError(e error) {
}
func (j *CheckClientIpJob) contains(s []string, str string) bool {
- for _, v := range s {
- if v == str {
- return true
- }
- }
-
- return false
+ return slices.Contains(s, str)
}
func (j *CheckClientIpJob) getInboundClientIps(clientEmail string) (*model.InboundClientIps, error) {
diff --git a/web/job/xray_traffic_job.go b/web/job/xray_traffic_job.go
index 12c64092..76022bc9 100644
--- a/web/job/xray_traffic_job.go
+++ b/web/job/xray_traffic_job.go
@@ -52,7 +52,7 @@ func (j *XrayTrafficJob) informTrafficToExternalAPI(inboundTraffics []*xray.Traf
logger.Warning("get ExternalTrafficInformURI failed:", err)
return
}
- requestBody, err := json.Marshal(map[string]interface{}{"clientTraffics": clientTraffics, "inboundTraffics": inboundTraffics})
+ requestBody, err := json.Marshal(map[string]any{"clientTraffics": clientTraffics, "inboundTraffics": inboundTraffics})
if err != nil {
logger.Warning("parse client/inbound traffic failed:", err)
return
diff --git a/web/locale/locale.go b/web/locale/locale.go
index adc90ec5..cdfe5394 100644
--- a/web/locale/locale.go
+++ b/web/locale/locale.go
@@ -48,13 +48,13 @@ func InitLocalizer(i18nFS embed.FS, settingService SettingService) error {
return nil
}
-func createTemplateData(params []string, seperator ...string) map[string]interface{} {
+func createTemplateData(params []string, seperator ...string) map[string]any {
var sep string = "=="
if len(seperator) > 0 {
sep = seperator[0]
}
- templateData := make(map[string]interface{})
+ templateData := make(map[string]any)
for _, param := range params {
parts := strings.SplitN(param, sep, 2)
templateData[parts[0]] = parts[1]
diff --git a/web/service/inbound.go b/web/service/inbound.go
index 4f28af21..fce01634 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -413,13 +413,13 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) (bool, error) {
return false, err
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(data.Settings), &settings)
if err != nil {
return false, err
}
- interfaceClients := settings["clients"].([]interface{})
+ interfaceClients := settings["clients"].([]any)
existEmail, err := s.checkEmailsExistForClients(clients)
if err != nil {
return false, err
@@ -450,13 +450,13 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) (bool, error) {
}
}
- var oldSettings map[string]interface{}
+ var oldSettings map[string]any
err = json.Unmarshal([]byte(oldInbound.Settings), &oldSettings)
if err != nil {
return false, err
}
- oldClients := oldSettings["clients"].([]interface{})
+ oldClients := oldSettings["clients"].([]any)
oldClients = append(oldClients, interfaceClients...)
oldSettings["clients"] = oldClients
@@ -489,7 +489,7 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) (bool, error) {
if oldInbound.Protocol == "shadowsocks" {
cipher = oldSettings["method"].(string)
}
- err1 := s.xrayApi.AddUser(string(oldInbound.Protocol), oldInbound.Tag, map[string]interface{}{
+ err1 := s.xrayApi.AddUser(string(oldInbound.Protocol), oldInbound.Tag, map[string]any{
"email": client.Email,
"id": client.ID,
"security": client.Security,
@@ -519,7 +519,7 @@ func (s *InboundService) DelInboundClient(inboundId int, clientId string) (bool,
logger.Error("Load Old Data Error")
return false, err
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(oldInbound.Settings), &settings)
if err != nil {
return false, err
@@ -534,11 +534,11 @@ func (s *InboundService) DelInboundClient(inboundId int, clientId string) (bool,
client_key = "email"
}
- interfaceClients := settings["clients"].([]interface{})
- var newClients []interface{}
+ interfaceClients := settings["clients"].([]any)
+ var newClients []any
needApiDel := false
for _, client := range interfaceClients {
- c := client.(map[string]interface{})
+ c := client.(map[string]any)
c_id := c[client_key].(string)
if c_id == clientId {
email, _ = c["email"].(string)
@@ -607,13 +607,13 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId strin
return false, err
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(data.Settings), &settings)
if err != nil {
return false, err
}
- interfaceClients := settings["clients"].([]interface{})
+ interfaceClients := settings["clients"].([]any)
oldInbound, err := s.GetInbound(data.Id)
if err != nil {
@@ -662,12 +662,12 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId strin
}
}
- var oldSettings map[string]interface{}
+ var oldSettings map[string]any
err = json.Unmarshal([]byte(oldInbound.Settings), &oldSettings)
if err != nil {
return false, err
}
- settingsClients := oldSettings["clients"].([]interface{})
+ settingsClients := oldSettings["clients"].([]any)
settingsClients[clientIndex] = interfaceClients[0]
oldSettings["clients"] = settingsClients
@@ -732,7 +732,7 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId strin
if oldInbound.Protocol == "shadowsocks" {
cipher = oldSettings["method"].(string)
}
- err1 := s.xrayApi.AddUser(string(oldInbound.Protocol), oldInbound.Tag, map[string]interface{}{
+ err1 := s.xrayApi.AddUser(string(oldInbound.Protocol), oldInbound.Tag, map[string]any{
"email": clients[0].Email,
"id": clients[0].ID,
"security": clients[0].Security,
@@ -809,7 +809,7 @@ func (s *InboundService) addInboundTraffic(tx *gorm.DB, traffics []*xray.Traffic
for _, traffic := range traffics {
if traffic.IsInbound {
err = tx.Model(&model.Inbound{}).Where("tag = ?", traffic.Tag).
- Updates(map[string]interface{}{
+ Updates(map[string]any{
"up": gorm.Expr("up + ?", traffic.Up),
"down": gorm.Expr("down + ?", traffic.Down),
}).Error
@@ -893,13 +893,13 @@ func (s *InboundService) adjustTraffics(tx *gorm.DB, dbClientTraffics []*xray.Cl
return nil, err
}
for inbound_index := range inbounds {
- settings := map[string]interface{}{}
+ settings := map[string]any{}
json.Unmarshal([]byte(inbounds[inbound_index].Settings), &settings)
- clients, ok := settings["clients"].([]interface{})
+ clients, ok := settings["clients"].([]any)
if ok {
- var newClients []interface{}
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
for traffic_index := range dbClientTraffics {
if dbClientTraffics[traffic_index].ExpiryTime < 0 && c["email"] == dbClientTraffics[traffic_index].Email {
oldExpiryTime := c["expiryTime"].(float64)
@@ -909,7 +909,7 @@ func (s *InboundService) adjustTraffics(tx *gorm.DB, dbClientTraffics []*xray.Cl
break
}
}
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
settings["clients"] = newClients
modifiedSettings, err := json.MarshalIndent(settings, "", " ")
@@ -951,7 +951,7 @@ func (s *InboundService) autoRenewClients(tx *gorm.DB) (bool, int64, error) {
var clientsToAdd []struct {
protocol string
tag string
- client map[string]interface{}
+ client map[string]any
}
for _, traffic := range traffics {
@@ -962,11 +962,11 @@ func (s *InboundService) autoRenewClients(tx *gorm.DB) (bool, int64, error) {
return false, 0, err
}
for inbound_index := range inbounds {
- settings := map[string]interface{}{}
+ settings := map[string]any{}
json.Unmarshal([]byte(inbounds[inbound_index].Settings), &settings)
- clients := settings["clients"].([]interface{})
+ clients := settings["clients"].([]any)
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
for traffic_index, traffic := range traffics {
if traffic.Email == c["email"].(string) {
newExpiryTime := traffic.ExpiryTime
@@ -983,14 +983,14 @@ func (s *InboundService) autoRenewClients(tx *gorm.DB) (bool, int64, error) {
struct {
protocol string
tag string
- client map[string]interface{}
+ client map[string]any
}{
protocol: string(inbounds[inbound_index].Protocol),
tag: inbounds[inbound_index].Tag,
client: c,
})
}
- clients[client_index] = interface{}(c)
+ clients[client_index] = any(c)
break
}
}
@@ -1147,7 +1147,7 @@ func (s *InboundService) AddClientStat(tx *gorm.DB, inboundId int, client *model
func (s *InboundService) UpdateClientStat(tx *gorm.DB, email string, client *model.Client) error {
result := tx.Model(xray.ClientTraffic{}).
Where("email = ?", email).
- Updates(map[string]interface{}{
+ Updates(map[string]any{
"enable": true,
"email": client.Email,
"total": client.TotalGB,
@@ -1258,18 +1258,18 @@ func (s *InboundService) SetClientTelegramUserID(trafficId int, tgId int64) (boo
return false, common.NewError("Client Not Found For Email:", clientEmail)
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(inbound.Settings), &settings)
if err != nil {
return false, err
}
- clients := settings["clients"].([]interface{})
- var newClients []interface{}
+ clients := settings["clients"].([]any)
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
if c["email"] == clientEmail {
c["tgId"] = tgId
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
}
settings["clients"] = newClients
@@ -1343,18 +1343,18 @@ func (s *InboundService) ToggleClientEnableByEmail(clientEmail string) (bool, bo
return false, false, common.NewError("Client Not Found For Email:", clientEmail)
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(inbound.Settings), &settings)
if err != nil {
return false, false, err
}
- clients := settings["clients"].([]interface{})
- var newClients []interface{}
+ clients := settings["clients"].([]any)
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
if c["email"] == clientEmail {
c["enable"] = !clientOldEnabled
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
}
settings["clients"] = newClients
@@ -1405,18 +1405,18 @@ func (s *InboundService) ResetClientIpLimitByEmail(clientEmail string, count int
return false, common.NewError("Client Not Found For Email:", clientEmail)
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(inbound.Settings), &settings)
if err != nil {
return false, err
}
- clients := settings["clients"].([]interface{})
- var newClients []interface{}
+ clients := settings["clients"].([]any)
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
if c["email"] == clientEmail {
c["limitIp"] = count
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
}
settings["clients"] = newClients
@@ -1462,18 +1462,18 @@ func (s *InboundService) ResetClientExpiryTimeByEmail(clientEmail string, expiry
return false, common.NewError("Client Not Found For Email:", clientEmail)
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(inbound.Settings), &settings)
if err != nil {
return false, err
}
- clients := settings["clients"].([]interface{})
- var newClients []interface{}
+ clients := settings["clients"].([]any)
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
if c["email"] == clientEmail {
c["expiryTime"] = expiry_time
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
}
settings["clients"] = newClients
@@ -1522,18 +1522,18 @@ func (s *InboundService) ResetClientTrafficLimitByEmail(clientEmail string, tota
return false, common.NewError("Client Not Found For Email:", clientEmail)
}
- var settings map[string]interface{}
+ var settings map[string]any
err = json.Unmarshal([]byte(inbound.Settings), &settings)
if err != nil {
return false, err
}
- clients := settings["clients"].([]interface{})
- var newClients []interface{}
+ clients := settings["clients"].([]any)
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
if c["email"] == clientEmail {
c["totalGB"] = totalGB * 1024 * 1024 * 1024
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
}
settings["clients"] = newClients
@@ -1551,7 +1551,7 @@ func (s *InboundService) ResetClientTrafficByEmail(clientEmail string) error {
result := db.Model(xray.ClientTraffic{}).
Where("email = ?", clientEmail).
- Updates(map[string]interface{}{"enable": true, "up": 0, "down": 0})
+ Updates(map[string]any{"enable": true, "up": 0, "down": 0})
err := result.Error
if err != nil {
@@ -1582,14 +1582,14 @@ func (s *InboundService) ResetClientTraffic(id int, clientEmail string) (bool, e
s.xrayApi.Init(p.GetAPIPort())
cipher := ""
if string(inbound.Protocol) == "shadowsocks" {
- var oldSettings map[string]interface{}
+ var oldSettings map[string]any
err = json.Unmarshal([]byte(inbound.Settings), &oldSettings)
if err != nil {
return false, err
}
cipher = oldSettings["method"].(string)
}
- err1 := s.xrayApi.AddUser(string(inbound.Protocol), inbound.Tag, map[string]interface{}{
+ err1 := s.xrayApi.AddUser(string(inbound.Protocol), inbound.Tag, map[string]any{
"email": client.Email,
"id": client.ID,
"security": client.Security,
@@ -1634,7 +1634,7 @@ func (s *InboundService) ResetAllClientTraffics(id int) error {
result := db.Model(xray.ClientTraffic{}).
Where(whereText, id).
- Updates(map[string]interface{}{"enable": true, "up": 0, "down": 0})
+ Updates(map[string]any{"enable": true, "up": 0, "down": 0})
err := result.Error
return err
@@ -1645,7 +1645,7 @@ func (s *InboundService) ResetAllTraffics() error {
result := db.Model(model.Inbound{}).
Where("user_id > ?", 0).
- Updates(map[string]interface{}{"up": 0, "down": 0})
+ Updates(map[string]any{"up": 0, "down": 0})
err := result.Error
return err
@@ -1681,17 +1681,17 @@ func (s *InboundService) DelDepletedClients(id int) (err error) {
if err != nil {
return err
}
- var oldSettings map[string]interface{}
+ var oldSettings map[string]any
err = json.Unmarshal([]byte(oldInbound.Settings), &oldSettings)
if err != nil {
return err
}
- oldClients := oldSettings["clients"].([]interface{})
- var newClients []interface{}
+ oldClients := oldSettings["clients"].([]any)
+ var newClients []any
for _, client := range oldClients {
deplete := false
- c := client.(map[string]interface{})
+ c := client.(map[string]any)
for _, email := range emails {
if email == c["email"].(string) {
deplete = true
@@ -1907,14 +1907,14 @@ func (s *InboundService) MigrationRequirements() {
return
}
for inbound_index := range inbounds {
- settings := map[string]interface{}{}
+ settings := map[string]any{}
json.Unmarshal([]byte(inbounds[inbound_index].Settings), &settings)
- clients, ok := settings["clients"].([]interface{})
+ clients, ok := settings["clients"].([]any)
if ok {
// Fix Client configuration problems
- var newClients []interface{}
+ var newClients []any
for client_index := range clients {
- c := clients[client_index].(map[string]interface{})
+ c := clients[client_index].(map[string]any)
// Add email='' if it is not exists
if _, ok := c["email"]; !ok {
@@ -1923,7 +1923,7 @@ func (s *InboundService) MigrationRequirements() {
// Convert string tgId to int64
if _, ok := c["tgId"]; ok {
- var tgId interface{} = c["tgId"]
+ var tgId any = c["tgId"]
if tgIdStr, ok2 := tgId.(string); ok2 {
tgIdInt64, err := strconv.ParseInt(strings.ReplaceAll(tgIdStr, " ", ""), 10, 64)
if err == nil {
@@ -1938,7 +1938,7 @@ func (s *InboundService) MigrationRequirements() {
c["flow"] = ""
}
}
- newClients = append(newClients, interface{}(c))
+ newClients = append(newClients, any(c))
}
settings["clients"] = newClients
modifiedSettings, err := json.MarshalIndent(settings, "", " ")
@@ -1985,14 +1985,14 @@ func (s *InboundService) MigrationRequirements() {
}
for _, ep := range externalProxy {
- var reverses interface{}
- var stream map[string]interface{}
+ var reverses any
+ var stream map[string]any
json.Unmarshal(ep.StreamSettings, &stream)
- if tlsSettings, ok := stream["tlsSettings"].(map[string]interface{}); ok {
- if settings, ok := tlsSettings["settings"].(map[string]interface{}); ok {
- if domains, ok := settings["domains"].([]interface{}); ok {
+ if tlsSettings, ok := stream["tlsSettings"].(map[string]any); ok {
+ if settings, ok := tlsSettings["settings"].(map[string]any); ok {
+ if domains, ok := settings["domains"].([]any); ok {
for _, domain := range domains {
- if domainMap, ok := domain.(map[string]interface{}); ok {
+ if domainMap, ok := domain.(map[string]any); ok {
domainMap["forceTls"] = "same"
domainMap["port"] = ep.Port
domainMap["dest"] = domainMap["domain"].(string)
diff --git a/web/service/outbound.go b/web/service/outbound.go
index 3b432228..506cf618 100644
--- a/web/service/outbound.go
+++ b/web/service/outbound.go
@@ -89,7 +89,7 @@ func (s *OutboundService) ResetOutboundTraffic(tag string) error {
result := db.Model(model.OutboundTraffics{}).
Where(whereText, tag).
- Updates(map[string]interface{}{"up": 0, "down": 0, "total": 0})
+ Updates(map[string]any{"up": 0, "down": 0, "total": 0})
err := result.Error
if err != nil {
diff --git a/web/service/server.go b/web/service/server.go
index aa2909fe..99e2a97b 100644
--- a/web/service/server.go
+++ b/web/service/server.go
@@ -450,7 +450,7 @@ func (s *ServerService) GetLogs(count string, level string, syslog string) []str
return lines
}
-func (s *ServerService) GetConfigJson() (interface{}, error) {
+func (s *ServerService) GetConfigJson() (any, error) {
config, err := s.xrayService.GetXrayConfig()
if err != nil {
return nil, err
@@ -460,7 +460,7 @@ func (s *ServerService) GetConfigJson() (interface{}, error) {
return nil, err
}
- var jsonData interface{}
+ var jsonData any
err = json.Unmarshal(contents, &jsonData)
if err != nil {
return nil, err
@@ -591,7 +591,7 @@ func (s *ServerService) ImportDB(file multipart.File) error {
return nil
}
-func (s *ServerService) GetNewX25519Cert() (interface{}, error) {
+func (s *ServerService) GetNewX25519Cert() (any, error) {
// Run the command
cmd := exec.Command(xray.GetBinaryPath(), "x25519")
var out bytes.Buffer
@@ -609,7 +609,7 @@ func (s *ServerService) GetNewX25519Cert() (interface{}, error) {
privateKey := strings.TrimSpace(privateKeyLine[1])
publicKey := strings.TrimSpace(publicKeyLine[1])
- keyPair := map[string]interface{}{
+ keyPair := map[string]any{
"privateKey": privateKey,
"publicKey": publicKey,
}
diff --git a/web/service/setting.go b/web/service/setting.go
index 2555caa1..ed0f9dc3 100644
--- a/web/service/setting.go
+++ b/web/service/setting.go
@@ -74,8 +74,8 @@ var defaultValueMap = map[string]string{
type SettingService struct{}
-func (s *SettingService) GetDefaultJsonConfig() (interface{}, error) {
- var jsonData interface{}
+func (s *SettingService) GetDefaultJsonConfig() (any, error) {
+ var jsonData any
err := json.Unmarshal([]byte(xrayTemplateConfig), &jsonData)
if err != nil {
return nil, err
@@ -543,8 +543,8 @@ func (s *SettingService) UpdateAllSetting(allSetting *entity.AllSetting) error {
return common.Combine(errs...)
}
-func (s *SettingService) GetDefaultXrayConfig() (interface{}, error) {
- var jsonData interface{}
+func (s *SettingService) GetDefaultXrayConfig() (any, error) {
+ var jsonData any
err := json.Unmarshal([]byte(xrayTemplateConfig), &jsonData)
if err != nil {
return nil, err
@@ -552,24 +552,24 @@ func (s *SettingService) GetDefaultXrayConfig() (interface{}, error) {
return jsonData, nil
}
-func (s *SettingService) GetDefaultSettings(host string) (interface{}, error) {
- type settingFunc func() (interface{}, error)
+func (s *SettingService) GetDefaultSettings(host string) (any, error) {
+ type settingFunc func() (any, error)
settings := map[string]settingFunc{
- "expireDiff": func() (interface{}, error) { return s.GetExpireDiff() },
- "trafficDiff": func() (interface{}, error) { return s.GetTrafficDiff() },
- "pageSize": func() (interface{}, error) { return s.GetPageSize() },
- "defaultCert": func() (interface{}, error) { return s.GetCertFile() },
- "defaultKey": func() (interface{}, error) { return s.GetKeyFile() },
- "tgBotEnable": func() (interface{}, error) { return s.GetTgbotEnabled() },
- "subEnable": func() (interface{}, error) { return s.GetSubEnable() },
- "subURI": func() (interface{}, error) { return s.GetSubURI() },
- "subJsonURI": func() (interface{}, error) { return s.GetSubJsonURI() },
- "remarkModel": func() (interface{}, error) { return s.GetRemarkModel() },
- "datepicker": func() (interface{}, error) { return s.GetDatepicker() },
- "ipLimitEnable": func() (interface{}, error) { return s.GetIpLimitEnable() },
+ "expireDiff": func() (any, error) { return s.GetExpireDiff() },
+ "trafficDiff": func() (any, error) { return s.GetTrafficDiff() },
+ "pageSize": func() (any, error) { return s.GetPageSize() },
+ "defaultCert": func() (any, error) { return s.GetCertFile() },
+ "defaultKey": func() (any, error) { return s.GetKeyFile() },
+ "tgBotEnable": func() (any, error) { return s.GetTgbotEnabled() },
+ "subEnable": func() (any, error) { return s.GetSubEnable() },
+ "subURI": func() (any, error) { return s.GetSubURI() },
+ "subJsonURI": func() (any, error) { return s.GetSubJsonURI() },
+ "remarkModel": func() (any, error) { return s.GetRemarkModel() },
+ "datepicker": func() (any, error) { return s.GetDatepicker() },
+ "ipLimitEnable": func() (any, error) { return s.GetIpLimitEnable() },
}
- result := make(map[string]interface{})
+ result := make(map[string]any)
for key, fn := range settings {
value, err := fn()
diff --git a/web/service/tgbot.go b/web/service/tgbot.go
index 1bc504c9..9e217124 100644
--- a/web/service/tgbot.go
+++ b/web/service/tgbot.go
@@ -20,6 +20,8 @@ import (
"x-ui/web/locale"
"x-ui/xray"
+ "slices"
+
"github.com/mymmrac/telego"
th "github.com/mymmrac/telego/telegohandler"
tu "github.com/mymmrac/telego/telegoutil"
@@ -894,12 +896,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
}
func checkAdmin(tgId int64) bool {
- for _, adminId := range adminIds {
- if adminId == tgId {
- return true
- }
- }
- return false
+ return slices.Contains(adminIds, tgId)
}
func (t *Tgbot) SendAnswer(chatId int64, msg string, isAdmin bool) {
@@ -1692,12 +1689,7 @@ func (t *Tgbot) notifyExhausted() {
}
func int64Contains(slice []int64, item int64) bool {
- for _, s := range slice {
- if s == item {
- return true
- }
- }
- return false
+ return slices.Contains(slice, item)
}
func (t *Tgbot) onlineClients(chatId int64, messageID ...int) {
diff --git a/web/service/user.go b/web/service/user.go
index fdfffa3c..7438cf1a 100644
--- a/web/service/user.go
+++ b/web/service/user.go
@@ -46,7 +46,7 @@ func (s *UserService) UpdateUser(id int, username string, password string) error
db := database.GetDB()
return db.Model(model.User{}).
Where("id = ?", id).
- Updates(map[string]interface{}{"username": username, "password": password}).
+ Updates(map[string]any{"username": username, "password": password}).
Error
}
diff --git a/web/service/xray.go b/web/service/xray.go
index d37c963a..40de5305 100644
--- a/web/service/xray.go
+++ b/web/service/xray.go
@@ -56,7 +56,7 @@ func (s *XrayService) GetXrayVersion() string {
return p.GetVersion()
}
-func RemoveIndex(s []interface{}, index int) []interface{} {
+func RemoveIndex(s []any, index int) []any {
return append(s[:index], s[index+1:]...)
}
@@ -83,16 +83,16 @@ func (s *XrayService) GetXrayConfig() (*xray.Config, error) {
continue
}
// get settings clients
- settings := map[string]interface{}{}
+ settings := map[string]any{}
json.Unmarshal([]byte(inbound.Settings), &settings)
- clients, ok := settings["clients"].([]interface{})
+ clients, ok := settings["clients"].([]any)
if ok {
// check users active or not
clientStats := inbound.ClientStats
for _, clientTraffic := range clientStats {
indexDecrease := 0
for index, client := range clients {
- c := client.(map[string]interface{})
+ c := client.(map[string]any)
if c["email"] == clientTraffic.Email {
if !clientTraffic.Enable {
clients = RemoveIndex(clients, index-indexDecrease)
@@ -104,9 +104,9 @@ func (s *XrayService) GetXrayConfig() (*xray.Config, error) {
}
// clear client config for additional parameters
- var final_clients []interface{}
+ var final_clients []any
for _, client := range clients {
- c := client.(map[string]interface{})
+ c := client.(map[string]any)
if c["enable"] != nil {
if enable, ok := c["enable"].(bool); ok && !enable {
continue
@@ -120,7 +120,7 @@ func (s *XrayService) GetXrayConfig() (*xray.Config, error) {
c["flow"] = "xtls-rprx-vision"
}
}
- final_clients = append(final_clients, interface{}(c))
+ final_clients = append(final_clients, any(c))
}
settings["clients"] = final_clients
@@ -134,12 +134,12 @@ func (s *XrayService) GetXrayConfig() (*xray.Config, error) {
if len(inbound.StreamSettings) > 0 {
// Unmarshal stream JSON
- var stream map[string]interface{}
+ var stream map[string]any
json.Unmarshal([]byte(inbound.StreamSettings), &stream)
// Remove the "settings" field under "tlsSettings" and "realitySettings"
- tlsSettings, ok1 := stream["tlsSettings"].(map[string]interface{})
- realitySettings, ok2 := stream["realitySettings"].(map[string]interface{})
+ tlsSettings, ok1 := stream["tlsSettings"].(map[string]any)
+ realitySettings, ok2 := stream["realitySettings"].(map[string]any)
if ok1 || ok2 {
if ok1 {
delete(tlsSettings, "settings")