1package commandargs 2 3import ( 4 "errors" 5 "fmt" 6) 7 8type AuthorizedKeys struct { 9 Arguments []string 10 ExpectedUser string 11 ActualUser string 12 Key string 13} 14 15func (ak *AuthorizedKeys) Parse() error { 16 if err := ak.validate(); err != nil { 17 return err 18 } 19 20 ak.ExpectedUser = ak.Arguments[0] 21 ak.ActualUser = ak.Arguments[1] 22 ak.Key = ak.Arguments[2] 23 24 return nil 25} 26 27func (ak *AuthorizedKeys) GetArguments() []string { 28 return ak.Arguments 29} 30 31func (ak *AuthorizedKeys) validate() error { 32 argsSize := len(ak.Arguments) 33 34 if argsSize != 3 { 35 return errors.New(fmt.Sprintf("# Insufficient arguments. %d. Usage\n#\tgitlab-shell-authorized-keys-check <expected-username> <actual-username> <key>", argsSize)) 36 } 37 38 expectedUsername := ak.Arguments[0] 39 actualUsername := ak.Arguments[1] 40 key := ak.Arguments[2] 41 42 if expectedUsername == "" || actualUsername == "" { 43 return errors.New("# No username provided") 44 } 45 46 if key == "" { 47 return errors.New("# No key provided") 48 } 49 50 return nil 51} 52