vncproxy/main.go
2017-07-15 07:52:23 +03:00

106 lines
2.5 KiB
Go

package main
import (
"net"
"time"
"vncproxy/client"
"vncproxy/common"
"vncproxy/encodings"
"vncproxy/logger"
listeners "vncproxy/tee-listeners"
)
func main() {
//nc, err := net.Dial("tcp", "192.168.1.101:5903")
nc, err := net.Dial("tcp", "localhost:5903")
if err != nil {
logger.Errorf("error connecting to vnc server: %s", err)
}
var noauth client.ClientAuthNone
authArr := []client.ClientAuth{&client.PasswordAuth{Password: "Ch_#!T@8"}, &noauth}
//vncSrvMessagesChan := make(chan common.ServerMessage)
//rec := listeners.NewRecorder("c:/Users/betzalel/recording.rbs")
rec := listeners.NewRecorder("/Users/amitbet/vncRec/recording.rbs")
clientConn, err := client.NewClientConn(nc,
&client.ClientConfig{
Auth: authArr,
Exclusive: true,
})
clientConn.Listeners.AddListener(rec)
clientConn.Connect()
if err != nil {
logger.Errorf("error creating client: %s", err)
}
// err = clientConn.FramebufferUpdateRequest(false, 0, 0, 1024, 768)
// if err != nil {
// logger.Errorf("error requesting fb update: %s", err)
// }
encs := []common.Encoding{
&encodings.TightEncoding{},
//&encodings.TightPngEncoding{},
//rre := encodings.RREEncoding{},
//zlib := encodings.ZLibEncoding{},
//zrle := encodings.ZRLEEncoding{},
//&encodings.CopyRectEncoding{},
//coRRE := encodings.CoRREEncoding{},
//hextile := encodings.HextileEncoding{},
&encodings.PseudoEncoding{int32(common.EncJPEGQualityLevelPseudo9)},
}
// file, _ := os.OpenFile("stam.bin", os.O_CREATE|os.O_RDWR, 0755)
// defer file.Close()
//tight.SetOutput(file)
clientConn.SetEncodings(encs)
clientConn.FramebufferUpdateRequest(false, 0, 0, 1280, 800)
// clientConn.SetPixelFormat(&common.PixelFormat{
// BPP: 32,
// Depth: 24,
// BigEndian: 0,
// TrueColor: 1,
// RedMax: 255,
// GreenMax: 255,
// BlueMax: 255,
// RedShift: 16,
// GreenShift: 8,
// BlueShift: 0,
// })
start := getNowMillisec()
go func() {
for {
if getNowMillisec()-start >= 10000 {
break
}
err = clientConn.FramebufferUpdateRequest(true, 0, 0, 1280, 800)
if err != nil {
logger.Errorf("error requesting fb update: %s", err)
}
time.Sleep(250 * time.Millisecond)
}
clientConn.Close()
}()
//go func() {
// for msg := range vncSrvMessagesChan {
// logger.Debugf("message type: %d, content: %v\n", msg.Type(), msg)
// }
for {
time.Sleep(time.Minute)
}
//}()
//clientConn.Close()
}
func getNowMillisec() int {
return int(time.Now().UnixNano() / int64(time.Millisecond))
}