Files
teleport/lib/utils/config.go
T
Gavin FrazarandAlan Parra df4991ea8c Optionally provide ca_pin as a file path (#12796)
* Optionally provide ca_pin as a file path

* Fix lint errors

* Test CA pin reads from file and from string

* Simplify ApplyCAPins

* Update lib/service/cfg.go

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Update lib/utils/utils_test.go

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Move length check into ApplyCAPins

* Rename token.go to config.go

* Add test for statictoken parsing

* Refactor token parsing test

* Error on empty ca_pin file

* Warn if config value is a path to an empty file

* Update lib/config/fileconf_test.go

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

* Log empty file warning instead of printing

* Allow multiple entries in files referenced by config values

* Update static token parsing test

* Test reading multiple tokens/pins from a file referenced by a config

* Update lib/config/fileconf.go

Co-authored-by: Alan Parra <alan.parra@goteleport.com>

Co-authored-by: Alan Parra <alan.parra@goteleport.com>
2022-05-31 22:14:50 +00:00

49 lines
1.3 KiB
Go

/*
Copyright 2019 Gravitational, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package utils
import (
"os"
"path/filepath"
"strings"
"github.com/gravitational/trace"
log "github.com/sirupsen/logrus"
)
// TryReadValueAsFile is a utility function to read a value
// from the disk if it looks like an absolute path,
// otherwise, treat it as a value.
// It only support absolute paths to avoid ambiguity in interpretation of the value
func TryReadValueAsFile(value string) (string, error) {
if !filepath.IsAbs(value) {
return value, nil
}
// treat it as an absolute filepath
contents, err := os.ReadFile(value)
if err != nil {
return "", trace.ConvertSystemError(err)
}
// trim newlines as tokens in files tend to have newlines
out := strings.TrimSpace(string(contents))
if out == "" {
log.Warnf("Empty config value file: %v", value)
}
return out, nil
}