mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-14 02:41:34 +01:00
0c039274a4
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
32 lines
835 B
Go
32 lines
835 B
Go
package messages
|
|
|
|
import (
|
|
"crypto/sha256"
|
|
"encoding/base64"
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
prefixLength = 4
|
|
IDSize = prefixLength + sha256.Size
|
|
)
|
|
|
|
var (
|
|
prefix = []byte("sha-") // 4 bytes
|
|
)
|
|
|
|
// HashID generates a sha256 hash from the peerID and returns the hash and the human-readable string
|
|
func HashID(peerID string) ([]byte, string) {
|
|
idHash := sha256.Sum256([]byte(peerID))
|
|
idHashString := string(prefix) + base64.StdEncoding.EncodeToString(idHash[:])
|
|
var prefixedHash []byte
|
|
prefixedHash = append(prefixedHash, prefix...)
|
|
prefixedHash = append(prefixedHash, idHash[:]...)
|
|
return prefixedHash, idHashString
|
|
}
|
|
|
|
// HashIDToString converts a hash to a human-readable string
|
|
func HashIDToString(idHash []byte) string {
|
|
return fmt.Sprintf("%s%s", idHash[:prefixLength], base64.StdEncoding.EncodeToString(idHash[prefixLength:]))
|
|
}
|