Files
s3-gpg-proxy-server/init.go

79 lines
1.6 KiB
Go

package main
import (
"context"
"fmt"
"log"
"os"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
const ENCRYPT_KEY_PATH = "_key.gpg"
func getMinio(config *S3Config) (*minio.Client, error) {
creds := credentials.NewStaticV4(config.AccessKey, config.SecretKey, "")
minioClient, err := minio.New(config.Endpoint, &minio.Options{
Creds: creds,
Secure: config.UseSSL,
Region: config.Region,
})
if err != nil {
return nil, err
}
return minioClient, nil
}
func getInternalMinio(config *AppConfig) (*minio.Client, error) {
return getMinio(&config.LocalS3)
}
func getTargetMinio(config *AppConfig) (*minio.Client, error) {
return getMinio(&config.TargetS3)
}
func prepareKey(config *AppConfig, minioClient *minio.Client) error {
var err error
if _, err := os.Stat(config.Key.LocalPath); !os.IsNotExist(err) {
return nil
}
err = minioClient.FGetObject(
context.Background(),
config.Key.Bucket,
config.Key.Name,
ENCRYPT_KEY_PATH,
minio.GetObjectOptions{},
)
if err == nil {
config.Key.LocalPath = ENCRYPT_KEY_PATH
}
return err
}
func init_app() (*minio.Client, *minio.Client, *AppConfig) {
fmt.Println("initing...")
var err error
config := GetConfig()
var internalMinio *minio.Client
internalMinio, err = getInternalMinio(config)
if err != nil {
log.Fatalln(err)
}
var targetMinio *minio.Client
targetMinio, err = getTargetMinio(config)
if err != nil {
log.Fatalln(err)
}
err = prepareKey(config, targetMinio)
if err != nil {
fmt.Println("Unable to get public key from target S3")
log.Fatalln(err)
}
return internalMinio, targetMinio, config
}