summaryrefslogtreecommitdiff
path: root/internal/command/commandargs/shell.go
diff options
context:
space:
mode:
authorLorenz Brun <lorenz@dolansoft.org>2021-01-18 18:36:25 +0000
committerNick Thomas <nick@gitlab.com>2021-01-18 18:36:25 +0000
commit2a410f31b633ec5a994ecf1ff39dc8ffb9c6f828 (patch)
tree6ccc8b187438d1a218ee0ec833c339fa8faa8dd1 /internal/command/commandargs/shell.go
parent0e5660917f0316a2197ffc5add7a8f01d3e428be (diff)
downloadgitlab-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.go12
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
}