diff options
author | Lorenz Brun <lorenz@dolansoft.org> | 2021-01-18 18:36:25 +0000 |
---|---|---|
committer | Nick Thomas <nick@gitlab.com> | 2021-01-18 18:36:25 +0000 |
commit | 2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828 (patch) | |
tree | 6ccc8b187438d1a218ee0ec833c339fa8faa8dd1 /internal/command/commandargs/shell.go | |
parent | 0e5660917f0316a2197ffc5add7a8f01d3e428be (diff) | |
download | gitlab-shell-2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828.tar.gz |
RFC: Simple built-in SSH server
Diffstat (limited to 'internal/command/commandargs/shell.go')
-rw-r--r-- | internal/command/commandargs/shell.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/internal/command/commandargs/shell.go b/internal/command/commandargs/shell.go index 1535ccb..62fc8fa 100644 --- a/internal/command/commandargs/shell.go +++ b/internal/command/commandargs/shell.go @@ -2,6 +2,7 @@ package commandargs import ( "errors" + "net" "os" "regexp" @@ -32,6 +33,10 @@ type Shell struct { GitlabKeyId string SshArgs []string CommandType CommandType + + // Only set when running standalone + RemoteAddr *net.TCPAddr + GitProtocolVersion string } func (s *Shell) Parse() error { @@ -40,7 +45,6 @@ func (s *Shell) Parse() error { } s.parseWho() - s.defineCommandType() return nil } @@ -67,7 +71,7 @@ func (s *Shell) isSshConnection() bool { } func (s *Shell) isValidSshCommand() bool { - err := s.parseCommand(os.Getenv("SSH_ORIGINAL_COMMAND")) + err := s.ParseCommand(os.Getenv("SSH_ORIGINAL_COMMAND")) return err == nil } @@ -107,7 +111,7 @@ func tryParseUsername(argument string) string { return "" } -func (s *Shell) parseCommand(commandString string) error { +func (s *Shell) ParseCommand(commandString string) error { args, err := shellwords.Parse(commandString) if err != nil { return err @@ -123,6 +127,8 @@ func (s *Shell) parseCommand(commandString string) error { s.SshArgs = args + s.defineCommandType() + return nil } |