From fb709e7eaff4ca3ef4a0a4f01d029a28a4e1dc16 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Fri, 8 Dec 2023 16:02:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E6=97=B6=20mongodb=20=E5=92=8C=20minio=20?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E5=90=8D/=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=A1=AB=E5=86=99=20(#3231)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/dto/app.go | 6 +++++ backend/app/service/app_utils.go | 41 +++++++++++++++++++++++++------- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/backend/app/dto/app.go b/backend/app/dto/app.go index 591672429..9839d450c 100644 --- a/backend/app/dto/app.go +++ b/backend/app/dto/app.go @@ -13,12 +13,18 @@ type AppDatabase struct { type AuthParam struct { RootPassword string `json:"PANEL_DB_ROOT_PASSWORD"` + RootUser string `json:"PANEL_DB_ROOT_USER"` } type RedisAuthParam struct { RootPassword string `json:"PANEL_REDIS_ROOT_PASSWORD"` } +type MinioAuthParam struct { + RootPassword string `json:"PANEL_MINIO_ROOT_PASSWORD"` + RootUser string `json:"PANEL_MINIO_ROOT_USER"` +} + type ContainerExec struct { ContainerName string `json:"containerName"` DbParam AppDatabase `json:"dbParam"` diff --git a/backend/app/service/app_utils.go b/backend/app/service/app_utils.go index d51be064e..e135a09ce 100644 --- a/backend/app/service/app_utils.go +++ b/backend/app/service/app_utils.go @@ -118,9 +118,13 @@ var DatabaseKeys = map[string]uint{ "memcached": 11211, } +var ToolKeys = map[string]uint{ + "minio": 9001, +} + func createLink(ctx context.Context, app model.App, appInstall *model.AppInstall, params map[string]interface{}) error { var dbConfig dto.AppDatabase - if app.Type == "runtime" && DatabaseKeys[app.Key] > 0 { + if DatabaseKeys[app.Key] > 0 { database := &model.Database{ AppInstallID: appInstall.ID, Name: appInstall.Name, @@ -153,14 +157,6 @@ func createLink(ctx context.Context, app model.App, appInstall *model.AppInstall case "mysql", "mariadb", "postgresql", "mongodb": if password, ok := params["PANEL_DB_ROOT_PASSWORD"]; ok { if password != "" { - authParam := dto.AuthParam{ - RootPassword: password.(string), - } - authByte, err := json.Marshal(authParam) - if err != nil { - return err - } - appInstall.Param = string(authByte) database.Password = password.(string) if app.Key == "mysql" || app.Key == "mariadb" { database.Username = "root" @@ -168,6 +164,16 @@ func createLink(ctx context.Context, app model.App, appInstall *model.AppInstall if rootUser, ok := params["PANEL_DB_ROOT_USER"]; ok { database.Username = rootUser.(string) } + authParam := dto.AuthParam{ + RootPassword: password.(string), + RootUser: database.Username, + } + authByte, err := json.Marshal(authParam) + if err != nil { + return err + } + appInstall.Param = string(authByte) + } } case "redis": @@ -189,6 +195,23 @@ func createLink(ctx context.Context, app model.App, appInstall *model.AppInstall return err } } + if ToolKeys[app.Key] > 0 { + if app.Key == "minio" { + authParam := dto.MinioAuthParam{} + if password, ok := params["PANEL_MINIO_ROOT_PASSWORD"]; ok { + authParam.RootPassword = password.(string) + } + if rootUser, ok := params["PANEL_MINIO_ROOT_USER"]; ok { + authParam.RootUser = rootUser.(string) + } + authByte, err := json.Marshal(authParam) + if err != nil { + return err + } + appInstall.Param = string(authByte) + } + } + if app.Type == "website" || app.Type == "tool" { paramByte, err := json.Marshal(params) if err != nil {