diff options
author | Nick Thomas <nick@gitlab.com> | 2019-06-03 15:21:25 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2019-06-03 15:21:25 +0000 |
commit | 5ee3270e07b0f7cca8c2352816ea86a3b640a772 (patch) | |
tree | ddc0d81da81ebfdb2c05819c88cde2c56dbaf4d5 /go/internal/command/uploadpack/uploadpack.go | |
parent | beb5855542645cdc9bf7f954b9c5a9333dfb3975 (diff) | |
parent | cde5b73cb8776c70c6d00ff34c568ea4438bcba9 (diff) | |
download | gitlab-shell-5ee3270e07b0f7cca8c2352816ea86a3b640a772.tar.gz |
Merge branch 'id-git-upload-pack' into 'master'
Go implementation for git-upload-pack
Closes #160
See merge request gitlab-org/gitlab-shell!305
Diffstat (limited to 'go/internal/command/uploadpack/uploadpack.go')
-rw-r--r-- | go/internal/command/uploadpack/uploadpack.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/go/internal/command/uploadpack/uploadpack.go b/go/internal/command/uploadpack/uploadpack.go new file mode 100644 index 0000000..cff198d --- /dev/null +++ b/go/internal/command/uploadpack/uploadpack.go @@ -0,0 +1,36 @@ +package uploadpack + +import ( + "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/commandargs" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/readwriter" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/shared/accessverifier" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/shared/disallowedcommand" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/config" +) + +type Command struct { + Config *config.Config + Args *commandargs.CommandArgs + ReadWriter *readwriter.ReadWriter +} + +func (c *Command) Execute() error { + args := c.Args.SshArgs + if len(args) != 2 { + return disallowedcommand.Error + } + + repo := args[1] + response, err := c.verifyAccess(repo) + if err != nil { + return err + } + + return c.performGitalyCall(response) +} + +func (c *Command) verifyAccess(repo string) (*accessverifier.Response, error) { + cmd := accessverifier.Command{c.Config, c.Args, c.ReadWriter} + + return cmd.Verify(c.Args.CommandType, repo) +} |