initiate pake

This commit is contained in:
Zack Scholl 2019-11-17 16:23:31 -08:00
parent 0753246a4b
commit 0b302b3f7c
2 changed files with 72 additions and 4 deletions

View File

@ -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');

View File

@ -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
}