summaryrefslogtreecommitdiff
path: root/go/internal/command/commandargs/authorized_keys.go
diff options
context:
space:
mode:
authorPatrick Bajao <ebajao@gitlab.com>2019-08-08 15:49:09 +0800
committerPatrick Bajao <ebajao@gitlab.com>2019-08-08 15:49:09 +0800
commit570ad65f9f4567428ee5214a470a1f97146d58c8 (patch)
treedc01da9252c0acd37966fb53f10a1adbf5e0adf6 /go/internal/command/commandargs/authorized_keys.go
parentc577eb9ed8bd0336870f7a83302f70821d510169 (diff)
downloadgitlab-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.go51
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
+}