fixed passing server init resolution in proxy code

This commit is contained in:
amit bezalel
2017-07-20 16:37:19 +03:00
parent 2d87ae5773
commit 952cd69365
6 changed files with 295 additions and 365 deletions

View File

@@ -36,3 +36,41 @@ func (cc *ClientUpdater) Consume(seg *common.RfbSegment) error {
}
return nil
}
type ServerUpdater struct {
conn *server.ServerConn
}
func (p *ServerUpdater) Consume(seg *common.RfbSegment) error {
logger.Debugf("WriteTo.Consume (ServerUpdater): got segment type=%s", seg.SegmentType)
switch seg.SegmentType {
case common.SegmentMessageSeparator:
case common.SegmentRectSeparator:
case common.SegmentServerInitMessage:
serverInitMessage := seg.Message.(*common.ServerInit)
p.conn.SetHeight(serverInitMessage.FBHeight)
p.conn.SetWidth(serverInitMessage.FBWidth)
p.conn.SetDesktopName(string(serverInitMessage.NameText))
p.conn.SetPixelFormat(&serverInitMessage.PixelFormat)
case common.SegmentBytes:
_, err := p.conn.Write(seg.Bytes)
if err != nil {
logger.Errorf("WriteTo.Consume (ServerUpdater SegmentBytes): problem writing to port: %s", err)
}
return err
case common.SegmentFullyParsedClientMessage:
clientMsg := seg.Message.(common.ClientMessage)
logger.Debugf("WriteTo.Consume (ServerUpdater): got ClientMessage type=%s", clientMsg.Type())
err := clientMsg.Write(p.conn)
if err != nil {
logger.Errorf("WriteTo.Consume (ServerUpdater SegmentFullyParsedClientMessage): problem writing to port: %s", err)
}
return err
default:
//return errors.New("WriteTo.Consume: undefined RfbSegment type")
}
return nil
}

View File

@@ -100,8 +100,11 @@ func (vp *VncProxy) newServerConnHandler(cfg *server.ServerConfig, sconn *server
// gets the bytes from the actual vnc server on the env (client part of the proxy)
// and writes them through the server socket to the vnc-client
serverMsgRepeater := &listeners.WriteTo{sconn, "vnc-client-bound"}
cconn.Listeners.AddListener(serverMsgRepeater)
serverUpdater := &ServerUpdater{sconn}
cconn.Listeners.AddListener(serverUpdater)
// // serverMsgRepeater := &listeners.WriteTo{sconn, "vnc-client-bound"}
// // cconn.Listeners.AddListener(serverMsgRepeater)
// gets the messages from the server part (from vnc-client),
// and write through the client to the actual vnc-server