mirror of
https://github.com/hashicorp/vault.git
synced 2026-05-04 20:06:27 +02:00
Move token helper out of meta
This commit is contained in:
parent
33326b30c3
commit
48da40964c
@ -35,7 +35,9 @@ import (
|
||||
// parameter lets you set meta options for all commands.
|
||||
func Commands(metaPtr *meta.Meta) map[string]cli.CommandFactory {
|
||||
if metaPtr == nil {
|
||||
metaPtr = new(meta.Meta)
|
||||
metaPtr = &meta.Meta{
|
||||
TokenHelper: command.DefaultTokenHelper,
|
||||
}
|
||||
}
|
||||
|
||||
if metaPtr.Ui == nil {
|
||||
|
||||
@ -52,7 +52,7 @@ func (c *AuthCommand) Run(args []string) int {
|
||||
|
||||
args = flags.Args()
|
||||
|
||||
tokenHelper, err := c.TokenHelper()
|
||||
tokenHelper, err := c.TokenHelper(&c.Meta)
|
||||
if err != nil {
|
||||
c.Ui.Error(fmt.Sprintf(
|
||||
"Error initializing token helper: %s\n\n"+
|
||||
|
||||
@ -28,6 +28,7 @@ func TestAuth_methods(t *testing.T) {
|
||||
Meta: meta.Meta{
|
||||
ClientToken: token,
|
||||
Ui: ui,
|
||||
TokenHelper: DefaultTokenHelper,
|
||||
},
|
||||
}
|
||||
|
||||
@ -55,7 +56,8 @@ func TestAuth_token(t *testing.T) {
|
||||
ui := new(cli.MockUi)
|
||||
c := &AuthCommand{
|
||||
Meta: meta.Meta{
|
||||
Ui: ui,
|
||||
Ui: ui,
|
||||
TokenHelper: DefaultTokenHelper,
|
||||
},
|
||||
}
|
||||
|
||||
@ -67,7 +69,7 @@ func TestAuth_token(t *testing.T) {
|
||||
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
|
||||
}
|
||||
|
||||
helper, err := c.TokenHelper()
|
||||
helper, err := c.TokenHelper(&c.Meta)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
@ -93,7 +95,8 @@ func TestAuth_stdin(t *testing.T) {
|
||||
ui := new(cli.MockUi)
|
||||
c := &AuthCommand{
|
||||
Meta: meta.Meta{
|
||||
Ui: ui,
|
||||
Ui: ui,
|
||||
TokenHelper: DefaultTokenHelper,
|
||||
},
|
||||
testStdin: stdinR,
|
||||
}
|
||||
@ -122,7 +125,8 @@ func TestAuth_badToken(t *testing.T) {
|
||||
ui := new(cli.MockUi)
|
||||
c := &AuthCommand{
|
||||
Meta: meta.Meta{
|
||||
Ui: ui,
|
||||
Ui: ui,
|
||||
TokenHelper: DefaultTokenHelper,
|
||||
},
|
||||
}
|
||||
|
||||
@ -148,7 +152,8 @@ func TestAuth_method(t *testing.T) {
|
||||
"test": &testAuthHandler{},
|
||||
},
|
||||
Meta: meta.Meta{
|
||||
Ui: ui,
|
||||
Ui: ui,
|
||||
TokenHelper: DefaultTokenHelper,
|
||||
},
|
||||
}
|
||||
|
||||
@ -161,7 +166,7 @@ func TestAuth_method(t *testing.T) {
|
||||
t.Fatalf("bad: %d\n\n%s", code, ui.ErrorWriter.String())
|
||||
}
|
||||
|
||||
helper, err := c.TokenHelper()
|
||||
helper, err := c.TokenHelper(&c.Meta)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
|
||||
@ -424,7 +424,7 @@ func (c *ServerCommand) enableDev(core *vault.Core, rootTokenID string) (*vault.
|
||||
}
|
||||
|
||||
// Set the token
|
||||
tokenHelper, err := c.TokenHelper()
|
||||
tokenHelper, err := c.TokenHelper(&c.Meta)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
25
command/util.go
Normal file
25
command/util.go
Normal file
@ -0,0 +1,25 @@
|
||||
package command
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/vault/command/token"
|
||||
"github.com/hashicorp/vault/meta"
|
||||
)
|
||||
|
||||
// DefaultTokenHelper returns the token helper that is configured for Vault.
|
||||
func DefaultTokenHelper(m *meta.Meta) (token.TokenHelper, error) {
|
||||
config, err := m.Config()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
path := config.TokenHelper
|
||||
if path == "" {
|
||||
return &token.InternalTokenHelper{}, nil
|
||||
}
|
||||
|
||||
path, err = token.ExternalTokenHelperPath(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &token.ExternalTokenHelper{BinaryPath: path}, nil
|
||||
}
|
||||
42
meta/meta.go
42
meta/meta.go
@ -24,6 +24,8 @@ import (
|
||||
// default FlagSet returned by Meta.FlagSet.
|
||||
type FlagSetFlags uint
|
||||
|
||||
type TokenHelperFunc func(*Meta) (token.TokenHelper, error)
|
||||
|
||||
const (
|
||||
FlagSetNone FlagSetFlags = 0
|
||||
FlagSetServer FlagSetFlags = 1 << iota
|
||||
@ -51,6 +53,9 @@ type Meta struct {
|
||||
// These are internal and shouldn't be modified or access by anyone
|
||||
// except Meta.
|
||||
config *Config
|
||||
|
||||
// Queried if no token can be found
|
||||
TokenHelper TokenHelperFunc
|
||||
}
|
||||
|
||||
// Client returns the API client to a Vault server given the configured
|
||||
@ -120,14 +125,16 @@ func (m *Meta) Client() (*api.Client, error) {
|
||||
|
||||
// If we don't have a token, check the token helper
|
||||
if token == "" {
|
||||
// If we have a token, then set that
|
||||
tokenHelper, err := m.TokenHelper()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
token, err = tokenHelper.Get()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
if m.TokenHelper != nil {
|
||||
// If we have a token, then set that
|
||||
tokenHelper, err := m.TokenHelper(m)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
token, err = tokenHelper.Get()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -193,25 +200,6 @@ func (m *Meta) FlagSet(n string, fs FlagSetFlags) *flag.FlagSet {
|
||||
return f
|
||||
}
|
||||
|
||||
// TokenHelper returns the token helper that is configured for Vault.
|
||||
func (m *Meta) TokenHelper() (token.TokenHelper, error) {
|
||||
config, err := m.Config()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
path := config.TokenHelper
|
||||
if path == "" {
|
||||
return &token.InternalTokenHelper{}, nil
|
||||
}
|
||||
|
||||
path, err = token.ExternalTokenHelperPath(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &token.ExternalTokenHelper{BinaryPath: path}, nil
|
||||
}
|
||||
|
||||
func (m *Meta) loadCACert(path string) (*x509.CertPool, error) {
|
||||
certs, err := m.loadCertFromPEM(path)
|
||||
if err != nil {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user