forked from viant/toolbox
/
session_replay.go
53 lines (42 loc) · 1.1 KB
/
session_replay.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package ssh
import (
"errors"
"strings"
)
const commandNotFound = "Command not found"
type replayMultiCommandSession struct {
shellPrompt string
system string
replay *ReplayCommands
}
func (s *replayMultiCommandSession) Run(command string, listener Listener, timeoutMs int, terminators ...string) (string, error) {
if !strings.HasSuffix(command, "\n") {
command = command + "\n"
}
replay, ok := s.replay.Commands[command]
if !ok {
return commandNotFound, nil
}
if replay.Error != "" {
return "", errors.New(replay.Error)
}
return s.replay.Next(command), nil
}
func (s *replayMultiCommandSession) Reconnect() error {
return errors.New("unsupported")
}
func (s *replayMultiCommandSession) ShellPrompt() string {
return s.shellPrompt
}
func (s *replayMultiCommandSession) System() string {
return s.system
}
func (s *replayMultiCommandSession) Close() {
}
func NewReplayMultiCommandSession(shellPrompt, system string, commands *ReplayCommands) MultiCommandSession {
return &replayMultiCommandSession{
shellPrompt: shellPrompt,
system: system,
replay: commands,
}
}