|
@@ -49,8 +49,10 @@ type AuthGetter struct {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (a *AuthGetter) GetCredentials(serverURL string) (user string, secret string, err error) {
|
|
func (a *AuthGetter) GetCredentials(serverURL string) (user string, secret string, err error) {
|
|
|
- if strings.Contains(serverURL, "gcr.io") || strings.Contains(serverURL, "pkg.dev") {
|
|
|
|
|
|
|
+ if strings.Contains(serverURL, "gcr.io") {
|
|
|
return a.GetGCRCredentials(serverURL, a.ProjectID)
|
|
return a.GetGCRCredentials(serverURL, a.ProjectID)
|
|
|
|
|
+ } else if strings.Contains(serverURL, "pkg.dev") {
|
|
|
|
|
+ return a.GetGARCredentials(serverURL, a.ProjectID)
|
|
|
} else if strings.Contains(serverURL, "registry.digitalocean.com") {
|
|
} else if strings.Contains(serverURL, "registry.digitalocean.com") {
|
|
|
return a.GetDOCRCredentials(serverURL, a.ProjectID)
|
|
return a.GetDOCRCredentials(serverURL, a.ProjectID)
|
|
|
} else if strings.Contains(serverURL, "index.docker.io") {
|
|
} else if strings.Contains(serverURL, "index.docker.io") {
|
|
@@ -97,6 +99,41 @@ func (a *AuthGetter) GetGCRCredentials(serverURL string, projID uint) (user stri
|
|
|
return "oauth2accesstoken", token, nil
|
|
return "oauth2accesstoken", token, nil
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+func (a *AuthGetter) GetGARCredentials(serverURL string, projID uint) (user string, secret string, err error) {
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return "", "", err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ cachedEntry := a.Cache.Get(serverURL)
|
|
|
|
|
+
|
|
|
|
|
+ var token string
|
|
|
|
|
+
|
|
|
|
|
+ if cachedEntry != nil && cachedEntry.IsValid(time.Now()) {
|
|
|
|
|
+ token = cachedEntry.AuthorizationToken
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // get a token from the server
|
|
|
|
|
+ tokenResp, err := a.Client.GetGARAuthorizationToken(context.Background(), projID, &types.GetRegistryGARTokenRequest{
|
|
|
|
|
+ ServerURL: serverURL,
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return "", "", err
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ token = tokenResp.Token
|
|
|
|
|
+
|
|
|
|
|
+ // set the token in cache
|
|
|
|
|
+ a.Cache.Set(serverURL, &AuthEntry{
|
|
|
|
|
+ AuthorizationToken: token,
|
|
|
|
|
+ RequestedAt: time.Now(),
|
|
|
|
|
+ ExpiresAt: *tokenResp.ExpiresAt,
|
|
|
|
|
+ ProxyEndpoint: serverURL,
|
|
|
|
|
+ })
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return "oauth2accesstoken", token, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
func (a *AuthGetter) GetDOCRCredentials(serverURL string, projID uint) (user string, secret string, err error) {
|
|
func (a *AuthGetter) GetDOCRCredentials(serverURL string, projID uint) (user string, secret string, err error) {
|
|
|
cachedEntry := a.Cache.Get(serverURL)
|
|
cachedEntry := a.Cache.Get(serverURL)
|
|
|
|
|
|