|
|
@ -1156,6 +1156,8 @@ func parseAuthorizedPrincipalsAllow(values []string) ([]string, bool) { |
|
|
|
return authorizedPrincipalsAllow, true |
|
|
|
return authorizedPrincipalsAllow, true |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// loadSecret load the secret from ini by uriKey or verbatimKey, only one of them could be set
|
|
|
|
|
|
|
|
// If the secret is loaded from uriKey (file), the file should be non-empty, to guarantee the behavior stable and clear.
|
|
|
|
func loadSecret(sec *ini.Section, uriKey, verbatimKey string) string { |
|
|
|
func loadSecret(sec *ini.Section, uriKey, verbatimKey string) string { |
|
|
|
// don't allow setting both URI and verbatim string
|
|
|
|
// don't allow setting both URI and verbatim string
|
|
|
|
uri := sec.Key(uriKey).String() |
|
|
|
uri := sec.Key(uriKey).String() |
|
|
@ -1179,7 +1181,15 @@ func loadSecret(sec *ini.Section, uriKey, verbatimKey string) string { |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
log.Fatal("Failed to read %s (%s): %v", uriKey, tempURI.RequestURI(), err) |
|
|
|
log.Fatal("Failed to read %s (%s): %v", uriKey, tempURI.RequestURI(), err) |
|
|
|
} |
|
|
|
} |
|
|
|
return strings.TrimSpace(string(buf)) |
|
|
|
val := strings.TrimSpace(string(buf)) |
|
|
|
|
|
|
|
if val == "" { |
|
|
|
|
|
|
|
// The file shouldn't be empty, otherwise we can not know whether the user has ever set the KEY or KEY_URI
|
|
|
|
|
|
|
|
// For example: if INTERNAL_TOKEN_URI=file:///empty-file,
|
|
|
|
|
|
|
|
// Then if the token is re-generated during installation and saved to INTERNAL_TOKEN
|
|
|
|
|
|
|
|
// Then INTERNAL_TOKEN and INTERNAL_TOKEN_URI both exist, that's a fatal error (they shouldn't)
|
|
|
|
|
|
|
|
log.Fatal("Failed to read %s (%s): the file is empty", uriKey, tempURI.RequestURI()) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return val |
|
|
|
|
|
|
|
|
|
|
|
// only file URIs are allowed
|
|
|
|
// only file URIs are allowed
|
|
|
|
default: |
|
|
|
default: |
|
|
|