From 5ab977feb52cea8c01ea08a3100f267e59352b47 Mon Sep 17 00:00:00 2001 From: Paul Lorenz Date: Wed, 10 Mar 2021 20:13:44 -0500 Subject: [PATCH] Don't require listener address, as not every xgress impl needs one --- router/config.go | 4 ---- router/router.go | 28 ++++++++++++++----------- router/xgress_proxy/listener.go | 4 ++++ router/xgress_proxy_udp/listener.go | 4 ++++ router/xgress_transport/listener.go | 4 ++++ router/xgress_transport_udp/listener.go | 4 ++++ 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/router/config.go b/router/config.go index 702296a08..b56ed4439 100644 --- a/router/config.go +++ b/router/config.go @@ -297,10 +297,6 @@ func LoadConfig(path string) (*Config, error) { if !found { return nil, fmt.Errorf("[listener] must provide [binding] (%v)", submap) } - _, found = submap["address"] - if !found { - return nil, fmt.Errorf("[listener] must provide [address] (%v)", submap) - } cfg.Listeners = append(cfg.Listeners, listenerBinding{name: binding, options: submap}) } } diff --git a/router/router.go b/router/router.go index 7eb93aa72..c05a202d0 100644 --- a/router/router.go +++ b/router/router.go @@ -272,19 +272,23 @@ func (self *Router) startXgressListeners() { logrus.Fatalf("error creating xgress listener [%s] (%v)", binding.name, err) } self.xgressListeners = append(self.xgressListeners, listener) - if address, found := binding.options["address"]; found { - err = listener.Listen(address.(string), - handler_xgress.NewBindHandler( - handler_xgress.NewReceiveHandler(self.forwarder), - handler_xgress.NewCloseHandler(self, self.forwarder), - self.forwarder, - ), - ) - if err != nil { - logrus.Fatalf("error listening [%s] (%v)", binding.name, err) - } - logrus.Infof("created xgress listener [%s] at [%s]", binding.name, address) + + var address string + if addressVal, found := binding.options["address"]; found { + address = addressVal.(string) } + + err = listener.Listen(address, + handler_xgress.NewBindHandler( + handler_xgress.NewReceiveHandler(self.forwarder), + handler_xgress.NewCloseHandler(self, self.forwarder), + self.forwarder, + ), + ) + if err != nil { + logrus.Fatalf("error listening [%s] (%v)", binding.name, err) + } + logrus.Infof("created xgress listener [%s] at [%s]", binding.name, address) } } diff --git a/router/xgress_proxy/listener.go b/router/xgress_proxy/listener.go index 50ef89e5b..a9a6dd028 100644 --- a/router/xgress_proxy/listener.go +++ b/router/xgress_proxy/listener.go @@ -17,6 +17,7 @@ package xgress_proxy import ( + "errors" "fmt" "github.com/michaelquigley/pfxlog" "github.com/openziti/fabric/router/xgress" @@ -36,6 +37,9 @@ func newListener(id *identity.TokenId, ctrl xgress.CtrlChannel, options *xgress. } func (listener *listener) Listen(address string, bindHandler xgress.BindHandler) error { + if address == "" { + return errors.New("address must be specified for proxy listeners") + } txAddress, err := transport.ParseAddress(address) if err != nil { return fmt.Errorf("cannot listen on invalid address [%s] (%s)", address, err) diff --git a/router/xgress_proxy_udp/listener.go b/router/xgress_proxy_udp/listener.go index ceb1e93fc..b0828da85 100644 --- a/router/xgress_proxy_udp/listener.go +++ b/router/xgress_proxy_udp/listener.go @@ -21,12 +21,16 @@ import ( "github.com/openziti/fabric/router/xgress" "github.com/openziti/fabric/router/xgress_udp" "github.com/openziti/foundation/util/info" + "github.com/pkg/errors" "github.com/sirupsen/logrus" "net" "time" ) func (l *listener) Listen(address string, bindHandler xgress.BindHandler) error { + if address == "" { + return errors.New("address must be specified for proxy_udp listeners") + } l.address = address l.bindHandler = bindHandler diff --git a/router/xgress_transport/listener.go b/router/xgress_transport/listener.go index b50af2b1f..7036ab9b4 100644 --- a/router/xgress_transport/listener.go +++ b/router/xgress_transport/listener.go @@ -17,6 +17,7 @@ package xgress_transport import ( + "errors" "fmt" "github.com/michaelquigley/pfxlog" "github.com/openziti/fabric/router/xgress" @@ -43,6 +44,9 @@ func newListener(id *identity.TokenId, ctrl xgress.CtrlChannel, options *xgress. } func (listener *listener) Listen(address string, bindHandler xgress.BindHandler) error { + if address == "" { + return errors.New("address must be specified for transport listeners") + } txAddress, err := transport.ParseAddress(address) if err != nil { return fmt.Errorf("cannot listen on invalid address [%s] (%s)", address, err) diff --git a/router/xgress_transport_udp/listener.go b/router/xgress_transport_udp/listener.go index 5878a35b0..20a673fbc 100644 --- a/router/xgress_transport_udp/listener.go +++ b/router/xgress_transport_udp/listener.go @@ -17,6 +17,7 @@ package xgress_transport_udp import ( + "errors" "fmt" "github.com/michaelquigley/pfxlog" "github.com/openziti/fabric/router/xgress" @@ -28,6 +29,9 @@ import ( ) func (l *listener) Listen(address string, bindHandler xgress.BindHandler) error { + if address == "" { + return errors.New("address must be specified for transport_udp listeners") + } l.address = address l.bindHandler = bindHandler