diff --git a/go.mod b/go.mod index fcab0c09..9688dbde 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/rs/xid v1.2.1 github.com/russross/blackfriday v1.5.2 github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca - github.com/shazow/ssh-chat v1.8.2 + github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98 github.com/sirupsen/logrus v1.4.2 github.com/slack-go/slack v0.6.3-0.20200228121756-f56d616d5901 github.com/spf13/viper v1.6.1 diff --git a/go.sum b/go.sum index 30fc7d45..2bf88059 100644 --- a/go.sum +++ b/go.sum @@ -21,6 +21,7 @@ github.com/Rhymen/go-whatsapp/examples/sendTextMessages v0.0.0-20190325075644-cc github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alexcesaro/log v0.0.0-20150915221235-61e686294e58 h1:MkpmYfld/S8kXqTYI68DfL8/hHXjHogL120Dy00TIxc= github.com/alexcesaro/log v0.0.0-20150915221235-61e686294e58/go.mod h1:YNfsMyWSs+h+PaYkxGeMVmVCX75Zj/pqdjbu12ciCYE= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -202,8 +203,8 @@ github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca h1:NugYot0LIVPxT github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/shazow/rateio v0.0.0-20150116013248-e8e00881e5c1 h1:Lx3BlDGFElJt4u/zKc9A3BuGYbQAGlEFyPuUA3jeMD0= github.com/shazow/rateio v0.0.0-20150116013248-e8e00881e5c1/go.mod h1:vt2jWY/3Qw1bIzle5thrJWucsLuuX9iUNnp20CqCciI= -github.com/shazow/ssh-chat v1.8.2 h1:MMso9eWfCnPBelRsusYxKcRBUwHIPEQkR9WrO89II38= -github.com/shazow/ssh-chat v1.8.2/go.mod h1:cXTZK/D1zujEwB0y8DIT1GX8rIKjyLDYeWd+jitPX84= +github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98 h1:sN07ff+PSRsUNhpSod4uGKAQ+Nc0FXsBPG9FmYMNg4w= +github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98/go.mod h1:xkTgfD+WP+KR4HuG76oal25BBEeu5kJyi2EOsgiu/4Q= github.com/shirou/gopsutil v0.0.0-20180427012116-c95755e4bcd7/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= diff --git a/vendor/github.com/shazow/ssh-chat/sshd/net.go b/vendor/github.com/shazow/ssh-chat/sshd/net.go index 8305696b..678454ba 100644 --- a/vendor/github.com/shazow/ssh-chat/sshd/net.go +++ b/vendor/github.com/shazow/ssh-chat/sshd/net.go @@ -2,6 +2,7 @@ package sshd import ( "net" + "time" "github.com/shazow/rateio" "golang.org/x/crypto/ssh" @@ -32,6 +33,12 @@ func (l *SSHListener) handleConn(conn net.Conn) (*Terminal, error) { conn = ReadLimitConn(conn, l.RateLimit()) } + // If the connection doesn't write anything back for too long before we get + // a valid session, it should be dropped. + var handleTimeout = 20 * time.Second + conn.SetReadDeadline(time.Now().Add(handleTimeout)) + defer conn.SetReadDeadline(time.Time{}) + // Upgrade TCP connection to SSH connection sshConn, channels, requests, err := ssh.NewServerConn(conn, l.config) if err != nil { diff --git a/vendor/github.com/shazow/ssh-chat/sshd/terminal/terminal.go b/vendor/github.com/shazow/ssh-chat/sshd/terminal/terminal.go index 690937e6..d6650bb1 100644 --- a/vendor/github.com/shazow/ssh-chat/sshd/terminal/terminal.go +++ b/vendor/github.com/shazow/ssh-chat/sshd/terminal/terminal.go @@ -129,6 +129,8 @@ const ( keyRight keyAltLeft keyAltRight + keyAltF + keyAltB keyHome keyEnd keyDeleteWord @@ -155,8 +157,12 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { switch b[0] { case 1: // ^A return keyHome, b[1:] + case 2: // ^B + return keyLeft, b[1:] case 5: // ^E return keyEnd, b[1:] + case 6: // ^F + return keyRight, b[1:] case 8: // ^H return keyBackspace, b[1:] case 11: // ^K @@ -206,6 +212,15 @@ func bytesToKey(b []byte, pasteActive bool) (rune, []byte) { } } + if !pasteActive && len(b) >= 2 && b[0] == keyEscape { + switch b[1] { + case 'f': + return keyAltF, b[2:] + case 'b': + return keyAltB, b[2:] + } + } + if !pasteActive && len(b) >= 6 && bytes.Equal(b[:6], pasteStart) { return keyPasteStart, b[6:] } @@ -467,10 +482,14 @@ func (t *Terminal) handleKey(key rune) (line string, ok bool) { return } t.eraseNPreviousChars(1) + case keyAltB: + fallthrough case keyAltLeft: // move left by a word. t.pos -= t.countToLeftWord() t.moveCursorToPos(t.pos) + case keyAltF: + fallthrough case keyAltRight: // move right by a word. t.pos += t.countToRightWord() diff --git a/vendor/github.com/shazow/ssh-chat/sshd/terminal/util.go b/vendor/github.com/shazow/ssh-chat/sshd/terminal/util.go index 39110408..e553f7e8 100644 --- a/vendor/github.com/shazow/ssh-chat/sshd/terminal/util.go +++ b/vendor/github.com/shazow/ssh-chat/sshd/terminal/util.go @@ -14,7 +14,7 @@ // panic(err) // } // defer terminal.Restore(0, oldState) -package terminal // import "golang.org/x/crypto/ssh/terminal" +package terminal import ( "golang.org/x/sys/unix" diff --git a/vendor/github.com/shazow/ssh-chat/sshd/terminal/util_solaris.go b/vendor/github.com/shazow/ssh-chat/sshd/terminal/util_solaris.go index 3d5f06a9..7b6b6fb3 100644 --- a/vendor/github.com/shazow/ssh-chat/sshd/terminal/util_solaris.go +++ b/vendor/github.com/shazow/ssh-chat/sshd/terminal/util_solaris.go @@ -4,12 +4,13 @@ // +build solaris -package terminal // import "golang.org/x/crypto/ssh/terminal" +package terminal import ( - "golang.org/x/sys/unix" "io" "syscall" + + "golang.org/x/sys/unix" ) // State contains the state of a terminal. diff --git a/vendor/modules.txt b/vendor/modules.txt index 028eb972..35ced388 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -162,7 +162,7 @@ github.com/russross/blackfriday github.com/saintfish/chardet # github.com/shazow/rateio v0.0.0-20150116013248-e8e00881e5c1 github.com/shazow/rateio -# github.com/shazow/ssh-chat v1.8.2 +# github.com/shazow/ssh-chat v1.8.3-0.20200308224626-80ddf1f43a98 github.com/shazow/ssh-chat/internal/sanitize github.com/shazow/ssh-chat/sshd github.com/shazow/ssh-chat/sshd/terminal