Skip to content

Commit a1c96c9

Browse files
committed
window size fix
1 parent e24f0ef commit a1c96c9

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

Gopkg.lock

Lines changed: 8 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func main() {
289289
log.Panicln(err)
290290
}
291291
if e.ipAddr != nil {
292-
err = startSSH()
292+
err = startSSH(*e.ipAddr, *e.keyName)
293293
if err != nil {
294294
fmt.Printf("Error: %v\n\n", err)
295295
}

ssh.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package main
22

33
import (
44
"encoding/binary"
5-
"github.com/docker/docker/pkg/term"
65
"golang.org/x/crypto/ssh"
76
"golang.org/x/crypto/ssh/agent"
7+
"golang.org/x/crypto/ssh/terminal"
88

99
"fmt"
1010
"io/ioutil"
@@ -14,21 +14,21 @@ import (
1414
"syscall"
1515
)
1616

17-
func startSSH() error {
17+
func startSSH(ipAddr, keyName string) error {
1818
width := 80
1919
height := 24
2020
sshConfig := &ssh.ClientConfig{
2121
User: "ec2-user",
2222
Auth: []ssh.AuthMethod{
2323
SSHAgent(),
24-
PublicKeyFile("/keys/" + *e.keyName),
24+
PublicKeyFile("/keys/" + keyName),
2525
},
2626
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
2727
return nil
2828
},
2929
}
30-
fmt.Printf("Opening connection to %v:22 with key %v", *e.ipAddr, "/keys/"+*e.keyName)
31-
connection, err := ssh.Dial("tcp", *e.ipAddr+":22", sshConfig)
30+
fmt.Printf("Opening connection to %v:22 with SSHAgent or key %v", ipAddr, "/keys/"+keyName)
31+
connection, err := ssh.Dial("tcp", ipAddr+":22", sshConfig)
3232
if err != nil {
3333
return fmt.Errorf("Failed to dial: %s", err)
3434
}
@@ -46,24 +46,24 @@ func startSSH() error {
4646
ssh.ECHO: 1,
4747
}
4848

49-
fd := os.Stdin.Fd()
49+
fd := int(os.Stdin.Fd())
5050

51-
if term.IsTerminal(fd) {
52-
oldState, err := term.MakeRaw(fd)
51+
if terminal.IsTerminal(fd) {
52+
oldState, err := terminal.MakeRaw(fd)
5353
if err != nil {
5454
return err
5555
}
5656

57-
defer term.RestoreTerminal(fd, oldState)
57+
defer terminal.Restore(fd, oldState)
5858

59-
winsize, err := term.GetWinsize(fd)
59+
tmpWidth, tmpHeight, err := terminal.GetSize(fd)
6060
if err == nil {
61-
width = int(winsize.Width)
62-
height = int(winsize.Height)
61+
width = tmpWidth
62+
height = tmpHeight
6363
}
6464
}
6565

66-
if err := session.RequestPty("xterm", width, height, modes); err != nil {
66+
if err := session.RequestPty("xterm", height, width, modes); err != nil {
6767
session.Close()
6868
return fmt.Errorf("request for pseudo terminal failed: %s", err)
6969
}
@@ -114,15 +114,15 @@ func monitorChanges(session *ssh.Session, fd uintptr) {
114114
func termSize(fd uintptr) []byte {
115115
size := make([]byte, 16)
116116

117-
winsize, err := term.GetWinsize(fd)
117+
width, height, err := terminal.GetSize(int(fd))
118118
if err != nil {
119119
binary.BigEndian.PutUint32(size, uint32(80))
120120
binary.BigEndian.PutUint32(size[4:], uint32(24))
121121
return size
122122
}
123123

124-
binary.BigEndian.PutUint32(size, uint32(winsize.Width))
125-
binary.BigEndian.PutUint32(size[4:], uint32(winsize.Height))
124+
binary.BigEndian.PutUint32(size, uint32(width))
125+
binary.BigEndian.PutUint32(size[4:], uint32(height))
126126

127127
return size
128128
}

0 commit comments

Comments
 (0)