mirror of
https://github.com/yudai/gotty.git
synced 2026-01-26 11:16:11 +01:00
Make client request base64 encoding
This makes gotty-client still work.
This commit is contained in:
parent
1eed97f0f8
commit
dd3603c341
8 changed files with 42 additions and 37 deletions
|
|
@ -24,6 +24,7 @@ type WebTTY struct {
|
|||
rows int
|
||||
reconnect int // in seconds
|
||||
masterPrefs []byte
|
||||
decoder Decoder
|
||||
|
||||
bufferSize int
|
||||
writeMutex sync.Mutex
|
||||
|
|
@ -43,6 +44,7 @@ func New(masterConn Master, slave Slave, options ...Option) (*WebTTY, error) {
|
|||
rows: 0,
|
||||
|
||||
bufferSize: 1024,
|
||||
decoder: &NullCodec{},
|
||||
}
|
||||
|
||||
for _, option := range options {
|
||||
|
|
@ -177,9 +179,9 @@ func (wt *WebTTY) handleMasterReadEvent(data []byte) error {
|
|||
}
|
||||
|
||||
var decodedBuffer = make([]byte, len(data))
|
||||
n, err := base64.StdEncoding.Decode(decodedBuffer, data[1:])
|
||||
n, err := wt.decoder.Decode(decodedBuffer, data[1:])
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to write received data to slave")
|
||||
return errors.Wrapf(err, "failed to decode received data")
|
||||
}
|
||||
|
||||
_, err = wt.slave.Write(decodedBuffer[:n])
|
||||
|
|
@ -193,6 +195,14 @@ func (wt *WebTTY) handleMasterReadEvent(data []byte) error {
|
|||
return errors.Wrapf(err, "failed to return Pong message to master")
|
||||
}
|
||||
|
||||
case SetEncoding:
|
||||
switch string(data[1:]) {
|
||||
case "base64":
|
||||
wt.decoder = base64.StdEncoding
|
||||
case "null":
|
||||
wt.decoder = NullCodec{}
|
||||
}
|
||||
|
||||
case ResizeTerminal:
|
||||
if wt.columns != 0 && wt.rows != 0 {
|
||||
break
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue