mirror of
https://github.com/netbirdio/netbird.git
synced 2025-02-17 18:51:21 +01:00
This update adds new relay integration for NetBird clients. The new relay is based on web sockets and listens on a single port. - Adds new relay implementation with websocket with single port relaying mechanism - refactor peer connection logic, allowing upgrade and downgrade from/to P2P connection - peer connections are faster since it connects first to relay and then upgrades to P2P - maintains compatibility with old clients by not using the new relay - updates infrastructure scripts with new relay service
52 lines
842 B
Go
52 lines
842 B
Go
package auth
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/gob"
|
|
"fmt"
|
|
)
|
|
|
|
type Algorithm int
|
|
|
|
const (
|
|
AlgoUnknown Algorithm = iota
|
|
AlgoHMACSHA256
|
|
AlgoHMACSHA512
|
|
)
|
|
|
|
func (a Algorithm) String() string {
|
|
switch a {
|
|
case AlgoHMACSHA256:
|
|
return "HMAC-SHA256"
|
|
case AlgoHMACSHA512:
|
|
return "HMAC-SHA512"
|
|
default:
|
|
return "Unknown"
|
|
}
|
|
}
|
|
|
|
type Msg struct {
|
|
AuthAlgorithm Algorithm
|
|
AdditionalData []byte
|
|
}
|
|
|
|
func (msg *Msg) Marshal() ([]byte, error) {
|
|
var buf bytes.Buffer
|
|
enc := gob.NewEncoder(&buf)
|
|
if err := enc.Encode(msg); err != nil {
|
|
return nil, fmt.Errorf("encode Msg: %w", err)
|
|
}
|
|
return buf.Bytes(), nil
|
|
}
|
|
|
|
func UnmarshalMsg(data []byte) (*Msg, error) {
|
|
var msg *Msg
|
|
|
|
buf := bytes.NewBuffer(data)
|
|
dec := gob.NewDecoder(buf)
|
|
if err := dec.Decode(&msg); err != nil {
|
|
return nil, fmt.Errorf("decode Msg: %w", err)
|
|
}
|
|
return msg, nil
|
|
}
|