diff --git a/html/index.html b/html/index.html
index a9426ca..47935ef 100644
--- a/html/index.html
+++ b/html/index.html
@@ -25,8 +25,20 @@
}
}
+ var croc = {
+ "pake": "",
+ };
+ var sharedPassphrase = "pass123"
+ console.log(sharedPassphrase)
+
const socketMessageListener = (event) => {
console.log(event);
+ if (event.data == "initiated") {
+ socket.send(JSON.stringify({ "m": "room", "ps": sharedPassphrase }))
+ } else if (event.data == "initpake") {
+ croc.pake = pakeInit(sharedPassphrase, "1");
+ socket.send(JSON.stringify({ "m": "initpake", "ps": croc.pake }))
+ }
};
const socketOpenListener = (event) => {
log('connected to websockets');
diff --git a/src/webrelay/webrelay.go b/src/webrelay/webrelay.go
index 12222ad..649799b 100644
--- a/src/webrelay/webrelay.go
+++ b/src/webrelay/webrelay.go
@@ -2,9 +2,14 @@ package webrelay
import (
"bytes"
+ "encoding/json"
"net/http"
+ "strings"
"github.com/gorilla/websocket"
+ "github.com/schollz/croc/v6/src/comm"
+ "github.com/schollz/croc/v6/src/models"
+ "github.com/schollz/croc/v6/src/tcp"
log "github.com/schollz/logger"
)
@@ -44,17 +49,68 @@ func handlews(w http.ResponseWriter, r *http.Request) {
return
}
-func receive(c *websocket.Conn) (err error) {
- c.WriteMessage(websocket.TextMessage, []byte("ok"))
+type Bundle struct {
+ Message string `json:"m,omitempty"`
+ PayloadString string `json:"ps,omitempty"`
+ PayloadBytes []byte `json:"pb,omitempty"`
+}
+
+func receive(conn *websocket.Conn) (err error) {
+ conn.WriteMessage(websocket.TextMessage, []byte("initiated"))
+
+ var com *comm.Comm
+ var banner, externalIP, connectPort string
for {
var message []byte
- _, message, err = c.ReadMessage()
+ _, message, err = conn.ReadMessage()
if err != nil {
log.Debug("read:", err)
return
}
- log.Debugf("recv: %s", message)
+ var bu Bundle
+ errBundle := json.Unmarshal(message, &bu)
+ if errBundle == nil {
+ if bu.Message == "room" {
+ com, banner, externalIP, err = tcp.ConnectToTCPServer(models.DEFAULT_RELAY, bu.PayloadString)
+ if err != nil {
+ log.Error(err)
+ return
+ }
+ log.Debugf("comm: %+v", com)
+ log.Debugf("banner: %+v", banner)
+ log.Debugf("externalIP: %+v", externalIP)
+ log.Debugf("err: %+v", err)
+ err = com.Send([]byte("ips?"))
+ if err != nil {
+ log.Error(err)
+ return
+ }
+ var data []byte
+ data, err = com.Receive()
+ if err != nil {
+ log.Error(err)
+ return
+ }
+ log.Debugf("ips data: %s", data)
+ err = com.Send([]byte("handshake"))
+ if err != nil {
+ log.Error(err)
+ return
+ }
+ connectPort = strings.Split(banner, ",")[0]
+ log.Debugf("connecting on %s", connectPort)
+ err = conn.WriteMessage(websocket.TextMessage, []byte("initpake"))
+ if err != nil {
+ log.Error(err)
+ return
+ }
+ } else if bu.Message == "initpake" {
+ log.Debug("got init pake data")
+
+ }
+
+ }
}
return
}