From 3c81aced62ea9a75f2455e8a84818f174d9c5ea1 Mon Sep 17 00:00:00 2001 From: ChengPlay <31820853+zhengkunwang223@users.noreply.github.com> Date: Tue, 6 May 2025 18:33:07 +0800 Subject: [PATCH] fix: fix issue with appstore (#8554) --- core/app/service/backup.go | 2 +- core/app/service/group.go | 2 +- core/app/service/setting.go | 2 +- core/i18n/i18n.go | 17 +++++++++++++++-- core/init/{lang => geo}/lang.go | 2 +- core/server/server.go | 12 ++++++------ .../req_helper/proxy_local/req_to_local.go | 10 +++++++++- .../views/app-store/installed/ignore/index.vue | 2 +- 8 files changed, 35 insertions(+), 14 deletions(-) rename core/init/{lang => geo}/lang.go (99%) diff --git a/core/app/service/backup.go b/core/app/service/backup.go index e824da2e8..94b884241 100644 --- a/core/app/service/backup.go +++ b/core/app/service/backup.go @@ -170,7 +170,7 @@ func (u *BackupService) Delete(name string) error { if backup.Type == constant.Local { return buserr.New("ErrBackupLocal") } - if _, err := proxy_local.NewLocalClient(fmt.Sprintf("/api/v2/backups/check/%s", name), http.MethodGet, nil); err != nil { + if _, err := proxy_local.NewLocalClient(fmt.Sprintf("/api/v2/backups/check/%s", name), http.MethodGet, nil, nil); err != nil { global.LOG.Errorf("check used of local cronjob failed, err: %v", err) return buserr.New("ErrBackupInUsed") } diff --git a/core/app/service/group.go b/core/app/service/group.go index 6ae0ac6c7..84875c04c 100644 --- a/core/app/service/group.go +++ b/core/app/service/group.go @@ -110,7 +110,7 @@ func (u *GroupService) Delete(id uint) error { err = xpack.UpdateGroup("node", id, defaultGroup.ID) case "website": bodyItem := []byte(fmt.Sprintf(`{"Group":%v, "NewGroup":%v}`, id, defaultGroup.ID)) - if _, err := proxy_local.NewLocalClient("/api/v2/websites/group/change", http.MethodPost, bytes.NewReader(bodyItem)); err != nil { + if _, err := proxy_local.NewLocalClient("/api/v2/websites/group/change", http.MethodPost, bytes.NewReader(bodyItem), nil); err != nil { return err } if err := xpack.UpdateGroup("node", id, defaultGroup.ID); err != nil { diff --git a/core/app/service/setting.go b/core/app/service/setting.go index 5cd88fe84..11d16c2b3 100644 --- a/core/app/service/setting.go +++ b/core/app/service/setting.go @@ -320,7 +320,7 @@ func (u *SettingService) UpdateSSL(c *gin.Context, req dto.SSLUpdate) error { if err != nil { return err } - res, err := proxy_local.NewLocalClient("/api/v2/websites/ca/obtain", http.MethodPost, bytes.NewReader(jsonData)) + res, err := proxy_local.NewLocalClient("/api/v2/websites/ca/obtain", http.MethodPost, bytes.NewReader(jsonData), nil) if err != nil { return err } diff --git a/core/i18n/i18n.go b/core/i18n/i18n.go index e0876de02..c5c42ef5d 100644 --- a/core/i18n/i18n.go +++ b/core/i18n/i18n.go @@ -2,6 +2,7 @@ package i18n import ( "embed" + "github.com/1Panel-dev/1Panel/core/app/repo" "strings" "github.com/1Panel-dev/1Panel/core/global" @@ -113,7 +114,7 @@ func UseI18n() gin.HandlerFunc { return func(context *gin.Context) { lang := context.GetHeader("Accept-Language") if lang == "" { - lang = "en" + lang = GetLanguageFromDB() } global.I18n = i18n.NewLocalizer(bundle, lang) } @@ -132,7 +133,8 @@ func Init() { _, _ = bundle.LoadMessageFileFS(fs, "lang/ru.yaml") _, _ = bundle.LoadMessageFileFS(fs, "lang/ms.yaml") _, _ = bundle.LoadMessageFileFS(fs, "lang/ko.yaml") - global.I18n = i18n.NewLocalizer(bundle, "en") + lang := GetLanguageFromDB() + global.I18n = i18n.NewLocalizer(bundle, lang) } func UseI18nForCmd(lang string) { @@ -176,3 +178,14 @@ func GetMsgWithMapForCmd(key string, maps map[string]interface{}) string { return content } } + +func GetLanguageFromDB() string { + if global.DB == nil { + return "en" + } + lang, _ := repo.NewISettingRepo().GetValueByKey("Language") + if lang == "" { + return "en" + } + return lang +} diff --git a/core/init/lang/lang.go b/core/init/geo/lang.go similarity index 99% rename from core/init/lang/lang.go rename to core/init/geo/lang.go index d3341ab22..cd1b0c12c 100644 --- a/core/init/lang/lang.go +++ b/core/init/geo/lang.go @@ -1,4 +1,4 @@ -package lang +package geo import ( "fmt" diff --git a/core/server/server.go b/core/server/server.go index fd953b69c..55fd30370 100644 --- a/core/server/server.go +++ b/core/server/server.go @@ -5,6 +5,9 @@ import ( "encoding/gob" "fmt" "github.com/1Panel-dev/1Panel/core/init/db" + "github.com/1Panel-dev/1Panel/core/init/geo" + "github.com/1Panel-dev/1Panel/core/init/log" + "github.com/1Panel-dev/1Panel/core/init/migration" "net" "net/http" "os" @@ -15,9 +18,6 @@ import ( "github.com/1Panel-dev/1Panel/core/i18n" "github.com/1Panel-dev/1Panel/core/init/cron" "github.com/1Panel-dev/1Panel/core/init/hook" - "github.com/1Panel-dev/1Panel/core/init/lang" - "github.com/1Panel-dev/1Panel/core/init/log" - "github.com/1Panel-dev/1Panel/core/init/migration" "github.com/1Panel-dev/1Panel/core/init/router" "github.com/1Panel-dev/1Panel/core/init/session" "github.com/1Panel-dev/1Panel/core/init/session/psession" @@ -29,12 +29,12 @@ import ( func Start() { viper.Init() - db.Init() - i18n.Init() log.Init() + db.Init() migration.Init() + i18n.Init() validator.Init() - lang.Init() + geo.Init() gob.Register(psession.SessionUser{}) cron.Init() session.Init() diff --git a/core/utils/req_helper/proxy_local/req_to_local.go b/core/utils/req_helper/proxy_local/req_to_local.go index 4b82dbed4..606428e96 100644 --- a/core/utils/req_helper/proxy_local/req_to_local.go +++ b/core/utils/req_helper/proxy_local/req_to_local.go @@ -5,6 +5,7 @@ import ( "encoding/json" "errors" "fmt" + "github.com/gin-gonic/gin" "io" "net" "net/http" @@ -16,7 +17,7 @@ import ( "github.com/1Panel-dev/1Panel/core/i18n" ) -func NewLocalClient(reqUrl, reqMethod string, body io.Reader) (interface{}, error) { +func NewLocalClient(reqUrl, reqMethod string, body io.Reader, ctx *gin.Context) (interface{}, error) { sockPath := "/etc/1panel/agent.sock" if _, err := os.Stat(sockPath); err != nil { return nil, fmt.Errorf("no such agent.sock find in localhost, err: %v", err) @@ -47,6 +48,13 @@ func NewLocalClient(reqUrl, reqMethod string, body io.Reader) (interface{}, erro if err != nil { return nil, fmt.Errorf("creating request failed, err: %v", err) } + if ctx != nil { + for key, values := range ctx.Request.Header { + for _, value := range values { + req.Header.Add(key, value) + } + } + } resp, err := client.Do(req) if err != nil { diff --git a/frontend/src/views/app-store/installed/ignore/index.vue b/frontend/src/views/app-store/installed/ignore/index.vue index 2f6868c24..58e6a8ea1 100644 --- a/frontend/src/views/app-store/installed/ignore/index.vue +++ b/frontend/src/views/app-store/installed/ignore/index.vue @@ -10,7 +10,7 @@ {{ app.name }} -
+
{{ app.version }} {{ $t('commons.table.all') + $t('app.version') }}