-
Notifications
You must be signed in to change notification settings - Fork 150
/
proxy.go
102 lines (88 loc) · 2.4 KB
/
proxy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package config
import (
"fmt"
"net/http"
"net/url"
"github.com/buchgr/bazel-remote/v2/cache/azblobproxy"
"github.com/buchgr/bazel-remote/v2/cache/gcsproxy"
"github.com/buchgr/bazel-remote/v2/cache/httpproxy"
"github.com/buchgr/bazel-remote/v2/cache/s3proxy"
"github.com/minio/minio-go/v7"
)
func (c *Config) setProxy() error {
if c.GoogleCloudStorage != nil {
proxyCache, err := gcsproxy.New(c.GoogleCloudStorage.Bucket,
c.GoogleCloudStorage.UseDefaultCredentials, c.GoogleCloudStorage.JSONCredentialsFile,
c.StorageMode, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads)
if err != nil {
return err
}
c.ProxyBackend = proxyCache
return nil
}
if c.HTTPBackend != nil {
httpClient := &http.Client{}
var baseURL *url.URL
baseURL, err := url.Parse(c.HTTPBackend.BaseURL)
if err != nil {
return err
}
proxyCache, err := httpproxy.New(baseURL, c.StorageMode,
httpClient, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads)
if err != nil {
return err
}
c.ProxyBackend = proxyCache
return nil
}
if c.S3CloudStorage != nil {
creds, err := c.S3CloudStorage.GetCredentials()
if err != nil {
return err
}
bucketLookupType, err := parseBucketLookupType(c.S3CloudStorage.BucketLookupType)
if err != nil {
return err
}
c.ProxyBackend = s3proxy.New(
c.S3CloudStorage.Endpoint,
c.S3CloudStorage.Bucket,
bucketLookupType,
c.S3CloudStorage.Prefix,
creds,
c.S3CloudStorage.DisableSSL,
c.S3CloudStorage.UpdateTimestamps,
c.S3CloudStorage.Region,
c.StorageMode, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads)
return nil
}
if c.AzBlobConfig != nil {
creds, err := c.AzBlobConfig.GetCredentials()
if err != nil {
return err
}
c.ProxyBackend = azblobproxy.New(
c.AzBlobConfig.StorageAccount,
c.AzBlobConfig.ContainerName,
c.AzBlobConfig.Prefix,
creds,
c.AzBlobConfig.SharedKey,
c.AzBlobConfig.UpdateTimestamps,
c.StorageMode, c.AccessLogger, c.ErrorLogger, c.NumUploaders, c.MaxQueuedUploads,
)
return nil
}
return nil
}
func parseBucketLookupType(typeStr string) (minio.BucketLookupType, error) {
valMap := map[string]minio.BucketLookupType{
"auto": minio.BucketLookupAuto,
"dns": minio.BucketLookupDNS,
"path": minio.BucketLookupPath,
}
val, ok := valMap[typeStr]
if !ok {
return 0, fmt.Errorf("Unsupported value: %s", typeStr)
}
return val, nil
}