Add RunCustom command to allow passing in a TokenHelper

This commit is contained in:
Jeff Mitchell
2018-03-16 11:31:00 -04:00
parent d7a46c631c
commit 130168c447
3 changed files with 175 additions and 82 deletions

View File

@@ -114,6 +114,11 @@ func (c *BaseCommand) Client() (*api.Client, error) {
return client, nil
}
// SetTokenHelper sets the token helper on the command.
func (c *BaseCommand) SetTokenHelper(th token.TokenHelper) {
c.tokenHelper = th
}
// TokenHelper returns the token helper attached to the command.
func (c *BaseCommand) TokenHelper() (token.TokenHelper, error) {
if c.tokenHelper != nil {

View File

@@ -184,7 +184,7 @@ func (c *DeprecatedCommand) warn() {
var Commands map[string]cli.CommandFactory
var DeprecatedCommands map[string]cli.CommandFactory
func initCommands(ui, serverCmdUi cli.Ui) {
func initCommands(ui, serverCmdUi cli.Ui, baseCmdTemplate *BaseCommand) {
loginHandlers := map[string]LoginHandler{
"aws": &credAws.CLIHandler{},
"centrify": &credCentrify.CLIHandler{},
@@ -206,6 +206,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuditCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -213,6 +214,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuditDisableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -220,6 +222,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuditEnableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -227,6 +230,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuditListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -234,6 +238,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuthTuneCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -241,6 +246,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuthCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
Handlers: loginHandlers,
}, nil
@@ -249,6 +255,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuthDisableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -256,6 +263,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuthEnableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -263,6 +271,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuthHelpCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
Handlers: loginHandlers,
}, nil
@@ -271,6 +280,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &AuthListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -278,6 +288,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &DeleteCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -285,6 +296,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &LeaseCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -292,6 +304,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &LeaseRenewCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -299,6 +312,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &LeaseRevokeCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -306,6 +320,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &ListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -313,6 +328,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &LoginCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
Handlers: loginHandlers,
}, nil
@@ -321,6 +337,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -328,6 +345,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorGenerateRootCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -335,6 +353,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorInitCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -342,6 +361,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorKeyStatusCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -349,6 +369,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorRekeyCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -356,6 +377,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorRotateCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -363,6 +385,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorSealCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -370,6 +393,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorStepDownCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -377,6 +401,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &OperatorUnsealCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -384,6 +409,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PathHelpCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -391,6 +417,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PolicyCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -398,6 +425,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PolicyDeleteCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -405,6 +433,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PolicyFmtCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -412,6 +441,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PolicyListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -419,6 +449,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PolicyReadCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -426,6 +457,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &PolicyWriteCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -433,6 +465,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &ReadCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -440,6 +473,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SecretsCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -447,6 +481,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SecretsDisableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -454,6 +489,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SecretsEnableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -461,6 +497,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SecretsListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -468,6 +505,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SecretsMoveCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -475,6 +513,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SecretsTuneCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -482,6 +521,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &ServerCommand{
BaseCommand: &BaseCommand{
UI: serverCmdUi,
tokenHelper: baseCmdTemplate.tokenHelper,
},
AuditBackends: auditBackends,
CredentialBackends: credentialBackends,
@@ -495,6 +535,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &SSHCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -502,6 +543,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &StatusCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -509,6 +551,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &TokenCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -516,6 +559,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &TokenCreateCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -523,6 +567,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &TokenCapabilitiesCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -530,6 +575,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &TokenLookupCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -537,6 +583,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &TokenRenewCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -544,6 +591,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &TokenRevokeCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -551,6 +599,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &UnwrapCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -559,6 +608,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
VersionInfo: version.GetVersion(),
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -566,6 +616,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &WriteCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
}, nil
},
@@ -579,10 +630,10 @@ func initCommands(ui, serverCmdUi cli.Ui) {
return &DeprecatedCommand{
Old: "audit-disable",
New: "audit disable",
UI: ui,
Command: &AuditDisableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -596,6 +647,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &AuditEnableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -609,6 +661,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &AuditListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -622,6 +675,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &AuthDisableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -635,6 +689,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &AuthEnableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -648,6 +703,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &TokenCapabilitiesCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -661,6 +717,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorGenerateRootCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -674,6 +731,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorInitCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -687,6 +745,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorKeyStatusCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -700,6 +759,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &LeaseRenewCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -713,6 +773,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &LeaseRevokeCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -726,6 +787,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &SecretsEnableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -739,6 +801,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &SecretsTuneCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -752,6 +815,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &SecretsListCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -765,6 +829,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &PoliciesDeprecatedCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -778,6 +843,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &PolicyDeleteCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -791,6 +857,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &PolicyWriteCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -804,6 +871,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorRekeyCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -817,6 +885,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &SecretsMoveCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -830,6 +899,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorRotateCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -843,6 +913,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorSealCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -856,6 +927,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorStepDownCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -869,6 +941,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &TokenCreateCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -882,6 +955,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &TokenLookupCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -895,6 +969,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &TokenRenewCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -908,6 +983,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &TokenRevokeCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -921,6 +997,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &SecretsDisableCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil
@@ -934,6 +1011,7 @@ func initCommands(ui, serverCmdUi cli.Ui) {
Command: &OperatorUnsealCommand{
BaseCommand: &BaseCommand{
UI: ui,
tokenHelper: baseCmdTemplate.tokenHelper,
},
},
}, nil

View File

@@ -81,6 +81,16 @@ func setupEnv(args []string) []string {
}
func Run(args []string) int {
return RunCustom(args, nil)
}
// RunCustom allows passing in a base command template to pass to other
// commands. Currenty, this is only used for setting a custom token helper.
func RunCustom(args []string, baseCmdTemplate *BaseCommand) int {
if baseCmdTemplate == nil {
baseCmdTemplate = &BaseCommand{}
}
args = setupEnv(args)
// Don't use color if disabled
@@ -129,7 +139,7 @@ func Run(args []string) int {
}
}
initCommands(ui, serverCmdUi)
initCommands(ui, serverCmdUi, baseCmdTemplate)
// Calculate hidden commands from the deprecated ones
hiddenCommands := make([]string, 0, len(DeprecatedCommands)+1)