Compare commits

..

1 commit

Author SHA1 Message Date
Vadim Iskuchekov
302dd01b04
Merge a1c0231abc into 40b6d7707a 2025-09-11 16:40:41 +03:00
5 changed files with 6 additions and 23 deletions

View file

@ -37,6 +37,6 @@ func (j *PeriodicClientTrafficResetJob) Run() {
}
if resetCount > 0 {
logger.Infof("Periodic client traffic reset completed: %d clients reset", resetCount)
logger.Infof("Periodic client traffic reset completed: %d clients reseted", resetCount)
}
}

View file

@ -39,6 +39,6 @@ func (j *PeriodicTrafficResetJob) Run() {
}
if resetCount > 0 {
logger.Infof("Periodic traffic reset completed: %d inbounds reset", resetCount)
logger.Infof("Periodic traffic reset completed: %d inbounds reseted", resetCount)
}
}

View file

@ -739,7 +739,7 @@ func (s *InboundService) DelInboundClient(inboundId int, clientId string) (bool,
}
func (s *InboundService) UpdateInboundClient(data *model.Inbound, clientId string) (bool, error) {
// TODO: check if TrafficReset field is updating
// TODO: check if TrafficReset field are updating
clients, err := s.GetClients(data)
if err != nil {
return false, err

View file

@ -2,7 +2,6 @@ package session
import (
"encoding/gob"
"net/http"
"x-ui/database/model"
@ -33,7 +32,6 @@ func SetMaxAge(c *gin.Context, maxAge int) {
Path: defaultPath,
MaxAge: maxAge,
HttpOnly: true,
SameSite: http.SameSiteLaxMode,
})
}
@ -63,6 +61,5 @@ func ClearSession(c *gin.Context) {
Path: defaultPath,
MaxAge: -1,
HttpOnly: true,
SameSite: http.SameSiteLaxMode,
})
}

View file

@ -31,7 +31,7 @@ import (
"github.com/robfig/cron/v3"
)
//go:embed assets
//go:embed assets/*
var assetsFS embed.FS
//go:embed html/*
@ -180,15 +180,6 @@ func (s *Server) initRouter() (*gin.Engine, error) {
assetsBasePath := basePath + "assets/"
store := cookie.NewStore(secret)
// Configure default session cookie options, including expiration (MaxAge)
if sessionMaxAge, err := s.settingService.GetSessionMaxAge(); err == nil {
store.Options(sessions.Options{
Path: "/",
MaxAge: sessionMaxAge * 60, // minutes -> seconds
HttpOnly: true,
SameSite: http.SameSiteLaxMode,
})
}
engine.Use(sessions.Sessions("3x-ui", store))
engine.Use(func(c *gin.Context) {
c.Set("base_path", basePath)
@ -210,11 +201,7 @@ func (s *Server) initRouter() (*gin.Engine, error) {
i18nWebFunc := func(key string, params ...string) string {
return locale.I18n(locale.Web, key, params...)
}
// Register template functions before loading templates
funcMap := template.FuncMap{
"i18n": i18nWebFunc,
}
engine.SetFuncMap(funcMap)
engine.FuncMap["i18n"] = i18nWebFunc
engine.Use(locale.LocalizerMiddleware())
// set static files and template
@ -224,12 +211,11 @@ func (s *Server) initRouter() (*gin.Engine, error) {
if err != nil {
return nil, err
}
// Use the registered func map with the loaded templates
engine.LoadHTMLFiles(files...)
engine.StaticFS(basePath+"assets", http.FS(os.DirFS("web/assets")))
} else {
// for production
template, err := s.getHtmlTemplate(funcMap)
template, err := s.getHtmlTemplate(engine.FuncMap)
if err != nil {
return nil, err
}