mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
ssh/tailssh: add ssh session recording failed event type
This change introduces a SSHSessionRecordingFailed event type that is used when a session recording fails to start or fails during a session, and the on failure indicates that it should fail open. Updates tailscale/corp#9967 Signed-off-by: Charlotte Brandhorst-Satzkorn <charlotte@tailscale.com>
This commit is contained in:
parent
745ee97973
commit
4e86857313
@ -1607,7 +1607,11 @@ func (ss *sshSession) startNewRecording() (_ *recording, err error) {
|
||||
rec.out, attempts, errChan, err = ss.connectToRecorder(ctx, recorders)
|
||||
if err != nil {
|
||||
if onFailure != nil && onFailure.NotifyURL != "" && len(attempts) > 0 {
|
||||
ss.notifyControl(ctx, nodeKey, tailcfg.SSHSessionRecordingRejected, attempts, onFailure.NotifyURL)
|
||||
eventType := tailcfg.SSHSessionRecordingFailed
|
||||
if onFailure.RejectSessionWithMessage != "" {
|
||||
eventType = tailcfg.SSHSessionRecordingRejected
|
||||
}
|
||||
ss.notifyControl(ctx, nodeKey, eventType, attempts, onFailure.NotifyURL)
|
||||
}
|
||||
|
||||
if onFailure != nil && onFailure.RejectSessionWithMessage != "" {
|
||||
@ -1630,7 +1634,12 @@ func (ss *sshSession) startNewRecording() (_ *recording, err error) {
|
||||
lastAttempt := attempts[len(attempts)-1]
|
||||
lastAttempt.FailureMessage = err.Error()
|
||||
|
||||
ss.notifyControl(ctx, nodeKey, tailcfg.SSHSessionRecordingTerminated, attempts, onFailure.NotifyURL)
|
||||
eventType := tailcfg.SSHSessionRecordingFailed
|
||||
if onFailure.TerminateSessionWithMessage != "" {
|
||||
eventType = tailcfg.SSHSessionRecordingTerminated
|
||||
}
|
||||
|
||||
ss.notifyControl(ctx, nodeKey, eventType, attempts, onFailure.NotifyURL)
|
||||
}
|
||||
if onFailure != nil && onFailure.TerminateSessionWithMessage != "" {
|
||||
ss.logf("recording: error uploading recording (closing session): %v", err)
|
||||
|
@ -2111,8 +2111,22 @@ type SSHEventNotifyRequest struct {
|
||||
|
||||
const (
|
||||
UnspecifiedSSHEventType SSHEventType = 0
|
||||
// SSHSessionRecordingRejected is the event that
|
||||
// defines when a SSH session cannot be started
|
||||
// because no recorder is available for session
|
||||
// recording, and the SSHRecorderFailureAction
|
||||
// RejectSessionWithMessage is not empty.
|
||||
SSHSessionRecordingRejected SSHEventType = 1
|
||||
// SSHSessionRecordingTerminated is the event that
|
||||
// defines when session recording has failed
|
||||
// during the session and the SSHRecorderFailureAction
|
||||
// TerminateSessionWithMessage is not empty.
|
||||
SSHSessionRecordingTerminated SSHEventType = 2
|
||||
// SSHSessionRecordingFailed is the event that
|
||||
// defines when session recording is unavailable and
|
||||
// the SSHRecorderFailureAction RejectSessionWithMessage
|
||||
// or TerminateSessionWithMessage is empty.
|
||||
SSHSessionRecordingFailed SSHEventType = 3
|
||||
)
|
||||
|
||||
// SSHRecordingAttempt is a single attempt to start a recording.
|
||||
|
Loading…
Reference in New Issue
Block a user