mirror of
https://github.com/lwch/natpass.git
synced 2024-04-21 12:41:54 +00:00
WIP
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -0,0 +1,5 @@
|
||||
var page = {
|
||||
init: function() {
|
||||
}
|
||||
};
|
||||
$(document).ready(page.init);
|
||||
Reference in New Issue
Block a user