diff --git a/.idea/libraries/GOPATH__vncproxy_.xml b/.idea/libraries/GOPATH__vncproxy_.xml
index 6021e21..1236707 100644
--- a/.idea/libraries/GOPATH__vncproxy_.xml
+++ b/.idea/libraries/GOPATH__vncproxy_.xml
@@ -1,35 +1,47 @@
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 399fb43..318f991 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,9 +2,7 @@
-
-
-
+
@@ -26,7 +24,6 @@
-
@@ -35,7 +32,7 @@
-
+
@@ -45,7 +42,7 @@
-
+
@@ -55,7 +52,7 @@
-
+
@@ -65,7 +62,7 @@
-
+
@@ -75,7 +72,7 @@
-
+
@@ -95,7 +92,7 @@
-
+
@@ -105,7 +102,7 @@
-
+
@@ -117,8 +114,8 @@
-
-
+
+
@@ -182,7 +179,6 @@
@@ -227,11 +224,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -286,9 +283,24 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -314,12 +326,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -376,29 +551,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -480,69 +632,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -552,17 +646,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -579,36 +662,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -671,57 +724,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- project
-
-
-
-
-
-
-
@@ -735,24 +743,14 @@
-
-
-
-
-
-
-
-
-
-
+
-
-
+
@@ -761,9 +759,8 @@
-
-
+
@@ -772,9 +769,8 @@
-
-
+
@@ -783,7 +779,6 @@
-
@@ -821,6 +816,7 @@
+
@@ -857,7 +853,7 @@
-
+
@@ -869,24 +865,22 @@
-
+
-
-
+
-
-
+
@@ -896,8 +890,10 @@
+
+
@@ -907,7 +903,7 @@
-
+
@@ -1041,11 +1037,6 @@
-
-
-
-
-
@@ -1096,7 +1087,6 @@
-
@@ -1148,7 +1138,6 @@
-
@@ -1177,56 +1166,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -1235,7 +1180,7 @@
-
+
@@ -1251,7 +1196,7 @@
-
+
@@ -1260,7 +1205,7 @@
-
+
@@ -1268,7 +1213,7 @@
-
+
@@ -1276,7 +1221,7 @@
-
+
@@ -1286,7 +1231,7 @@
-
+
@@ -1294,8 +1239,8 @@
-
-
+
+
diff --git a/encodings/enc-tight.go b/encodings/enc-tight.go
index 02a1c79..e6e0741 100644
--- a/encodings/enc-tight.go
+++ b/encodings/enc-tight.go
@@ -61,22 +61,22 @@ func (t *TightEncoding) Read(pixelFmt *common.PixelFormat, rect *common.Rectangl
compctl, err := r.ReadUint8()
if err != nil {
- logger.Debugf("error in handling tight encoding: %v\n", err)
+ logger.Errorf("error in handling tight encoding: %v", err)
return nil, err
}
- logger.Debugf("bytesPixel= %d, subencoding= %d\n", bytesPixel, compctl)
+ logger.Debugf("bytesPixel= %d, subencoding= %d", bytesPixel, compctl)
//move it to position (remove zlib flush commands)
compType := compctl >> 4 & 0x0F
- logger.Debugf("afterSHL:%d\n", compType)
+ logger.Debugf("afterSHL:%d", compType)
switch compType {
case TightFill:
logger.Debugf("reading fill size=%d\n", bytesPixel)
//read color
_, err := r.ReadBytes(int(bytesPixel))
if err != nil {
- logger.Debugf("error in handling tight encoding: %v\n", err)
+ logger.Errorf("error in handling tight encoding: %v", err)
return nil, err
}
@@ -121,15 +121,15 @@ func handleTightFilters(subencoding uint8, pixelFmt *common.PixelFormat, rect *c
filterid, err = r.ReadUint8()
if err != nil {
- logger.Debugf("error in handling tight encoding, reading filterid: %v\n", err)
+ logger.Errorf("error in handling tight encoding, reading filterid: %v", err)
return
}
- logger.Debugf("read filter: %d\n", filterid)
+ logger.Debugf("handleTightFilters: read filter: %d\n", filterid)
}
bytesPixel := calcTightBytePerPixel(pixelFmt)
- logger.Debugf("filter: %d\n", filterid)
+ logger.Debugf("handleTightFilters: filter: %d\n", filterid)
lengthCurrentbpp := int(bytesPixel) * int(rect.Width) * int(rect.Height)
@@ -137,10 +137,19 @@ func handleTightFilters(subencoding uint8, pixelFmt *common.PixelFormat, rect *c
case TightFilterPalette: //PALETTE_FILTER
colorCount, err := r.ReadUint8()
+ if err != nil {
+ logger.Errorf("handleTightFilters: error in handling tight encoding, reading TightFilterPalette: %v", err)
+ return
+ }
+
paletteSize := colorCount + 1 // add one more
- logger.Debugf("----PALETTE_FILTER: paletteSize=%d bytesPixel=%d\n", paletteSize, bytesPixel)
+ logger.Debugf("handleTightFilters: ----PALETTE_FILTER: paletteSize=%d bytesPixel=%d\n", paletteSize, bytesPixel)
//complete palette
_, err = r.ReadBytes(int(paletteSize) * bytesPixel)
+ if err != nil {
+ logger.Errorf("handleTightFilters: error in handling tight encoding, reading TightFilterPalette.paletteSize: %v", err)
+ return
+ }
var dataLength int
if paletteSize == 2 {
@@ -150,7 +159,7 @@ func handleTightFilters(subencoding uint8, pixelFmt *common.PixelFormat, rect *c
}
_, err = r.ReadTightData(dataLength)
if err != nil {
- logger.Debugf("error in handling tight encoding, Reading Palette: %v\n", err)
+ logger.Errorf("handleTightFilters: error in handling tight encoding, Reading Palette: %v", err)
return
}
@@ -159,20 +168,22 @@ func handleTightFilters(subencoding uint8, pixelFmt *common.PixelFormat, rect *c
logger.Debugf("usegrad: %d\n", filterid)
_, err := r.ReadTightData(lengthCurrentbpp)
if err != nil {
- logger.Debugf("error in handling tight encoding, Reading GRADIENT_FILTER: %v\n", err)
+ logger.Errorf("handleTightFilters: error in handling tight encoding, Reading GRADIENT_FILTER: %v", err)
return
}
case TightFilterCopy: //BASIC_FILTER
- logger.Debugf("----BASIC_FILTER: bytesPixel=%d\n", bytesPixel)
+ //lengthCurrentbpp1 := int(pixelFmt.BPP/8) * int(rect.Width) * int(rect.Height)
+ logger.Debugf("handleTightFilters: ----BASIC_FILTER: bytesPixel=%d", bytesPixel)
+
_, err := r.ReadTightData(lengthCurrentbpp)
if err != nil {
- logger.Debugf("error in handling tight encoding, Reading BASIC_FILTER: %v\n", err)
+ logger.Errorf("handleTightFilters: error in handling tight encoding, Reading BASIC_FILTER: %v", err)
return
}
default:
- logger.Debugf("Bad tight filter id: %d\n", filterid)
+ logger.Errorf("handleTightFilters: Bad tight filter id: %d", filterid)
return
}
diff --git a/logger/logger.go b/logger/logger.go
index d6654a7..90613d6 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -30,8 +30,12 @@ type SimpleLogger struct {
func (sl *SimpleLogger) Debug(v ...interface{}) {
if sl.level <= LogLevelDebug {
- fmt.Print("[Debug] ")
- fmt.Println(v...)
+ arr := []interface{}{"[Debug]"}
+ for _, item := range v {
+ arr = append(arr, item)
+ }
+
+ fmt.Println(arr...)
}
}
func (sl *SimpleLogger) Debugf(format string, v ...interface{}) {
@@ -41,30 +45,39 @@ func (sl *SimpleLogger) Debugf(format string, v ...interface{}) {
}
func (sl *SimpleLogger) Info(v ...interface{}) {
if sl.level <= LogLevelInfo {
- fmt.Print("[Info] ")
- fmt.Println(v...)
+ arr := []interface{}{"[Info ]"}
+ for _, item := range v {
+ arr = append(arr, item)
+ }
+ fmt.Println(arr...)
}
}
func (sl *SimpleLogger) Infof(format string, v ...interface{}) {
if sl.level <= LogLevelInfo {
- fmt.Printf("[Info] "+format+"\n", v...)
+ fmt.Printf("[Info ] "+format+"\n", v...)
}
}
func (sl *SimpleLogger) Warn(v ...interface{}) {
if sl.level <= LogLevelWarn {
- fmt.Print("[Warn] ")
- fmt.Println(v...)
+ arr := []interface{}{"[Warn ]"}
+ for _, item := range v {
+ arr = append(arr, item)
+ }
+ fmt.Println(arr...)
}
}
func (sl *SimpleLogger) Warnf(format string, v ...interface{}) {
if sl.level <= LogLevelWarn {
- fmt.Printf("[Warn] "+format+"\n", v...)
+ fmt.Printf("[Warn ] "+format+"\n", v...)
}
}
func (sl *SimpleLogger) Error(v ...interface{}) {
if sl.level <= LogLevelError {
- fmt.Print("[Error] ")
- fmt.Println(v...)
+ arr := []interface{}{"[Error]"}
+ for _, item := range v {
+ arr = append(arr, item)
+ }
+ fmt.Println(arr...)
}
}
func (sl *SimpleLogger) Errorf(format string, v ...interface{}) {
@@ -74,8 +87,12 @@ func (sl *SimpleLogger) Errorf(format string, v ...interface{}) {
}
func (sl *SimpleLogger) Fatal(v ...interface{}) {
if sl.level <= LogLevelFatal {
- fmt.Print("[Fatal] ")
- fmt.Println(v...)
+ arr := []interface{}{"[Fatal]"}
+ for _, item := range v {
+ arr = append(arr, item)
+ }
+ fmt.Println(arr...)
+
}
}
func (sl *SimpleLogger) Fatalf(format string, v ...interface{}) {
diff --git a/proxy/message-listeners.go b/proxy/message-listeners.go
index a36dfbe..22d4cef 100644
--- a/proxy/message-listeners.go
+++ b/proxy/message-listeners.go
@@ -43,7 +43,7 @@ type ServerUpdater struct {
func (p *ServerUpdater) Consume(seg *common.RfbSegment) error {
- logger.Debugf("WriteTo.Consume (ServerUpdater): got segment type=%s", seg.SegmentType)
+ logger.Debugf("WriteTo.Consume (ServerUpdater): got segment type=%s, object type:%d", seg.SegmentType, seg.UpcomingObjectType)
switch seg.SegmentType {
case common.SegmentMessageSeparator:
case common.SegmentRectSeparator:
@@ -55,6 +55,7 @@ func (p *ServerUpdater) Consume(seg *common.RfbSegment) error {
p.conn.SetPixelFormat(&serverInitMessage.PixelFormat)
case common.SegmentBytes:
+ logger.Debugf("WriteTo.Consume (ServerUpdater SegmentBytes): got bytes len=%d", len(seg.Bytes))
_, err := p.conn.Write(seg.Bytes)
if err != nil {
logger.Errorf("WriteTo.Consume (ServerUpdater SegmentBytes): problem writing to port: %s", err)
diff --git a/proxy/proxy_test.go b/proxy/proxy_test.go
index 434fc36..2eb166a 100644
--- a/proxy/proxy_test.go
+++ b/proxy/proxy_test.go
@@ -6,8 +6,9 @@ func TestProxy(t *testing.T) {
//create default session if required
proxy := &VncProxy{
- wsListeningUrl: "http://localhost:7777/", // empty = not listening on ws
- recordingDir: "/Users/amitbet/vncRec", // empty = no recording
+ wsListeningUrl: "http://localhost:7777/", // empty = not listening on ws
+ recordingDir: "/Users/amitbet/vncRec", // empty = no recording
+ tcpListeningUrl: ":5904",
//recordingDir: "C:\\vncRec", // empty = no recording
targetServersPassword: "Ch_#!T@8", //empty = no auth
SingleSession: &VncSession{
diff --git a/tee-listeners/recorder.go b/tee-listeners/recorder.go
index f6b0ee5..d8d2925 100644
--- a/tee-listeners/recorder.go
+++ b/tee-listeners/recorder.go
@@ -151,6 +151,7 @@ func (r *Recorder) HandleRfbSegment(data *common.RfbSegment) error {
logger.Debugf("Recorder.HandleRfbSegment: writing rect")
//r.writeToDisk()
case common.SegmentBytes:
+ logger.Debug("Recorder.HandleRfbSegment: writing bytes, len:", len(data.Bytes))
if r.buffer.Len()+len(data.Bytes) > r.maxWriteSize-4 {
r.writeToDisk()
}