diff options
| author | feistel <6742251-feistel@users.noreply.gitlab.com> | 2021-09-08 09:54:44 +0000 |
|---|---|---|
| committer | feistel <6742251-feistel@users.noreply.gitlab.com> | 2021-09-08 09:54:44 +0000 |
| commit | 8b4621aa6cba1674192ffb6e3c3e801a567f2516 (patch) | |
| tree | 734e8bd67a8a14d4c9d87c049638f0a8d38171b3 /internal/command | |
| parent | 4f5b7512c3c1ad7b67b044976b5ac3aae413beb2 (diff) | |
| download | gitlab-shell-8b4621aa6cba1674192ffb6e3c3e801a567f2516.tar.gz | |
refactor: add acceptargs field to executable
parse logic will only run if the executable accept args.
healthcheck is the only one not accepting arguments.
Diffstat (limited to 'internal/command')
| -rw-r--r-- | internal/command/command.go | 10 | ||||
| -rw-r--r-- | internal/command/command_test.go | 8 | ||||
| -rw-r--r-- | internal/command/commandargs/command_args.go | 2 |
3 files changed, 11 insertions, 9 deletions
diff --git a/internal/command/command.go b/internal/command/command.go index 6696f0f..dadf41a 100644 --- a/internal/command/command.go +++ b/internal/command/command.go @@ -29,9 +29,13 @@ type Command interface { } func New(e *executable.Executable, arguments []string, env sshenv.Env, config *config.Config, readWriter *readwriter.ReadWriter) (Command, error) { - args, err := commandargs.Parse(e, arguments, env) - if err != nil { - return nil, err + var args commandargs.CommandArgs + if e.AcceptArgs { + var err error + args, err = commandargs.Parse(e, arguments, env) + if err != nil { + return nil, err + } } if cmd := buildCommand(e, args, config, readWriter); cmd != nil { diff --git a/internal/command/command_test.go b/internal/command/command_test.go index 3617d39..a538745 100644 --- a/internal/command/command_test.go +++ b/internal/command/command_test.go @@ -26,10 +26,10 @@ import ( ) var ( - authorizedKeysExec = &executable.Executable{Name: executable.AuthorizedKeysCheck} - authorizedPrincipalsExec = &executable.Executable{Name: executable.AuthorizedPrincipalsCheck} - checkExec = &executable.Executable{Name: executable.Healthcheck} - gitlabShellExec = &executable.Executable{Name: executable.GitlabShell} + authorizedKeysExec = &executable.Executable{Name: executable.AuthorizedKeysCheck, AcceptArgs: true} + authorizedPrincipalsExec = &executable.Executable{Name: executable.AuthorizedPrincipalsCheck, AcceptArgs: true} + checkExec = &executable.Executable{Name: executable.Healthcheck, AcceptArgs: false} + gitlabShellExec = &executable.Executable{Name: executable.GitlabShell, AcceptArgs: true} basicConfig = &config.Config{GitlabUrl: "http+unix://gitlab.socket"} advancedConfig = &config.Config{GitlabUrl: "http+unix://gitlab.socket", SslCertDir: "/tmp/certs"} diff --git a/internal/command/commandargs/command_args.go b/internal/command/commandargs/command_args.go index c82732f..a01b8b2 100644 --- a/internal/command/commandargs/command_args.go +++ b/internal/command/commandargs/command_args.go @@ -25,8 +25,6 @@ func Parse(e *executable.Executable, arguments []string, env sshenv.Env) (Comman args = &AuthorizedKeys{Arguments: arguments} case executable.AuthorizedPrincipalsCheck: args = &AuthorizedPrincipals{Arguments: arguments} - case executable.Healthcheck: - return args, nil default: return nil, errors.New(fmt.Sprintf("unknown executable: %s", e.Name)) } |
