ziwen 1 år sedan
förälder
incheckning
8eac0cb4d7
5 ändrade filer med 136 tillägg och 11 borttagningar
  1. 23 9
      controllers/resource.go
  2. 1 1
      controllers/sys_role.go
  3. 78 1
      services/minio.go
  4. 28 0
      utils/config.go
  5. 6 0
      utils/constants.go

+ 23 - 9
controllers/resource.go

@@ -720,14 +720,28 @@ func (this *ResourceController) OssSTSToken() {
 		this.Data["json"] = br
 		this.ServeJSON()
 	}()
-	resp, err := services.GetOssSTSToken()
-	if err != nil {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取STSToken失败, Err: " + err.Error()
-		return
+
+	source, _ := this.GetInt("StorageSource")
+
+	if source == utils.STORAGESOURCE_OSS {
+		resp, err := services.GetOssSTSToken()
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取STSToken失败, Err: " + err.Error()
+			return
+		}
+		br.Data = resp
+	} else if source == utils.STORAGESOURCE_MINIO {
+		resp, err := services.GetMinIOSTSToken()
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取STSToken失败, Err: " + err.Error()
+			return
+		}
+		br.Data = resp
+
+		br.Msg = "获取成功"
+		br.Ret = 200
+		br.Success = true
 	}
-	br.Msg = "获取成功"
-	br.Ret = 200
-	br.Success = true
-	br.Data = resp
 }

+ 1 - 1
controllers/sys_role.go

@@ -708,7 +708,7 @@ func (this *SysRoleController) SystemConfig() {
 	}, system.BusinessConf{
 		ConfKey: "ObjectStorageClient",
 		ConfVal: conf["ObjectStorageClient"],
-	},)
+	})
 
 	br.Data = list
 	br.Ret = 200

+ 78 - 1
services/minio.go

@@ -2,12 +2,70 @@ package services
 
 import (
 	"context"
+	"eta/eta_api/utils"
 	"fmt"
 	"github.com/minio/minio-go/v7"
 	"github.com/minio/minio-go/v7/pkg/credentials"
+	"io/ioutil"
 	"log"
+	"net/http"
+	"strings"
 )
 
+func GetMinIOSTSToken() (item *Token, err error) {
+	// MinIO服务的访问信息
+	item = new(Token)
+	//useSSL := false
+	//if utils.MinIoUseSSL == "true" {
+	//	useSSL = true
+	//}
+	// 创建MinIO客户端
+	//minioClient, err := minio.New(utils.MinIoEndpoint, &minio.Options{
+	//	Creds:  credentials.NewStaticV4(utils.MinIoAccessKeyId, utils.MinIoAccessKeySecret, ""),
+	//	Secure: useSSL,
+	//})
+	//if err != nil {
+	//	return nil, err
+	//}
+	// 设置STS凭证请求参数
+	//policy := `{
+	//    "Version": "2012-10-17",
+	//    "Statement": [
+	//        {
+	//            "Sid": "",
+	//            "Effect": "Allow",
+	//            "Principal": {"AWS": "arn:aws:iam::1234567890:root"},
+	//            "Action": "s3:GetObject",
+	//            "Resource": "arn:aws:s3:::<YourBucketName>/*"
+	//        }
+	//    ]
+	//}`
+	//expiry := time.Hour * 24 // STS凭证的过期时间
+	//获取STS凭证
+	//stsCredentials, err := minioClient.PresignedPutObject(context.Background(), "etastatic", "myobject", expiry)
+	//if err != nil {
+	//	return
+	//}
+	item.AccessKeyId = utils.MinIoAccessKeyId
+	item.SecretKeyId = utils.MinIoAccessKeySecret
+	item.Endpoint = utils.MinIoEndpoint
+	item.ImgHost = utils.MinIoImghost
+	item.Bucketname = utils.MinIoBucketname
+	item.UseSSL = utils.MinIoUseSSL
+	item.RegionId = utils.MinIoRegion
+	return
+}
+
+type Token struct {
+	AccessKeyId   string
+	SecretKeyId   string
+	RegionId      string
+	Bucketname    string
+	Endpoint      string
+	ImgHost       string
+	UseSSL        string
+}
+
 func UploadMinIo() {
 	ctx := context.Background()
 	endpoint := "8.136.199.33:9000/"
@@ -40,7 +98,7 @@ func UploadMinIo() {
 	} else {
 		log.Printf("Successfully created %s\n", bucketName)
 	}
-	buckets,err := minioClient.ListBuckets(ctx)
+	buckets, err := minioClient.ListBuckets(ctx)
 	for _, bucket := range buckets {
 		fmt.Println(bucket)
 	}
@@ -57,3 +115,22 @@ func UploadMinIo() {
 
 	log.Printf("Successfully uploaded %s of size %d\n", objectName, info.Size)
 }
+
+func HttpPost(url, postData string, params ...string) ([]byte, error) {
+	body := ioutil.NopCloser(strings.NewReader(postData))
+	client := &http.Client{}
+	req, err := http.NewRequest("POST", url, body)
+	if err != nil {
+		return nil, err
+	}
+	contentType := "application/x-www-form-urlencoded;charset=utf-8"
+	if len(params) > 0 && params[0] != "" {
+		contentType = params[0]
+	}
+	req.Header.Set("Content-Type", contentType)
+	resp, err := client.Do(req)
+	defer resp.Body.Close()
+	b, err := ioutil.ReadAll(resp.Body)
+	fmt.Println("HttpPost:" + string(b))
+	return b, err
+}

+ 28 - 0
utils/config.go

@@ -174,6 +174,20 @@ var (
 // BusinessCode 商家编码
 var BusinessCode string
 
+// MinIo配置
+var (
+	MinIoBucketname       string
+	MinIoEndpoint         string
+	MinIoImghost          string
+	MinIoUploadDir        string
+	MinIoUpload_Audio_Dir string
+	MinIoAccessKeyId      string
+	MinIoAccessKeySecret  string
+	MinIoUseSSL           string
+	MinIoPort             string
+	MinIoRegion           string
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -390,6 +404,20 @@ func init() {
 	// 商家编码
 	BusinessCode = config["business_code"]
 
+	// MinIo相关
+	{
+		MinIoEndpoint = config["minio_endpoint"]
+		MinIoBucketname = config["minio_bucket_name"]
+		MinIoImghost = config["minio_img_host"]
+		MinIoUploadDir = config["minio_upload_dir"]
+		MinIoUpload_Audio_Dir = config["minio_upload_audio_dir"]
+		MinIoAccessKeyId = config["minio_access_key_id"]
+		MinIoAccessKeySecret = config["minio_access_key_secret"]
+		MinIoUseSSL = config["minio_use_ssl"]
+		MinIoPort = config["minio_port"]
+		MinIoRegion = config["minio_region"]
+	}
+
 	// 初始化ES
 	initEs()
 }

+ 6 - 0
utils/constants.go

@@ -321,3 +321,9 @@ const (
 const CrmEtaAuthorization = "NIi1RbEmH0C2rksXtPGDPBBgRgTZY87Q"
 
 const LoginCacheTime = 60 // 登录缓存时长, 分钟
+
+// 对象存储客户端
+const (
+	STORAGESOURCE_OSS   = 1 //阿里云OSS
+	STORAGESOURCE_MINIO = 2 //MinIo
+)