Files
open-im-server/internal/api/third/minio_init.go
T

89 lines
3.4 KiB
Go
Raw Normal View History

2022-02-19 18:48:15 +08:00
package apiThird
import (
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/log"
"Open_IM/pkg/utils"
"context"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
url2 "net/url"
)
2022-03-23 15:44:34 +08:00
var (
2022-05-10 10:44:43 +08:00
MinioClient *minio.Client
2022-03-23 15:44:34 +08:00
)
2022-03-04 14:27:54 +08:00
func MinioInit() {
2022-04-05 19:31:35 +08:00
operationID := utils.OperationIDGenerator()
2022-04-05 19:48:31 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "minio config: ", config.Config.Credential.Minio)
2022-04-11 16:18:36 +08:00
var initUrl string
if config.Config.Credential.Minio.EndpointInnerEnable {
initUrl = config.Config.Credential.Minio.EndpointInner
} else {
initUrl = config.Config.Credential.Minio.Endpoint
}
log.NewInfo(operationID, utils.GetSelfFuncName(), "use initUrl: ", initUrl)
minioUrl, err := url2.Parse(initUrl)
2022-02-19 18:48:15 +08:00
if err != nil {
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "parse failed, please check config/config.yaml", err.Error())
2022-02-19 18:48:15 +08:00
return
}
2022-05-10 16:04:26 +08:00
opts := &minio.Options{
Creds: credentials.NewStaticV4(config.Config.Credential.Minio.AccessKeyID, config.Config.Credential.Minio.SecretAccessKey, ""),
}
if minioUrl.Scheme == "http" {
opts.Secure = false
} else if minioUrl.Scheme == "https" {
opts.Secure = true
}
2022-04-05 19:49:49 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "Parse ok ", config.Config.Credential.Minio)
2022-05-10 16:04:26 +08:00
MinioClient, err = minio.New(minioUrl.Host, opts)
2022-04-05 19:49:49 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "new ok ", config.Config.Credential.Minio)
2022-02-19 18:48:15 +08:00
if err != nil {
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "init minio client failed", err.Error())
2022-02-19 18:48:15 +08:00
return
}
opt := minio.MakeBucketOptions{
Region: config.Config.Credential.Minio.Location,
ObjectLocking: false,
}
2022-05-10 10:44:43 +08:00
err = MinioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.Bucket, opt)
2022-02-19 18:48:15 +08:00
if err != nil {
2022-04-05 20:06:08 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "MakeBucket failed ", err.Error())
2022-05-10 10:44:43 +08:00
exists, err := MinioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket)
if err == nil && exists {
log.NewWarn(operationID, utils.GetSelfFuncName(), "We already own ", config.Config.Credential.Minio.Bucket)
} else {
if err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), err.Error())
}
log.NewError(operationID, utils.GetSelfFuncName(), "create bucket failed and bucket not exists")
return
}
}
// make app bucket
err = MinioClient.MakeBucket(context.Background(), config.Config.Credential.Minio.AppBucket, opt)
if err != nil {
log.NewError(operationID, utils.GetSelfFuncName(), "MakeBucket failed ", err.Error())
exists, err := MinioClient.BucketExists(context.Background(), config.Config.Credential.Minio.Bucket)
2022-02-19 18:48:15 +08:00
if err == nil && exists {
2022-04-05 20:06:08 +08:00
log.NewWarn(operationID, utils.GetSelfFuncName(), "We already own ", config.Config.Credential.Minio.Bucket)
2022-02-19 18:48:15 +08:00
} else {
2022-02-28 17:52:13 +08:00
if err != nil {
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), err.Error())
2022-02-28 17:52:13 +08:00
}
2022-04-05 19:31:35 +08:00
log.NewError(operationID, utils.GetSelfFuncName(), "create bucket failed and bucket not exists")
2022-02-19 18:48:15 +08:00
return
}
}
2022-03-02 19:07:17 +08:00
// 自动化桶public的代码
2022-05-10 16:04:26 +08:00
//err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.Bucket, policy.BucketPolicyReadWrite)
//err = MinioClient.SetBucketPolicy(context.Background(), config.Config.Credential.Minio.AppBucket, policy.BucketPolicyReadWrite)
//if err != nil {
// log.NewDebug("", utils.GetSelfFuncName(), "SetBucketPolicy failed please set in web", err.Error())
// return
//}
2022-04-05 19:31:35 +08:00
log.NewInfo(operationID, utils.GetSelfFuncName(), "minio create and set policy success")
2022-02-19 18:48:15 +08:00
}