diff --git a/bin/recordings/recording_1563174043/proto.rbs b/bin/recordings/recording_1563174043/proto.rbs deleted file mode 100644 index ab4cb46..0000000 Binary files a/bin/recordings/recording_1563174043/proto.rbs and /dev/null differ diff --git a/bin/recordings/recording_1565085991/client.rbs b/bin/recordings/recording_1565085991/client.rbs new file mode 100644 index 0000000..133da95 Binary files /dev/null and b/bin/recordings/recording_1565085991/client.rbs differ diff --git a/bin/recordings/recording_1565085991/server.rbs b/bin/recordings/recording_1565085991/server.rbs new file mode 100644 index 0000000..e3fb4c6 Binary files /dev/null and b/bin/recordings/recording_1565085991/server.rbs differ diff --git a/bin/recordings/recording_1565086259/client.rbs b/bin/recordings/recording_1565086259/client.rbs new file mode 100644 index 0000000..d05c1f7 Binary files /dev/null and b/bin/recordings/recording_1565086259/client.rbs differ diff --git a/bin/recordings/recording_1565086259/server.rbs b/bin/recordings/recording_1565086259/server.rbs new file mode 100644 index 0000000..3651ab0 Binary files /dev/null and b/bin/recordings/recording_1565086259/server.rbs differ diff --git a/bin/recordings/recording_1565086382/client.rbs b/bin/recordings/recording_1565086382/client.rbs new file mode 100644 index 0000000..b810564 Binary files /dev/null and b/bin/recordings/recording_1565086382/client.rbs differ diff --git a/bin/recordings/recording_1565086382/server.rbs b/bin/recordings/recording_1565086382/server.rbs new file mode 100644 index 0000000..2976a5c Binary files /dev/null and b/bin/recordings/recording_1565086382/server.rbs differ diff --git a/bin/recordings/recording_1565093465/client.rbs b/bin/recordings/recording_1565093465/client.rbs new file mode 100644 index 0000000..9fd9a52 Binary files /dev/null and b/bin/recordings/recording_1565093465/client.rbs differ diff --git a/bin/recordings/recording_1565093465/server.rbs b/bin/recordings/recording_1565093465/server.rbs new file mode 100644 index 0000000..345361a Binary files /dev/null and b/bin/recordings/recording_1565093465/server.rbs differ diff --git a/bin/vnc_recorder b/bin/vnc_recorder index 43ec57e..43ee114 100755 Binary files a/bin/vnc_recorder and b/bin/vnc_recorder differ diff --git a/vnc_rec/proxy.go b/vnc_rec/proxy.go index e852af6..3e58834 100644 --- a/vnc_rec/proxy.go +++ b/vnc_rec/proxy.go @@ -79,32 +79,43 @@ func (vp *VncProxy) newServerConnHandler(cfg *server.ServerConfig, sconn *server return err } - //var rec_s *ServerRecorder - var rec_p *ProtoRecorder + var rec_s *ServerRecorder + var rec_c *ClientRecorder + //var rec_p *ProtoRecorder if session.Type == SessionTypeRecordingProxy { timeCurrent := strconv.FormatInt(time.Now().Unix(), 10) recFolder := path.Join(vp.RecordingDir, "recording_"+timeCurrent) os.MkdirAll(recFolder, os.ModePerm) - // recServerFile := "server.rbs" - // recServerPath := path.Join(recFolder, recServerFile) - // rec_s, err = NewServerRecorder(recServerPath) - // if err != nil { - // logger.Errorf("Proxy.newServerConnHandler can't open ServerRecorder save path: %s", recServerPath) - // return err - // } - - // sconn.Listeners.AddListener(rec_s) - - recProtoFile := "proto.rbs" - recProtoPath := path.Join(recFolder, recProtoFile) - rec_p, err = NewProtoRecorder(recProtoPath) + recServerFile := "server.rbs" + recServerPath := path.Join(recFolder, recServerFile) + rec_s, err = NewServerRecorder(recServerPath) if err != nil { - logger.Errorf("Proxy.newServerConnHandler can't open ProtoRecorder save path: %s", recProtoPath) + logger.Errorf("Proxy.newServerConnHandler can't open ServerRecorder save path: %s", recServerPath) return err } - sconn.Listeners.AddListener(rec_p) + sconn.Listeners.AddListener(rec_s) + + recClientFile := "client.rbs" + recClientPath := path.Join(recFolder, recClientFile) + rec_c, err = NewClientRecorder(recClientPath) + if err != nil { + logger.Errorf("Proxy.newServerConnHandler can't open ServerRecorder save path: %s", recClientPath) + return err + } + + sconn.Listeners.AddListener(rec_c) + + // recProtoFile := "proto.rbs" + // recProtoPath := path.Join(recFolder, recProtoFile) + // rec_p, err = NewProtoRecorder(recProtoPath) + // if err != nil { + // logger.Errorf("Proxy.newServerConnHandler can't open ProtoRecorder save path: %s", recProtoPath) + // return err + // } + + // sconn.Listeners.AddListener(rec_p) } session.Status = SessionStatusInit @@ -121,7 +132,8 @@ func (vp *VncProxy) newServerConnHandler(cfg *server.ServerConfig, sconn *server return err } if session.Type == SessionTypeRecordingProxy { - cconn.Listeners.AddListener(rec_p) + cconn.Listeners.AddListener(rec_s) + cconn.Listeners.AddListener(rec_c) } //creating cross-listeners between server and client parts to pass messages through the proxy: diff --git a/vnc_rec/server-recorder.go b/vnc_rec/server-recorder.go index f35537b..b4f04ac 100644 --- a/vnc_rec/server-recorder.go +++ b/vnc_rec/server-recorder.go @@ -139,7 +139,6 @@ func (r *ServerRecorder) HandleRfbSegment(data *common.RfbSegment) error { switch common.ServerMessageType(data.UpcomingObjectType) { case common.FramebufferUpdate: logger.Debugf("ServerRecorder.HandleRfbSegment: saving FramebufferUpdate segment") - //r.writeToDisk() case common.SetColourMapEntries: case common.Bell: case common.ServerCutText: @@ -168,6 +167,10 @@ func (r *ServerRecorder) HandleRfbSegment(data *common.RfbSegment) error { clientMsg := data.Message.(*server.MsgSetPixelFormat) logger.Debugf("ServerRecorder.HandleRfbSegment: client message %v", *clientMsg) r.serverInitMessage.PixelFormat = clientMsg.PF + case common.KeyEventMsgType: + r.writeToDisk() + case common.PointerEventMsgType: + r.writeToDisk() default: //return errors.New("unknown client message type:" + string(data.UpcomingObjectType)) }