From 8d6ba794085119ee2763d015e2d9d4fbfb716d90 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 1 Dec 2025 16:19:57 -0500 Subject: [PATCH] Send public key --- relay/relay.go | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/relay/relay.go b/relay/relay.go index e74ed87..4f2483d 100644 --- a/relay/relay.go +++ b/relay/relay.go @@ -24,20 +24,22 @@ type EncryptedHolePunchMessage struct { } type HolePunchMessage struct { - OlmID string `json:"olmId"` - NewtID string `json:"newtId"` - Token string `json:"token"` + OlmID string `json:"olmId"` + NewtID string `json:"newtId"` + Token string `json:"token"` + PublicKey string `json:"publicKey"` } type ClientEndpoint struct { - OlmID string `json:"olmId"` - NewtID string `json:"newtId"` - Token string `json:"token"` - IP string `json:"ip"` - Port int `json:"port"` - Timestamp int64 `json:"timestamp"` - ReachableAt string `json:"reachableAt"` - PublicKey string `json:"publicKey"` + OlmID string `json:"olmId"` + NewtID string `json:"newtId"` + Token string `json:"token"` + IP string `json:"ip"` + Port int `json:"port"` + Timestamp int64 `json:"timestamp"` + ReachableAt string `json:"reachableAt"` + ExitNodePublicKey string `json:"exitNodePublicKey"` + ClientPublicKey string `json:"publicKey"` } // Updated to support multiple destination peers @@ -236,14 +238,15 @@ func (s *UDPProxyServer) packetWorker() { } endpoint := ClientEndpoint{ - NewtID: msg.NewtID, - OlmID: msg.OlmID, - Token: msg.Token, - IP: packet.remoteAddr.IP.String(), - Port: packet.remoteAddr.Port, - Timestamp: time.Now().Unix(), - ReachableAt: s.ReachableAt, - PublicKey: s.privateKey.PublicKey().String(), + NewtID: msg.NewtID, + OlmID: msg.OlmID, + Token: msg.Token, + IP: packet.remoteAddr.IP.String(), + Port: packet.remoteAddr.Port, + Timestamp: time.Now().Unix(), + ReachableAt: s.ReachableAt, + ExitNodePublicKey: s.privateKey.PublicKey().String(), + ClientPublicKey: msg.PublicKey, } logger.Debug("Created endpoint from packet remoteAddr %s: IP=%s, Port=%d", packet.remoteAddr.String(), endpoint.IP, endpoint.Port) s.notifyServer(endpoint)