diff --git a/code/client/tunnel/vnc/core/capture_windows.go b/code/client/tunnel/vnc/core/capture_windows.go index 57dded6..edb3ef0 100644 --- a/code/client/tunnel/vnc/core/capture_windows.go +++ b/code/client/tunnel/vnc/core/capture_windows.go @@ -13,7 +13,7 @@ import ( func (worker *Worker) runCapture(conn *websocket.Conn) { err := worker.capture() if err != nil { - logging.Error(err.Error()) + logging.Error("capture: %v", err.Error()) captureError(conn, err.Error()) return } diff --git a/code/client/tunnel/vnc/h_ws.go b/code/client/tunnel/vnc/h_ws.go new file mode 100644 index 0000000..23626fc --- /dev/null +++ b/code/client/tunnel/vnc/h_ws.go @@ -0,0 +1,23 @@ +package vnc + +import ( + "natpass/code/client/pool" + "net/http" + "strings" + + "github.com/lwch/logging" +) + +func (v *VNC) WS(pool *pool.Pool, w http.ResponseWriter, r *http.Request) { + id := strings.TrimPrefix(r.URL.Path, "/ws/") + conn := pool.Get(id) + if conn == nil { + http.NotFound(w, r) + return + } + ch := conn.ChanRead(id) + for { + msg := <-ch + logging.Info("%s", msg.String()) + } +} diff --git a/code/client/tunnel/vnc/vnc.go b/code/client/tunnel/vnc/vnc.go index 5bfd3ed..f7b0a3b 100644 --- a/code/client/tunnel/vnc/vnc.go +++ b/code/client/tunnel/vnc/vnc.go @@ -94,6 +94,7 @@ func (v *VNC) Handle(pl *pool.Pool) { } mux := http.NewServeMux() mux.HandleFunc("/new", pf(v.New)) + mux.HandleFunc("/ws/", pf(v.WS)) mux.HandleFunc("/", v.Render) svr := &http.Server{ Addr: fmt.Sprintf("%s:%d", v.cfg.LocalAddr, v.cfg.LocalPort),