This commit is contained in:
lwch
2021-11-01 15:34:01 +08:00
parent caa42e3221
commit 2b6a5d2ce2
4 changed files with 55 additions and 2 deletions
+35 -2
View File
@@ -1,9 +1,18 @@
package vnc
import (
"bytes"
"errors"
"image"
"image/draw"
"image/jpeg"
"natpass/code/client/pool"
"natpass/code/network"
"net/http"
"strings"
"github.com/lwch/logging"
"github.com/lwch/runtime"
)
func (v *VNC) WS(pool *pool.Pool, w http.ResponseWriter, r *http.Request) {
@@ -14,9 +23,33 @@ func (v *VNC) WS(pool *pool.Pool, w http.ResponseWriter, r *http.Request) {
return
}
ch := conn.ChanRead(id)
defer conn.SendDisconnect(v.link.target, v.link.targetIdx, v.link.id)
for {
msg := <-ch
// logging.Info("%s", msg.String())
_ = msg
switch msg.GetXType() {
case network.Msg_vnc_image:
data, err := decodeImage(msg.GetVimg())
runtime.Assert(err)
logging.Info("%d", len(data))
}
}
}
func decodeImage(data *network.VncImage) ([]byte, error) {
switch data.GetEncode() {
case network.VncImage_raw:
return data.GetData(), nil
case network.VncImage_jpeg:
img, err := jpeg.Decode(bytes.NewReader(data.GetData()))
if err != nil {
return nil, err
}
rect := img.Bounds()
raw := image.NewRGBA(rect)
draw.Draw(raw, rect, img, rect.Min, draw.Src)
return raw.Pix, nil
case network.VncImage_png:
// TODO
}
return nil, errors.New("unsupported")
}
View File
+15
View File
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>vnc - [{{.Name}}]</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="/jquery/jquery-3.6.0.min.js"></script>
<link rel="stylesheet" href="/index.css" />
<script src="/index.js"></script>
</head>
<body>
<canvas id="vnc"></canvas>
</body>
</html>
+5
View File
@@ -0,0 +1,5 @@
var page = {
init: function() {
}
};
$(document).ready(page.init);