Skip to content

Commit 2d7938a

Browse files
committed
fix: special term char
1 parent 5957a25 commit 2d7938a

File tree

8 files changed

+48
-50
lines changed

8 files changed

+48
-50
lines changed

biz/client/stream_log.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func initStreamLog(h *common.HookMgr) {
3131

3232
h.AddStream(func(msg string) {
3333
handler.Send(&pb.PushClientStreamLogReq{
34-
Log: utils.EncodeBase64(msg),
34+
Log: []byte(utils.EncodeBase64(msg)),
3535
Base: &pb.ClientBase{
3636
ClientId: clientID,
3737
ClientSecret: clientSecret,

biz/common/pty.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/VaalaCat/frp-panel/services/rpcclient"
1010
"github.com/VaalaCat/frp-panel/utils/pty"
1111
"github.com/google/uuid"
12-
"github.com/samber/lo"
1312
"github.com/sourcegraph/conc"
1413
)
1514

@@ -34,7 +33,7 @@ func StartPTYConnect(c context.Context, req *pb.CommonRequest, initMsg *pb.PTYCl
3433
return nil, err
3534
}
3635

37-
if ack.GetData() != "ok" {
36+
if string(ack.GetData()) != "ok" {
3837
logger.Logger(c).Infof("ack error")
3938
return nil, fmt.Errorf("ack error")
4039
}
@@ -54,7 +53,7 @@ func HandlePTY(c context.Context, conn pb.Master_PTYConnectClient, sessionID str
5453
if err != nil {
5554
msg := fmt.Sprintf("failed to start tty: %s", err)
5655
logger.Logger(c).WithError(err).Warn(msg)
57-
conn.Send(&pb.PTYClientMessage{Data: &msg, SessionId: sessionID})
56+
conn.Send(&pb.PTYClientMessage{Data: []byte(msg), SessionId: sessionID})
5857
return
5958
}
6059

@@ -82,16 +81,16 @@ func HandlePTY(c context.Context, conn pb.Master_PTYConnectClient, sessionID str
8281
readLength, err := ptyInstace.Read(buffer)
8382
if err != nil {
8483
logger.Logger(c).Warnf("failed to read from tty: %s", err)
85-
if err := conn.Send(&pb.PTYClientMessage{Data: lo.ToPtr("bye!"), SessionId: sessionID}); err != nil {
84+
if err := conn.Send(&pb.PTYClientMessage{Data: []byte("bye!"), SessionId: sessionID}); err != nil {
8685
logger.Logger(c).Warnf("failed to send termination message from tty to master: %s", err)
8786
}
8887
if err := conn.CloseSend(); err != nil {
8988
logger.Logger(c).Warnf("failed to close grpc stream connection: %s", err)
9089
}
9190
return
9291
}
93-
str := string(buffer[:readLength])
94-
if err := conn.Send(&pb.PTYClientMessage{Data: lo.ToPtr(str), SessionId: sessionID}); err != nil {
92+
str := buffer[:readLength]
93+
if err := conn.Send(&pb.PTYClientMessage{Data: str, SessionId: sessionID}); err != nil {
9594
logger.Logger(c).Warnf("failed to send %v bytes from tty to master", readLength)
9695
errorCounter++
9796
continue

biz/master/shell/handler.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func PTYHandler(c *gin.Context) {
9393

9494
defer func() {
9595
logger.Logger(c).Info("gracefully stopping spawned tty...")
96-
if err := cliConn.Send(&pb.PTYServerMessage{Data: lo.ToPtr("bye!"), Done: true}); err != nil {
96+
if err := cliConn.Send(&pb.PTYServerMessage{Data: []byte("bye!"), Done: true}); err != nil {
9797
logger.Logger(c).Warnf("failed to send close message: %s", err)
9898
}
9999

@@ -115,7 +115,7 @@ func PTYHandler(c *gin.Context) {
115115

116116
wg.Go(func() {
117117
defer func() {
118-
if err := cliConn.Send(&pb.PTYServerMessage{Data: lo.ToPtr("bye!"), Done: true}); err != nil {
118+
if err := cliConn.Send(&pb.PTYServerMessage{Data: []byte("bye!"), Done: true}); err != nil {
119119
logger.Logger(c).Warnf("failed to send close message: %s", err)
120120
}
121121

@@ -130,7 +130,7 @@ func PTYHandler(c *gin.Context) {
130130
return
131131
}
132132
time.Sleep(keepalivePingTimeout / 2)
133-
if time.Now().Sub(lastPongTime) > keepalivePingTimeout {
133+
if time.Since(lastPongTime) > keepalivePingTimeout {
134134
logger.Logger(c).Warn("failed to get response from ping, triggering disconnect now...")
135135
return
136136
}
@@ -151,10 +151,10 @@ func PTYHandler(c *gin.Context) {
151151
cliMsg, err := cliConn.Recv()
152152
if err != nil {
153153
logger.Logger(c).Warnf("failed to read from client sender: %s", err)
154-
if err := webConn.WriteMessage(websocket.TextMessage, []byte("bye!")); err != nil {
154+
if err := webConn.WriteMessage(websocket.BinaryMessage, []byte("bye!")); err != nil {
155155
logger.Logger(c).Warnf("failed to send termination message from client sender to xterm.js: %s", err)
156156
}
157-
if err := cliConn.Send(&pb.PTYServerMessage{Data: lo.ToPtr("bye!"), Done: true}); err != nil {
157+
if err := cliConn.Send(&pb.PTYServerMessage{Data: []byte("bye!"), Done: true}); err != nil {
158158
logger.Logger(c).Warnf("failed to send termination message from client sender to client: %s", err)
159159
}
160160
if err := webConn.Close(); err != nil {
@@ -184,7 +184,7 @@ func PTYHandler(c *gin.Context) {
184184
if !connectionClosed {
185185
logger.Logger(c).Warnf("failed to get next reader: %s", err)
186186
}
187-
if err := cliConn.Send(&pb.PTYServerMessage{Data: lo.ToPtr("bye!"), Done: true}); err != nil {
187+
if err := cliConn.Send(&pb.PTYServerMessage{Data: []byte("bye!"), Done: true}); err != nil {
188188
logger.Logger(c).Warnf("failed to send termination message from xterm.js to client: %s", err)
189189
}
190190
if err := webConn.Close(); err != nil {
@@ -201,7 +201,7 @@ func PTYHandler(c *gin.Context) {
201201

202202
msg := &pb.PTYServerMessage{}
203203
if payload.Data != nil {
204-
msg.Data = lo.ToPtr(*payload.Data)
204+
msg.Data = []byte(*payload.Data)
205205
}
206206
if payload.Height != nil {
207207
msg.Height = lo.ToPtr(int32(*payload.Height))
@@ -212,10 +212,10 @@ func PTYHandler(c *gin.Context) {
212212

213213
err = cliConn.Send(msg)
214214
if err != nil {
215-
logger.Logger(c).Warn(fmt.Sprintf("failed to write bytes to tty: %s", err))
215+
logger.Logger(c).Warn(fmt.Sprintf("failed to write bytes to client: %s", err))
216216
continue
217217
}
218-
logger.Logger(c).Tracef("messageType [%v] bytes written to tty...", messageType)
218+
logger.Logger(c).Tracef("messageType [%v] bytes written to client...", messageType)
219219
}
220220
})
221221

biz/master/shell/recv_mgr.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"github.com/VaalaCat/frp-panel/biz/master/server"
99
"github.com/VaalaCat/frp-panel/logger"
1010
"github.com/VaalaCat/frp-panel/pb"
11-
"github.com/samber/lo"
1211
)
1312

1413
func PTYConnect(sender pb.Master_PTYConnectServer) error {
@@ -42,7 +41,7 @@ func PTYConnect(sender pb.Master_PTYConnectServer) error {
4241

4342
Mgr().Add(msg.GetSessionId(), sender)
4443

45-
if err := sender.Send(&pb.PTYServerMessage{Data: lo.ToPtr("ok")}); err != nil {
44+
if err := sender.Send(&pb.PTYServerMessage{Data: []byte("ok")}); err != nil {
4645
return err
4746
}
4847

biz/master/streamlog/collect_log.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func PushClientStreamLog(sender pb.Master_PushClientStreamLogServer) error {
6767
return fmt.Errorf("push client stream log cannot find client, id: [%s]", req.GetBase().GetClientId())
6868
}
6969

70-
ch <- req.GetLog()
70+
ch <- string(req.GetLog())
7171
}
7272
return nil
7373
}
@@ -93,7 +93,7 @@ func PushServerStreamLog(sender pb.Master_PushServerStreamLogServer) error {
9393
if !ok {
9494
return fmt.Errorf("push server stream log cannot find server, id: [%s]", req.GetBase().GetServerId())
9595
}
96-
ch <- req.GetLog()
96+
ch <- string(req.GetLog())
9797
}
9898
return nil
9999
}

biz/server/stream_log.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func initStreamLog(h *common.HookMgr) {
3131

3232
h.AddStream(func(msg string) {
3333
handler.Send(&pb.PushServerStreamLogReq{
34-
Log: utils.EncodeBase64(msg),
34+
Log: []byte(utils.EncodeBase64(msg)),
3535
Base: &pb.ServerBase{
3636
ServerId: clientID,
3737
ServerSecret: clientSecret,

idl/rpc_master.proto

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,12 @@ message PushProxyInfoResp {
9090
}
9191

9292
message PushServerStreamLogReq {
93-
string log = 1;
93+
bytes log = 1;
9494
ServerBase base = 255;
9595
}
9696

9797
message PushClientStreamLogReq {
98-
string log = 1;
98+
bytes log = 1;
9999
ClientBase base = 255;
100100
}
101101

@@ -105,7 +105,7 @@ message PushStreamLogResp {
105105
}
106106

107107
message PTYClientMessage {
108-
optional string data = 1;
108+
optional bytes data = 1;
109109
string session_id = 2;
110110
bool done = 3;
111111
oneof Base {
@@ -115,7 +115,7 @@ message PTYClientMessage {
115115
}
116116

117117
message PTYServerMessage {
118-
optional string data = 1;
118+
optional bytes data = 1;
119119
optional int32 height = 2;
120120
optional int32 width = 3;
121121
bool done = 4;

pb/rpc_master.pb.go

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

0 commit comments

Comments
 (0)