diff options
author | Patrick Bajao <ebajao@gitlab.com> | 2019-08-08 15:49:09 +0800 |
---|---|---|
committer | Patrick Bajao <ebajao@gitlab.com> | 2019-08-08 15:49:09 +0800 |
commit | 570ad65f9f4567428ee5214a470a1f97146d58c8 (patch) | |
tree | dc01da9252c0acd37966fb53f10a1adbf5e0adf6 /go/internal/command/commandargs/authorized_keys.go | |
parent | c577eb9ed8bd0336870f7a83302f70821d510169 (diff) | |
download | gitlab-shell-570ad65f9f4567428ee5214a470a1f97146d58c8.tar.gz |
Implement AuthorizedKeys command181-authorized-keys-check-go
Build this command when `Executable` name is
`gitlab-shell-authorized-keys-check`. Feature flag is the same
name.
Diffstat (limited to 'go/internal/command/commandargs/authorized_keys.go')
-rw-r--r-- | go/internal/command/commandargs/authorized_keys.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/go/internal/command/commandargs/authorized_keys.go b/go/internal/command/commandargs/authorized_keys.go new file mode 100644 index 0000000..2733954 --- /dev/null +++ b/go/internal/command/commandargs/authorized_keys.go @@ -0,0 +1,51 @@ +package commandargs + +import ( + "errors" + "fmt" +) + +type AuthorizedKeys struct { + Arguments []string + ExpectedUser string + ActualUser string + Key string +} + +func (ak *AuthorizedKeys) Parse() error { + if err := ak.validate(); err != nil { + return err + } + + ak.ExpectedUser = ak.Arguments[0] + ak.ActualUser = ak.Arguments[1] + ak.Key = ak.Arguments[2] + + return nil +} + +func (ak *AuthorizedKeys) GetArguments() []string { + return ak.Arguments +} + +func (ak *AuthorizedKeys) validate() error { + argsSize := len(ak.Arguments) + + if argsSize != 3 { + return errors.New(fmt.Sprintf("# Insufficient arguments. %d. Usage\n#\tgitlab-shell-authorized-keys-check <expected-username> <actual-username> <key>", argsSize)) + } + + expectedUsername := ak.Arguments[0] + actualUsername := ak.Arguments[1] + key := ak.Arguments[2] + + if expectedUsername == "" || actualUsername == "" { + return errors.New("# No username provided") + } + + if key == "" { + return errors.New("# No key provided") + } + + return nil +} |