mirror of
https://github.com/gravitational/teleport.git
synced 2026-11-02 06:08:23 +08:00
* 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>
49 lines
1.3 KiB
Go
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
|
|
}
|