mirror of
https://github.com/lwch/natpass
synced 2025-10-28 06:21:26 +08:00
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
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 {
|
|
dup := func(data []byte) []byte {
|
|
ret := make([]byte, len(data))
|
|
copy(ret, data)
|
|
return ret
|
|
}
|
|
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):
|
|
}
|
|
}
|