mirror of
https://github.com/amitbet/vncproxy.git
synced 2025-09-15 22:29:49 +00:00
general refactoring + fixed setcursorpseudo
This commit is contained in:
@@ -21,12 +21,12 @@ type FBSPlayListener struct {
|
||||
|
||||
func NewFBSPlayListener(conn *server.ServerConn, r *FbsReader) *FBSPlayListener {
|
||||
h := &FBSPlayListener{Conn: conn, Fbs: r}
|
||||
cm := client.BellMessage(0)
|
||||
cm := client.MsgBell(0)
|
||||
h.serverMessageMap = make(map[uint8]common.ServerMessage)
|
||||
h.serverMessageMap[0] = &client.FramebufferUpdateMessage{}
|
||||
h.serverMessageMap[1] = &client.SetColorMapEntriesMessage{}
|
||||
h.serverMessageMap[0] = &client.MsgFramebufferUpdate{}
|
||||
h.serverMessageMap[1] = &client.MsgSetColorMapEntries{}
|
||||
h.serverMessageMap[2] = &cm
|
||||
h.serverMessageMap[3] = &client.ServerCutTextMessage{}
|
||||
h.serverMessageMap[3] = &client.MsgServerCutText{}
|
||||
|
||||
return h
|
||||
}
|
||||
@@ -45,7 +45,7 @@ func (handler *FBSPlayListener) Consume(seg *common.RfbSegment) error {
|
||||
}
|
||||
handler.sendFbsMessage()
|
||||
}
|
||||
// server.FramebufferUpdateRequest:
|
||||
// server.MsgFramebufferUpdateRequest:
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@@ -15,12 +15,13 @@ type FbsReader struct {
|
||||
buffer bytes.Buffer
|
||||
currentTimestamp int
|
||||
pixelFormat *common.PixelFormat
|
||||
encodings []common.Encoding
|
||||
encodings []common.IEncoding
|
||||
}
|
||||
|
||||
func (fbs *FbsReader) Read(p []byte) (n int, err error) {
|
||||
if fbs.buffer.Len() < len(p) {
|
||||
seg, err := fbs.ReadSegment()
|
||||
|
||||
if err != nil {
|
||||
logger.Error("FBSReader.Read: error reading FBSsegment: ", err)
|
||||
return 0, err
|
||||
@@ -33,7 +34,7 @@ func (fbs *FbsReader) Read(p []byte) (n int, err error) {
|
||||
|
||||
func (fbs *FbsReader) CurrentPixelFormat() *common.PixelFormat { return fbs.pixelFormat }
|
||||
func (fbs *FbsReader) CurrentColorMap() *common.ColorMap { return &common.ColorMap{} }
|
||||
func (fbs *FbsReader) Encodings() []common.Encoding { return fbs.encodings }
|
||||
func (fbs *FbsReader) Encodings() []common.IEncoding { return fbs.encodings }
|
||||
|
||||
func NewFbsReader(fbsFile string) (*FbsReader, error) {
|
||||
|
||||
@@ -43,7 +44,7 @@ func NewFbsReader(fbsFile string) (*FbsReader, error) {
|
||||
return nil, err
|
||||
}
|
||||
return &FbsReader{reader: reader,
|
||||
encodings: []common.Encoding{
|
||||
encodings: []common.IEncoding{
|
||||
&encodings.CopyRectEncoding{},
|
||||
&encodings.ZLibEncoding{},
|
||||
&encodings.ZRLEEncoding{},
|
||||
@@ -51,6 +52,7 @@ func NewFbsReader(fbsFile string) (*FbsReader, error) {
|
||||
&encodings.HextileEncoding{},
|
||||
&encodings.TightEncoding{},
|
||||
&encodings.TightPngEncoding{},
|
||||
&encodings.EncCursorPseudo{},
|
||||
&encodings.RawEncoding{},
|
||||
&encodings.RREEncoding{},
|
||||
},
|
||||
@@ -71,7 +73,7 @@ func (fbs *FbsReader) ReadStartSession() (*common.ServerInit, error) {
|
||||
bytes := make([]byte, 12)
|
||||
_, err := reader.Read(bytes)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init message - FBS file Version:", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init message - FBS file Version:", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -80,27 +82,27 @@ func (fbs *FbsReader) ReadStartSession() (*common.ServerInit, error) {
|
||||
bytes = make([]byte, 12)
|
||||
_, err = fbs.Read(bytes)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - RFB Version: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - RFB Version: ", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
//push sec type and fb dimensions
|
||||
binary.Read(fbs, binary.BigEndian, &SecTypeNone)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - SecType: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - SecType: ", err)
|
||||
}
|
||||
|
||||
//read frame buffer width, height
|
||||
binary.Read(fbs, binary.BigEndian, &framebufferWidth)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - FBWidth: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - FBWidth: ", err)
|
||||
return nil, err
|
||||
}
|
||||
initMsg.FBWidth = framebufferWidth
|
||||
|
||||
binary.Read(fbs, binary.BigEndian, &framebufferHeight)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - FBHeight: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - FBHeight: ", err)
|
||||
return nil, err
|
||||
}
|
||||
initMsg.FBHeight = framebufferHeight
|
||||
@@ -109,7 +111,7 @@ func (fbs *FbsReader) ReadStartSession() (*common.ServerInit, error) {
|
||||
pixelFormat := &common.PixelFormat{}
|
||||
binary.Read(fbs, binary.BigEndian, pixelFormat)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - Pixelformat: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - Pixelformat: ", err)
|
||||
return nil, err
|
||||
}
|
||||
initMsg.PixelFormat = *pixelFormat
|
||||
@@ -122,7 +124,7 @@ func (fbs *FbsReader) ReadStartSession() (*common.ServerInit, error) {
|
||||
var desknameLen uint32
|
||||
binary.Read(fbs, binary.BigEndian, &desknameLen)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - deskname Len: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - deskname Len: ", err)
|
||||
return nil, err
|
||||
}
|
||||
initMsg.NameLength = desknameLen
|
||||
@@ -130,7 +132,7 @@ func (fbs *FbsReader) ReadStartSession() (*common.ServerInit, error) {
|
||||
bytes = make([]byte, desknameLen)
|
||||
fbs.Read(bytes)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs init - desktopName: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: error reading rbs init - desktopName: ", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -146,7 +148,7 @@ func (fbs *FbsReader) ReadSegment() (*FbsSegment, error) {
|
||||
//read length
|
||||
err := binary.Read(reader, binary.BigEndian, &bytesLen)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs file: ", err)
|
||||
logger.Error("FbsReader.ReadStartSession: read len, error reading rbs file: ", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -156,7 +158,7 @@ func (fbs *FbsReader) ReadSegment() (*FbsSegment, error) {
|
||||
bytes := make([]byte, paddedSize)
|
||||
_, err = reader.Read(bytes)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs file: ", err)
|
||||
logger.Error("FbsReader.ReadSegment: read bytes, error reading rbs file: ", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -167,7 +169,7 @@ func (fbs *FbsReader) ReadSegment() (*FbsSegment, error) {
|
||||
var timeSinceStart uint32
|
||||
binary.Read(reader, binary.BigEndian, &timeSinceStart)
|
||||
if err != nil {
|
||||
logger.Error("error reading rbs file: ", err)
|
||||
logger.Error("FbsReader.ReadSegment: read timestamp, error reading rbs file: ", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package player
|
||||
|
||||
import (
|
||||
|
||||
"testing"
|
||||
"time"
|
||||
"vncproxy/common"
|
||||
@@ -10,9 +9,7 @@ import (
|
||||
"vncproxy/server"
|
||||
)
|
||||
|
||||
|
||||
|
||||
func loadFbsFile(filename string, conn *server.ServerConn) (*FbsReader, error) {
|
||||
func connectFbsFile(filename string, conn *server.ServerConn) (*FbsReader, error) {
|
||||
fbs, err := NewFbsReader(filename)
|
||||
if err != nil {
|
||||
logger.Error("failed to open fbs reader:", err)
|
||||
@@ -37,10 +34,23 @@ func TestServer(t *testing.T) {
|
||||
//chServer := make(chan common.ClientMessage)
|
||||
//chClient := make(chan common.ServerMessage)
|
||||
|
||||
encs := []common.IEncoding{
|
||||
&encodings.RawEncoding{},
|
||||
&encodings.TightEncoding{},
|
||||
&encodings.EncCursorPseudo{},
|
||||
//encodings.TightPngEncoding{},
|
||||
&encodings.RREEncoding{},
|
||||
&encodings.ZLibEncoding{},
|
||||
&encodings.ZRLEEncoding{},
|
||||
&encodings.CopyRectEncoding{},
|
||||
&encodings.CoRREEncoding{},
|
||||
&encodings.HextileEncoding{},
|
||||
}
|
||||
|
||||
cfg := &server.ServerConfig{
|
||||
//SecurityHandlers: []SecurityHandler{&ServerAuthNone{}, &ServerAuthVNC{}},
|
||||
SecurityHandlers: []server.SecurityHandler{&server.ServerAuthNone{}},
|
||||
Encodings: []common.Encoding{&encodings.RawEncoding{}, &encodings.TightEncoding{}, &encodings.CopyRectEncoding{}},
|
||||
Encodings: encs,
|
||||
PixelFormat: common.NewPixelFormat(32),
|
||||
ClientMessages: server.DefaultClientMessages,
|
||||
DesktopName: []byte("workDesk"),
|
||||
@@ -51,7 +61,7 @@ func TestServer(t *testing.T) {
|
||||
cfg.NewConnHandler = func(cfg *server.ServerConfig, conn *server.ServerConn) error {
|
||||
//fbs, err := loadFbsFile("/Users/amitbet/Dropbox/recording.rbs", conn)
|
||||
//fbs, err := loadFbsFile("/Users/amitbet/vncRec/recording.rbs", conn)
|
||||
fbs, err := loadFbsFile("/Users/amitbet/vncRec/recording1500411789.rbs", conn)
|
||||
fbs, err := connectFbsFile("/Users/amitbet/vncRec/recording1500503851.rbs", conn)
|
||||
|
||||
if err != nil {
|
||||
logger.Error("TestServer.NewConnHandler: Error in loading FBS: ", err)
|
||||
|
Reference in New Issue
Block a user