diff --git a/.gitignore b/.gitignore
index 30c1f41..98747e0 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,10 @@
lz4
rclone
rcloner
+exec
+exec-*
+**/exec
+**/exec-*
Go
cloudly
dockfile
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..604c15a
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,16 @@
+
+FROM golang:1.13-alpine as certs
+RUN apk update && apk add --no-cache ca-certificates
+
+FROM busybox:glibc
+RUN mkdir -p /var/log
+WORKDIR /main
+COPY --from=certs /etc/ssl/certs /etc/ssl/certs
+
+COPY . .
+
+ENV GOPATH=""
+ENV MNT="/mnt/"
+ENTRYPOINT ["/main/exec-rproxy3"]
+CMD []
+
diff --git a/testdata/index.html b/testdata/index.html
new file mode 100644
index 0000000..a633b70
--- /dev/null
+++ b/testdata/index.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ Go WebSocket Tutorial
+
+
+ Hello World
+
+
+
+
diff --git a/testdata/ws.go b/testdata/ws.go
new file mode 100644
index 0000000..f9633c0
--- /dev/null
+++ b/testdata/ws.go
@@ -0,0 +1,76 @@
+package main
+
+import (
+ "fmt"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "time"
+
+ "github.com/gorilla/websocket"
+)
+
+func homePage(w http.ResponseWriter, r *http.Request) {
+ b, _ := ioutil.ReadFile("./index.html")
+ fmt.Fprintf(w, "%s", b)
+}
+
+func setupRoutes() {
+ http.HandleFunc("/", homePage)
+ http.HandleFunc("/ws", wsEndpoint)
+}
+
+func main() {
+ fmt.Println("Hello World")
+ setupRoutes()
+ log.Fatal(http.ListenAndServe(":8080", nil))
+}
+
+var upgrader = websocket.Upgrader{
+ ReadBufferSize: 1024,
+ WriteBufferSize: 1024,
+}
+
+func reader(conn *websocket.Conn) {
+ for {
+ // read in a message
+ messageType, p, err := conn.ReadMessage()
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ // print out that message for clarity
+ fmt.Println(string(p))
+
+ if err := conn.WriteMessage(messageType, p); err != nil {
+ log.Println(err)
+ return
+ }
+
+ }
+}
+func wsEndpoint(w http.ResponseWriter, r *http.Request) {
+ upgrader.CheckOrigin = func(r *http.Request) bool { return true }
+
+ // upgrade this connection to a WebSocket
+ // connection
+ ws, err := upgrader.Upgrade(w, r, nil)
+ if err != nil {
+ log.Println(err)
+ }
+
+ log.Println("Client Connected")
+ // listen indefinitely for new messages coming
+ // through on our WebSocket connection
+ go reader(ws)
+ for {
+ log.Println("writing...")
+ err = ws.WriteMessage(1, []byte("Hi Client!"))
+ log.Println("written")
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ time.Sleep(time.Second)
+ }
+}