func (s3 S3ConnectionInfo) Connect() (*minio.Client, error) { var s3Client *minio.Client var err error if s3.SignatureVersion == "2" { s3Client, err = minio.NewV2(s3.Host, s3.AccessKey, s3.SecretKey, false) } else { s3Client, err = minio.NewV4(s3.Host, s3.AccessKey, s3.SecretKey, false) } if err != nil { return nil, err } transport := http.DefaultTransport transport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: s3.SkipSSLValidation} if s3.SOCKS5Proxy != "" { dialer, err := proxy.SOCKS5("tcp", s3.SOCKS5Proxy, nil, proxy.Direct) if err != nil { fmt.Fprintln(os.Stderr, "can't connect to the proxy:", err) os.Exit(1) } transport.(*http.Transport).Dial = dialer.Dial } s3Client.SetCustomTransport(transport) return s3Client, nil }
// client returns the Ceph Storage client instance. // If there isn't one yet, it tries to create one. func (bs *CephBackupStorage) client() (*minio.Client, error) { bs.mu.Lock() defer bs.mu.Unlock() if bs._client == nil { configFile, err := os.Open(*configFilePath) if err != nil { return nil, fmt.Errorf("file not present : %v", err) } defer configFile.Close() jsonParser := json.NewDecoder(configFile) if err = jsonParser.Decode(&storageConfig); err != nil { return nil, fmt.Errorf("Error parsing the json file : %v", err) } accessKey := storageConfig.AccessKey secretKey := storageConfig.SecretKey url := storageConfig.EndPoint client, err := minio.NewV2(url, accessKey, secretKey, true) if err != nil { return nil, err } bs._client = client } return bs._client, nil }