mirror of
https://github.com/lwch/natpass.git
synced 2024-04-21 12:41:54 +00:00
47 lines
950 B
Go
47 lines
950 B
Go
package conn
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/lwch/natpass/code/network"
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
// SendShellData send shell data
|
|
func (conn *Conn) SendShellData(to string, id string, data []byte) uint64 {
|
|
var msg network.Msg
|
|
msg.To = to
|
|
msg.XType = network.Msg_shell_data
|
|
msg.LinkId = id
|
|
msg.Payload = &network.Msg_Sdata{
|
|
Sdata: &network.ShellData{
|
|
Data: dup(data),
|
|
},
|
|
}
|
|
select {
|
|
case conn.write <- &msg:
|
|
data, _ := proto.Marshal(&msg)
|
|
return uint64(len(data))
|
|
case <-time.After(conn.cfg.WriteTimeout):
|
|
return 0
|
|
}
|
|
}
|
|
|
|
// SendShellResize send shell resize
|
|
func (conn *Conn) SendShellResize(to string, id string, rows, cols uint32) {
|
|
var msg network.Msg
|
|
msg.To = to
|
|
msg.XType = network.Msg_shell_resize
|
|
msg.LinkId = id
|
|
msg.Payload = &network.Msg_Sresize{
|
|
Sresize: &network.ShellResize{
|
|
Rows: rows,
|
|
Cols: cols,
|
|
},
|
|
}
|
|
select {
|
|
case conn.write <- &msg:
|
|
case <-time.After(conn.cfg.WriteTimeout):
|
|
}
|
|
}
|