@@ -10,13 +10,13 @@ import (
1010 "strings"
1111 "time"
1212
13- "github.com/google/uuid"
1413 "github.com/pkg/errors"
1514 "github.com/rs/zerolog"
1615 "github.com/urfave/cli/v2"
1716 "github.com/urfave/cli/v2/altsrc"
1817 "golang.org/x/term"
1918
19+ "github.com/cloudflare/cloudflared/client"
2020 "github.com/cloudflare/cloudflared/cmd/cloudflared/cliutil"
2121 "github.com/cloudflare/cloudflared/cmd/cloudflared/flags"
2222 "github.com/cloudflare/cloudflared/config"
@@ -125,27 +125,29 @@ func prepareTunnelConfig(
125125 observer * connection.Observer ,
126126 namedTunnel * connection.TunnelProperties ,
127127) (* supervisor.TunnelConfig , * orchestration.Config , error ) {
128- clientID , err := uuid .NewRandom ()
128+ transportProtocol := c .String (flags .Protocol )
129+ isPostQuantumEnforced := c .Bool (flags .PostQuantum )
130+ featureSelector , err := features .NewFeatureSelector (ctx , namedTunnel .Credentials .AccountTag , c .StringSlice (flags .Features ), isPostQuantumEnforced , log )
129131 if err != nil {
130- return nil , nil , errors .Wrap (err , "can't generate connector UUID " )
132+ return nil , nil , errors .Wrap (err , "Failed to create feature selector " )
131133 }
132- log . Info (). Msgf ( "Generated Connector ID: %s" , clientID )
133- tags , err := NewTagSliceFromCLI ( c . StringSlice ( flags . Tag ) )
134+
135+ clientConfig , err := client . NewConfig ( info . Version (), info . OSArch (), featureSelector )
134136 if err != nil {
135- log .Err (err ).Msg ("Tag parse failure" )
136- return nil , nil , errors .Wrap (err , "Tag parse failure" )
137+ return nil , nil , err
137138 }
138- tags = append (tags , pogs.Tag {Name : "ID" , Value : clientID .String ()})
139139
140- transportProtocol := c .String (flags .Protocol )
141- isPostQuantumEnforced := c .Bool (flags .PostQuantum )
140+ log .Info ().Msgf ("Generated Connector ID: %s" , clientConfig .ConnectorID )
142141
143- featureSelector , err := features . NewFeatureSelector ( ctx , namedTunnel . Credentials . AccountTag , c .StringSlice (flags .Features ), c . Bool ( flags . PostQuantum ), log )
142+ tags , err := NewTagSliceFromCLI ( c .StringSlice (flags .Tag ) )
144143 if err != nil {
145- return nil , nil , errors .Wrap (err , "Failed to create feature selector" )
144+ log .Err (err ).Msg ("Tag parse failure" )
145+ return nil , nil , errors .Wrap (err , "Tag parse failure" )
146146 }
147- clientFeatures := featureSelector .ClientFeatures ()
148- pqMode := featureSelector .PostQuantumMode ()
147+ tags = append (tags , pogs.Tag {Name : "ID" , Value : clientConfig .ConnectorID .String ()})
148+
149+ clientFeatures := featureSelector .Snapshot ()
150+ pqMode := clientFeatures .PostQuantum
149151 if pqMode == features .PostQuantumStrict {
150152 // Error if the user tries to force a non-quic transport protocol
151153 if transportProtocol != connection .AutoSelectFlag && transportProtocol != connection .QUIC .String () {
@@ -154,12 +156,6 @@ func prepareTunnelConfig(
154156 transportProtocol = connection .QUIC .String ()
155157 }
156158
157- namedTunnel .Client = pogs.ClientInfo {
158- ClientID : clientID [:],
159- Features : clientFeatures ,
160- Version : info .Version (),
161- Arch : info .OSArch (),
162- }
163159 cfg := config .GetConfiguration ()
164160 ingressRules , err := ingress .ParseIngressFromConfigAndCLI (cfg , c , log )
165161 if err != nil {
@@ -224,10 +220,8 @@ func prepareTunnelConfig(
224220 }
225221
226222 tunnelConfig := & supervisor.TunnelConfig {
223+ ClientConfig : clientConfig ,
227224 GracePeriod : gracePeriod ,
228- ReplaceExisting : c .Bool (flags .Force ),
229- OSArch : info .OSArch (),
230- ClientID : clientID .String (),
231225 EdgeAddrs : c .StringSlice (flags .Edge ),
232226 Region : resolvedRegion ,
233227 EdgeIPVersion : edgeIPVersion ,
@@ -246,7 +240,6 @@ func prepareTunnelConfig(
246240 NamedTunnel : namedTunnel ,
247241 ProtocolSelector : protocolSelector ,
248242 EdgeTLSConfigs : edgeTLSConfigs ,
249- FeatureSelector : featureSelector ,
250243 MaxEdgeAddrRetries : uint8 (c .Int (flags .MaxEdgeAddrRetries )), // nolint: gosec
251244 RPCTimeout : c .Duration (flags .RpcTimeout ),
252245 WriteStreamTimeout : c .Duration (flags .WriteStreamTimeout ),
0 commit comments