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 {