TUN-3106: Pass NamedTunnel config to StartServer
This commit is contained in:
parent
9131e842a5
commit
4d3ebaf984
|
@ -129,7 +129,7 @@ func action(version string, shutdownC, graceShutdownC chan struct{}) cli.ActionF
|
||||||
tags := make(map[string]string)
|
tags := make(map[string]string)
|
||||||
tags["hostname"] = c.String("hostname")
|
tags["hostname"] = c.String("hostname")
|
||||||
raven.SetTagsContext(tags)
|
raven.SetTagsContext(tags)
|
||||||
raven.CapturePanic(func() { err = tunnel.StartServer(c, version, shutdownC, graceShutdownC) }, nil)
|
raven.CapturePanic(func() { err = tunnel.StartServer(c, version, shutdownC, graceShutdownC, nil) }, nil)
|
||||||
exitCode := 0
|
exitCode := 0
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError(err)
|
handleError(err)
|
||||||
|
|
|
@ -207,7 +207,7 @@ func Commands() []*cli.Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
func tunnel(c *cli.Context) error {
|
func tunnel(c *cli.Context) error {
|
||||||
return StartServer(c, version, shutdownC, graceShutdownC)
|
return StartServer(c, version, shutdownC, graceShutdownC, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Init(v string, s, g chan struct{}) {
|
func Init(v string, s, g chan struct{}) {
|
||||||
|
@ -238,7 +238,7 @@ func createLogger(c *cli.Context, isTransport bool) (logger.Service, error) {
|
||||||
return logger.New(loggerOpts...)
|
return logger.New(loggerOpts...)
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartServer(c *cli.Context, version string, shutdownC, graceShutdownC chan struct{}) error {
|
func StartServer(c *cli.Context, version string, shutdownC, graceShutdownC chan struct{}, namedTunnel *origin.NamedTunnelConfig) error {
|
||||||
logger, err := createLogger(c, false)
|
logger, err := createLogger(c, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cliutil.PrintLoggerSetupError("error setting up logger", err)
|
return cliutil.PrintLoggerSetupError("error setting up logger", err)
|
||||||
|
@ -475,7 +475,7 @@ func StartServer(c *cli.Context, version string, shutdownC, graceShutdownC chan
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func() {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
errC <- origin.StartTunnelDaemon(ctx, tunnelConfig, connectedSignal, cloudflaredID, reconnectCh)
|
errC <- origin.StartTunnelDaemon(ctx, tunnelConfig, connectedSignal, cloudflaredID, reconnectCh, namedTunnel)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return waitToShutdown(&wg, errC, shutdownC, graceShutdownC, c.Duration("grace-period"), logger)
|
return waitToShutdown(&wg, errC, shutdownC, graceShutdownC, c.Duration("grace-period"), logger)
|
||||||
|
|
|
@ -18,6 +18,7 @@ import (
|
||||||
"github.com/cloudflare/cloudflared/certutil"
|
"github.com/cloudflare/cloudflared/certutil"
|
||||||
"github.com/cloudflare/cloudflared/cmd/cloudflared/cliutil"
|
"github.com/cloudflare/cloudflared/cmd/cloudflared/cliutil"
|
||||||
"github.com/cloudflare/cloudflared/logger"
|
"github.com/cloudflare/cloudflared/logger"
|
||||||
|
"github.com/cloudflare/cloudflared/origin"
|
||||||
"github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
"github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
||||||
"github.com/cloudflare/cloudflared/tunnelstore"
|
"github.com/cloudflare/cloudflared/tunnelstore"
|
||||||
)
|
)
|
||||||
|
@ -339,5 +340,5 @@ func runTunnel(c *cli.Context) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Debugf("Read credentials for %v", credentials.AccountTag)
|
logger.Debugf("Read credentials for %v", credentials.AccountTag)
|
||||||
panic("TODO: start tunnel supervisor")
|
return StartServer(c, version, shutdownC, graceShutdownC, &origin.NamedTunnelConfig{Auth: *credentials, ID: id})
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,6 +68,8 @@ type Supervisor struct {
|
||||||
connDigest map[uint8][]byte
|
connDigest map[uint8][]byte
|
||||||
|
|
||||||
bufferPool *buffer.Pool
|
bufferPool *buffer.Pool
|
||||||
|
|
||||||
|
namedTunnel *NamedTunnelConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
type resolveResult struct {
|
type resolveResult struct {
|
||||||
|
@ -80,7 +82,7 @@ type tunnelError struct {
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSupervisor(config *TunnelConfig, u uuid.UUID) (*Supervisor, error) {
|
func NewSupervisor(config *TunnelConfig, cloudflaredUUID uuid.UUID, namedTunnel *NamedTunnelConfig) (*Supervisor, error) {
|
||||||
var (
|
var (
|
||||||
edgeIPs *edgediscovery.Edge
|
edgeIPs *edgediscovery.Edge
|
||||||
err error
|
err error
|
||||||
|
@ -94,7 +96,7 @@ func NewSupervisor(config *TunnelConfig, u uuid.UUID) (*Supervisor, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &Supervisor{
|
return &Supervisor{
|
||||||
cloudflaredUUID: u,
|
cloudflaredUUID: cloudflaredUUID,
|
||||||
config: config,
|
config: config,
|
||||||
edgeIPs: edgeIPs,
|
edgeIPs: edgeIPs,
|
||||||
tunnelErrors: make(chan tunnelError),
|
tunnelErrors: make(chan tunnelError),
|
||||||
|
@ -102,6 +104,7 @@ func NewSupervisor(config *TunnelConfig, u uuid.UUID) (*Supervisor, error) {
|
||||||
logger: config.Logger,
|
logger: config.Logger,
|
||||||
connDigest: make(map[uint8][]byte),
|
connDigest: make(map[uint8][]byte),
|
||||||
bufferPool: buffer.NewPool(512 * 1024),
|
bufferPool: buffer.NewPool(512 * 1024),
|
||||||
|
namedTunnel: namedTunnel,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ func TestRefreshAuthBackoff(t *testing.T) {
|
||||||
return time.After(d)
|
return time.After(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
s, err := NewSupervisor(testConfig(logger), uuid.New())
|
s, err := NewSupervisor(testConfig(logger), uuid.New(), nil)
|
||||||
if !assert.NoError(t, err) {
|
if !assert.NoError(t, err) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ func TestRefreshAuthSuccess(t *testing.T) {
|
||||||
return time.After(d)
|
return time.After(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
s, err := NewSupervisor(testConfig(logger), uuid.New())
|
s, err := NewSupervisor(testConfig(logger), uuid.New(), nil)
|
||||||
if !assert.NoError(t, err) {
|
if !assert.NoError(t, err) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ func TestRefreshAuthUnknown(t *testing.T) {
|
||||||
return time.After(d)
|
return time.After(d)
|
||||||
}
|
}
|
||||||
|
|
||||||
s, err := NewSupervisor(testConfig(logger), uuid.New())
|
s, err := NewSupervisor(testConfig(logger), uuid.New(), nil)
|
||||||
if !assert.NoError(t, err) {
|
if !assert.NoError(t, err) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ func TestRefreshAuthUnknown(t *testing.T) {
|
||||||
func TestRefreshAuthFail(t *testing.T) {
|
func TestRefreshAuthFail(t *testing.T) {
|
||||||
logger := logger.NewOutputWriter(logger.NewMockWriteManager())
|
logger := logger.NewOutputWriter(logger.NewMockWriteManager())
|
||||||
|
|
||||||
s, err := NewSupervisor(testConfig(logger), uuid.New())
|
s, err := NewSupervisor(testConfig(logger), uuid.New(), nil)
|
||||||
if !assert.NoError(t, err) {
|
if !assert.NoError(t, err) {
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import (
|
||||||
"github.com/cloudflare/cloudflared/logger"
|
"github.com/cloudflare/cloudflared/logger"
|
||||||
"github.com/cloudflare/cloudflared/signal"
|
"github.com/cloudflare/cloudflared/signal"
|
||||||
"github.com/cloudflare/cloudflared/tunnelrpc"
|
"github.com/cloudflare/cloudflared/tunnelrpc"
|
||||||
|
"github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
||||||
tunnelpogs "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
tunnelpogs "github.com/cloudflare/cloudflared/tunnelrpc/pogs"
|
||||||
"github.com/cloudflare/cloudflared/validation"
|
"github.com/cloudflare/cloudflared/validation"
|
||||||
"github.com/cloudflare/cloudflared/websocket"
|
"github.com/cloudflare/cloudflared/websocket"
|
||||||
|
@ -178,8 +179,13 @@ func (c *TunnelConfig) SupportedFeatures() []string {
|
||||||
return basic
|
return basic
|
||||||
}
|
}
|
||||||
|
|
||||||
func StartTunnelDaemon(ctx context.Context, config *TunnelConfig, connectedSignal *signal.Signal, cloudflaredID uuid.UUID, reconnectCh chan ReconnectSignal) error {
|
type NamedTunnelConfig struct {
|
||||||
s, err := NewSupervisor(config, cloudflaredID)
|
Auth pogs.TunnelAuth
|
||||||
|
ID string
|
||||||
|
}
|
||||||
|
|
||||||
|
func StartTunnelDaemon(ctx context.Context, config *TunnelConfig, connectedSignal *signal.Signal, cloudflaredID uuid.UUID, reconnectCh chan ReconnectSignal, namedTunnel *NamedTunnelConfig) error {
|
||||||
|
s, err := NewSupervisor(config, cloudflaredID, namedTunnel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -192,7 +198,7 @@ func ServeTunnelLoop(ctx context.Context,
|
||||||
addr *net.TCPAddr,
|
addr *net.TCPAddr,
|
||||||
connectionID uint8,
|
connectionID uint8,
|
||||||
connectedSignal *signal.Signal,
|
connectedSignal *signal.Signal,
|
||||||
u uuid.UUID,
|
cloudflaredUUID uuid.UUID,
|
||||||
bufferPool *buffer.Pool,
|
bufferPool *buffer.Pool,
|
||||||
reconnectCh chan ReconnectSignal,
|
reconnectCh chan ReconnectSignal,
|
||||||
) error {
|
) error {
|
||||||
|
@ -216,7 +222,7 @@ func ServeTunnelLoop(ctx context.Context,
|
||||||
addr, connectionID,
|
addr, connectionID,
|
||||||
connectedFuse,
|
connectedFuse,
|
||||||
&backoff,
|
&backoff,
|
||||||
u,
|
cloudflaredUUID,
|
||||||
bufferPool,
|
bufferPool,
|
||||||
reconnectCh,
|
reconnectCh,
|
||||||
)
|
)
|
||||||
|
@ -240,7 +246,7 @@ func ServeTunnel(
|
||||||
connectionID uint8,
|
connectionID uint8,
|
||||||
connectedFuse *h2mux.BooleanFuse,
|
connectedFuse *h2mux.BooleanFuse,
|
||||||
backoff *BackoffHandler,
|
backoff *BackoffHandler,
|
||||||
u uuid.UUID,
|
cloudflaredUUID uuid.UUID,
|
||||||
bufferPool *buffer.Pool,
|
bufferPool *buffer.Pool,
|
||||||
reconnectCh chan ReconnectSignal,
|
reconnectCh chan ReconnectSignal,
|
||||||
) (err error, recoverable bool) {
|
) (err error, recoverable bool) {
|
||||||
|
@ -300,7 +306,7 @@ func ServeTunnel(
|
||||||
connDigest = digest
|
connDigest = digest
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ReconnectTunnel(serveCtx, token, eventDigest, connDigest, handler.muxer, config, logger, connectionID, originLocalIP, u, credentialManager)
|
return ReconnectTunnel(serveCtx, token, eventDigest, connDigest, handler.muxer, config, logger, connectionID, originLocalIP, cloudflaredUUID, credentialManager)
|
||||||
}
|
}
|
||||||
// log errors and proceed to RegisterTunnel
|
// log errors and proceed to RegisterTunnel
|
||||||
if tokenErr != nil {
|
if tokenErr != nil {
|
||||||
|
@ -310,7 +316,7 @@ func ServeTunnel(
|
||||||
logger.Errorf("Couldn't get event digest: %s", eventDigestErr)
|
logger.Errorf("Couldn't get event digest: %s", eventDigestErr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return RegisterTunnel(serveCtx, credentialManager, handler.muxer, config, logger, connectionID, originLocalIP, u)
|
return RegisterTunnel(serveCtx, credentialManager, handler.muxer, config, logger, connectionID, originLocalIP, cloudflaredUUID)
|
||||||
})
|
})
|
||||||
|
|
||||||
errGroup.Go(func() error {
|
errGroup.Go(func() error {
|
||||||
|
|
Loading…
Reference in New Issue