mirror of
https://github.com/netbirdio/netbird.git
synced 2024-12-14 19:00:50 +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
31 lines
566 B
Go
31 lines
566 B
Go
package address
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/gob"
|
|
"fmt"
|
|
)
|
|
|
|
type Address struct {
|
|
URL string
|
|
}
|
|
|
|
func (addr *Address) Marshal() ([]byte, error) {
|
|
var buf bytes.Buffer
|
|
enc := gob.NewEncoder(&buf)
|
|
if err := enc.Encode(addr); err != nil {
|
|
return nil, fmt.Errorf("encode Address: %w", err)
|
|
}
|
|
return buf.Bytes(), nil
|
|
}
|
|
|
|
func Unmarshal(data []byte) (*Address, error) {
|
|
var addr Address
|
|
buf := bytes.NewBuffer(data)
|
|
dec := gob.NewDecoder(buf)
|
|
if err := dec.Decode(&addr); err != nil {
|
|
return nil, fmt.Errorf("decode Address: %w", err)
|
|
}
|
|
return &addr, nil
|
|
}
|