@ -61,26 +61,25 @@ import (
// Direct is the client that connects to a tailcontrol server for a node.
// Direct is the client that connects to a tailcontrol server for a node.
type Direct struct {
type Direct struct {
httpc * http . Client // HTTP client used to talk to tailcontrol
httpc * http . Client // HTTP client used to talk to tailcontrol
dialer * tsdial . Dialer
dialer * tsdial . Dialer
dnsCache * dnscache . Resolver
dnsCache * dnscache . Resolver
serverURL string // URL of the tailcontrol server
serverURL string // URL of the tailcontrol server
clock tstime . Clock
clock tstime . Clock
lastPrintMap time . Time
lastPrintMap time . Time
newDecompressor func ( ) ( Decompressor , error )
newDecompressor func ( ) ( Decompressor , error )
keepAlive bool
keepAlive bool
logf logger . Logf
logf logger . Logf
netMon * netmon . Monitor // or nil
netMon * netmon . Monitor // or nil
discoPubKey key . DiscoPublic
discoPubKey key . DiscoPublic
getMachinePrivKey func ( ) ( key . MachinePrivate , error )
getMachinePrivKey func ( ) ( key . MachinePrivate , error )
debugFlags [ ] string
debugFlags [ ] string
keepSharerAndUserSplit bool
skipIPForwardingCheck bool
skipIPForwardingCheck bool
pinger Pinger
pinger Pinger
popBrowser func ( url string ) // or nil
popBrowser func ( url string ) // or nil
c2nHandler http . Handler // or nil
c2nHandler http . Handler // or nil
onClientVersion func ( * tailcfg . ClientVersion ) // or nil
onClientVersion func ( * tailcfg . ClientVersion ) // or nil
onControlTime func ( time . Time ) // or nil
onControlTime func ( time . Time ) // or nil
dialPlan ControlDialPlanner // can be nil
dialPlan ControlDialPlanner // can be nil
@ -126,10 +125,6 @@ type Options struct {
// Status is called when there's a change in status.
// Status is called when there's a change in status.
Status func ( Status )
Status func ( Status )
// KeepSharerAndUserSplit controls whether the client
// understands Node.Sharer. If false, the Sharer is mapped to the User.
KeepSharerAndUserSplit bool
// SkipIPForwardingCheck declares that the host's IP
// SkipIPForwardingCheck declares that the host's IP
// forwarding works and should not be double-checked by the
// forwarding works and should not be double-checked by the
// controlclient package.
// controlclient package.
@ -244,28 +239,27 @@ func NewDirect(opts Options) (*Direct, error) {
}
}
c := & Direct {
c := & Direct {
httpc : httpc ,
httpc : httpc ,
getMachinePrivKey : opts . GetMachinePrivateKey ,
getMachinePrivKey : opts . GetMachinePrivateKey ,
serverURL : opts . ServerURL ,
serverURL : opts . ServerURL ,
clock : opts . Clock ,
clock : opts . Clock ,
logf : opts . Logf ,
logf : opts . Logf ,
newDecompressor : opts . NewDecompressor ,
newDecompressor : opts . NewDecompressor ,
keepAlive : opts . KeepAlive ,
keepAlive : opts . KeepAlive ,
persist : opts . Persist . View ( ) ,
persist : opts . Persist . View ( ) ,
authKey : opts . AuthKey ,
authKey : opts . AuthKey ,
discoPubKey : opts . DiscoPublicKey ,
discoPubKey : opts . DiscoPublicKey ,
debugFlags : opts . DebugFlags ,
debugFlags : opts . DebugFlags ,
keepSharerAndUserSplit : opts . KeepSharerAndUserSplit ,
netMon : opts . NetMon ,
netMon : opts . NetMon ,
skipIPForwardingCheck : opts . SkipIPForwardingCheck ,
skipIPForwardingCheck : opts . SkipIPForwardingCheck ,
pinger : opts . Pinger ,
pinger : opts . Pinger ,
popBrowser : opts . PopBrowserURL ,
popBrowser : opts . PopBrowserURL ,
onClientVersion : opts . OnClientVersion ,
onClientVersion : opts . OnClientVersion ,
onControlTime : opts . OnControlTime ,
onControlTime : opts . OnControlTime ,
c2nHandler : opts . C2NHandler ,
c2nHandler : opts . C2NHandler ,
dialer : opts . Dialer ,
dialer : opts . Dialer ,
dnsCache : dnsCache ,
dnsCache : dnsCache ,
dialPlan : opts . DialPlan ,
dialPlan : opts . DialPlan ,
}
}
if opts . Hostinfo == nil {
if opts . Hostinfo == nil {
c . SetHostinfo ( hostinfo . New ( ) )
c . SetHostinfo ( hostinfo . New ( ) )
@ -994,7 +988,6 @@ func (c *Direct) sendMapRequest(ctx context.Context, isStreaming bool, nu Netmap
sess . logf = c . logf
sess . logf = c . logf
sess . vlogf = vlogf
sess . vlogf = vlogf
sess . machinePubKey = machinePubKey
sess . machinePubKey = machinePubKey
sess . keepSharerAndUserSplit = c . keepSharerAndUserSplit
// If allowStream, then the server will use an HTTP long poll to
// If allowStream, then the server will use an HTTP long poll to
// return incremental results. There is always one response right
// return incremental results. There is always one response right