mirror of
https://github.com/netbirdio/netbird.git
synced 2025-06-21 18:22:37 +02:00
Fix token sending
This commit is contained in:
parent
820e2feec9
commit
d1b6387803
@ -249,7 +249,9 @@ func (c *ConnectClient) run(
|
|||||||
relayURL, token := parseRelayInfo(loginResp)
|
relayURL, token := parseRelayInfo(loginResp)
|
||||||
relayManager := relayClient.NewManager(engineCtx, relayURL, myPrivateKey.PublicKey().String())
|
relayManager := relayClient.NewManager(engineCtx, relayURL, myPrivateKey.PublicKey().String())
|
||||||
if relayURL != "" {
|
if relayURL != "" {
|
||||||
relayManager.UpdateToken(token)
|
if token != nil {
|
||||||
|
relayManager.UpdateToken(token)
|
||||||
|
}
|
||||||
if err = relayManager.Serve(); err != nil {
|
if err = relayManager.Serve(); err != nil {
|
||||||
log.Error(err)
|
log.Error(err)
|
||||||
return wrapErr(err)
|
return wrapErr(err)
|
||||||
@ -311,15 +313,18 @@ func (c *ConnectClient) run(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseRelayInfo(resp *mgmProto.LoginResponse) (string, hmac.Token) {
|
func parseRelayInfo(resp *mgmProto.LoginResponse) (string, *hmac.Token) {
|
||||||
// todo remove this
|
// todo remove this
|
||||||
if ra := peer.ForcedRelayAddress(); ra != "" {
|
ra := peer.ForcedRelayAddress()
|
||||||
return ra, hmac.Token{}
|
/*
|
||||||
}
|
if ra := peer.ForcedRelayAddress(); ra != "" {
|
||||||
|
return ra, nil
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
msg := resp.GetWiretrusteeConfig().GetRelay()
|
msg := resp.GetWiretrusteeConfig().GetRelay()
|
||||||
if msg == nil {
|
if msg == nil {
|
||||||
return "", hmac.Token{}
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var url string
|
var url string
|
||||||
@ -327,11 +332,14 @@ func parseRelayInfo(resp *mgmProto.LoginResponse) (string, hmac.Token) {
|
|||||||
url = msg.GetUrls()[0]
|
url = msg.GetUrls()[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
token := hmac.Token{
|
token := &hmac.Token{
|
||||||
Payload: msg.GetTokenPayload(),
|
Payload: msg.GetTokenPayload(),
|
||||||
Signature: msg.GetTokenSignature(),
|
Signature: msg.GetTokenSignature(),
|
||||||
}
|
}
|
||||||
return url, token
|
|
||||||
|
log.Tracef("Relay URL: %s", url)
|
||||||
|
|
||||||
|
return ra, token
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ConnectClient) Engine() *Engine {
|
func (c *ConnectClient) Engine() *Engine {
|
||||||
|
@ -502,7 +502,7 @@ func (e *Engine) handleSync(update *mgmProto.SyncResponse) error {
|
|||||||
|
|
||||||
relayMsg := wCfg.GetRelay()
|
relayMsg := wCfg.GetRelay()
|
||||||
if relayMsg != nil {
|
if relayMsg != nil {
|
||||||
c := auth.Token{
|
c := &auth.Token{
|
||||||
Payload: relayMsg.GetTokenPayload(),
|
Payload: relayMsg.GetTokenPayload(),
|
||||||
Signature: relayMsg.GetTokenSignature(),
|
Signature: relayMsg.GetTokenSignature(),
|
||||||
}
|
}
|
||||||
|
@ -2,23 +2,33 @@ package hmac
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TokenStore is a simple in-memory store for token
|
// TokenStore is a simple in-memory store for token
|
||||||
// With this can update the token in thread safe way
|
// With this can update the token in thread safe way
|
||||||
type TokenStore struct {
|
type TokenStore struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
token Token
|
token []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *TokenStore) UpdateToken(token Token) {
|
func (a *TokenStore) UpdateToken(token *Token) {
|
||||||
a.mu.Lock()
|
a.mu.Lock()
|
||||||
defer a.mu.Unlock()
|
defer a.mu.Unlock()
|
||||||
a.token = token
|
if token == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
t, err := marshalToken(*token)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("failed to marshal token: %s", err)
|
||||||
|
}
|
||||||
|
a.token = t
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *TokenStore) Token() ([]byte, error) {
|
func (a *TokenStore) TokenBinary() []byte {
|
||||||
a.mu.Lock()
|
a.mu.Lock()
|
||||||
defer a.mu.Unlock()
|
defer a.mu.Unlock()
|
||||||
return marshalToken(a.token)
|
return a.token
|
||||||
}
|
}
|
||||||
|
@ -238,12 +238,9 @@ func (c *Client) connect() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *Client) handShake() error {
|
func (c *Client) handShake() error {
|
||||||
t, err := c.authTokenStore.Token()
|
tb := c.authTokenStore.TokenBinary()
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
msg, err := messages.MarshalHelloMsg(c.hashedID, t)
|
msg, err := messages.MarshalHelloMsg(c.hashedID, tb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("failed to marshal hello message: %s", err)
|
log.Errorf("failed to marshal hello message: %s", err)
|
||||||
return err
|
return err
|
||||||
|
@ -265,6 +265,6 @@ func (m *Manager) notifyOnDisconnectListeners(serverAddress string) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) UpdateToken(token relayAuth.Token) {
|
func (m *Manager) UpdateToken(token *relayAuth.Token) {
|
||||||
m.tokenStore.UpdateToken(token)
|
m.tokenStore.UpdateToken(token)
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ const (
|
|||||||
headerSizeTransport = sizeOfMsgType + IDSize // 1 byte for msg type, IDSize for peerID
|
headerSizeTransport = sizeOfMsgType + IDSize // 1 byte for msg type, IDSize for peerID
|
||||||
headerSizeHello = sizeOfMsgType + sizeOfMagicBye + IDSize // 1 byte for msg type, 4 byte for magic header, IDSize for peerID
|
headerSizeHello = sizeOfMsgType + sizeOfMagicBye + IDSize // 1 byte for msg type, 4 byte for magic header, IDSize for peerID
|
||||||
|
|
||||||
MaxHandshakeSize = 90
|
MaxHandshakeSize = 8192
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user