mirror of
https://github.com/netbirdio/netbird.git
synced 2025-08-18 19:09:09 +02:00
Add exposed address
This commit is contained in:
@@ -12,16 +12,24 @@ import (
|
||||
)
|
||||
|
||||
type Relay struct {
|
||||
store *Store
|
||||
store *Store
|
||||
instaceURL string // domain:port
|
||||
|
||||
closed bool
|
||||
closeMu sync.RWMutex
|
||||
}
|
||||
|
||||
func NewRelay() *Relay {
|
||||
return &Relay{
|
||||
func NewRelay(exposedAddress string, tlsSupport bool) *Relay {
|
||||
r := &Relay{
|
||||
store: NewStore(),
|
||||
}
|
||||
|
||||
if tlsSupport {
|
||||
r.instaceURL = fmt.Sprintf("rels://%s", exposedAddress)
|
||||
} else {
|
||||
r.instaceURL = fmt.Sprintf("rel://%s", exposedAddress)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *Relay) Accept(conn net.Conn) {
|
||||
@@ -31,7 +39,7 @@ func (r *Relay) Accept(conn net.Conn) {
|
||||
return
|
||||
}
|
||||
|
||||
peerID, err := handShake(conn)
|
||||
peerID, err := r.handShake(conn)
|
||||
if err != nil {
|
||||
log.Errorf("failed to handshake with %s: %s", conn.RemoteAddr(), err)
|
||||
cErr := conn.Close()
|
||||
@@ -68,7 +76,7 @@ func (r *Relay) Close(ctx context.Context) {
|
||||
r.closeMu.Unlock()
|
||||
}
|
||||
|
||||
func handShake(conn net.Conn) ([]byte, error) {
|
||||
func (r *Relay) handShake(conn net.Conn) ([]byte, error) {
|
||||
buf := make([]byte, messages.MaxHandshakeSize)
|
||||
n, err := conn.Read(buf)
|
||||
if err != nil {
|
||||
@@ -79,18 +87,20 @@ func handShake(conn net.Conn) ([]byte, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if msgType != messages.MsgTypeHello {
|
||||
tErr := fmt.Errorf("invalid message type")
|
||||
log.Errorf("failed to handshake: %s", tErr)
|
||||
return nil, tErr
|
||||
}
|
||||
|
||||
peerID, err := messages.UnmarshalHelloMsg(buf[:n])
|
||||
if err != nil {
|
||||
log.Errorf("failed to handshake: %s", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
msg := messages.MarshalHelloResponse()
|
||||
msg, _ := messages.MarshalHelloResponse(r.instaceURL)
|
||||
_, err = conn.Write(msg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@@ -14,7 +14,7 @@ import (
|
||||
"github.com/netbirdio/netbird/relay/server/listener/ws"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
type ListenerConfig struct {
|
||||
Address string
|
||||
TLSConfig *tls.Config
|
||||
}
|
||||
@@ -25,13 +25,13 @@ type Server struct {
|
||||
wSListener listener.Listener
|
||||
}
|
||||
|
||||
func NewServer() *Server {
|
||||
func NewServer(exposedAddress string, tlsSupport bool) *Server {
|
||||
return &Server{
|
||||
relay: NewRelay(),
|
||||
relay: NewRelay(exposedAddress, tlsSupport),
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Server) Listen(cfg Config) error {
|
||||
func (r *Server) Listen(cfg ListenerConfig) error {
|
||||
wg := sync.WaitGroup{}
|
||||
wg.Add(2)
|
||||
|
||||
|
Reference in New Issue
Block a user