controlclient: add auth key

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
reviewable/pr277/r1
David Crawshaw 5 years ago
parent 22a0acff39
commit 3f087466f5

@ -83,6 +83,7 @@ type Direct struct {
mu sync.Mutex // mutex guards the following fields mu sync.Mutex // mutex guards the following fields
serverKey wgcfg.Key serverKey wgcfg.Key
persist Persist persist Persist
authKey string
tryingNewKey wgcfg.PrivateKey tryingNewKey wgcfg.PrivateKey
expiry *time.Time expiry *time.Time
hostinfo *tailcfg.Hostinfo // always non-nil hostinfo *tailcfg.Hostinfo // always non-nil
@ -94,6 +95,7 @@ type Options struct {
Persist Persist // initial persistent data Persist Persist // initial persistent data
HTTPC *http.Client // HTTP client used to talk to tailcontrol HTTPC *http.Client // HTTP client used to talk to tailcontrol
ServerURL string // URL of the tailcontrol server ServerURL string // URL of the tailcontrol server
AuthKey string // optional node auth key for auto registration
TimeNow func() time.Time // time.Now implementation used by Client TimeNow func() time.Time // time.Now implementation used by Client
Hostinfo *tailcfg.Hostinfo // non-nil passes ownership, nil means to use default using os.Hostname, etc Hostinfo *tailcfg.Hostinfo // non-nil passes ownership, nil means to use default using os.Hostname, etc
NewDecompressor func() (Decompressor, error) NewDecompressor func() (Decompressor, error)
@ -131,6 +133,7 @@ func NewDirect(opts Options) (*Direct, error) {
newDecompressor: opts.NewDecompressor, newDecompressor: opts.NewDecompressor,
keepAlive: opts.KeepAlive, keepAlive: opts.KeepAlive,
persist: opts.Persist, persist: opts.Persist,
authKey: opts.AuthKey,
} }
if opts.Hostinfo == nil { if opts.Hostinfo == nil {
c.SetHostinfo(NewHostinfo()) c.SetHostinfo(NewHostinfo())
@ -313,6 +316,7 @@ func (c *Direct) doLogin(ctx context.Context, t *oauth2.Token, flags LoginFlags,
request.Auth.Oauth2Token = t request.Auth.Oauth2Token = t
request.Auth.Provider = persist.Provider request.Auth.Provider = persist.Provider
request.Auth.LoginName = persist.LoginName request.Auth.LoginName = persist.LoginName
request.Auth.AuthKey = c.authKey
bodyData, err := encode(request, &serverKey, &persist.PrivateMachineKey) bodyData, err := encode(request, &serverKey, &persist.PrivateMachineKey)
if err != nil { if err != nil {
return regen, url, err return regen, url, err

Loading…
Cancel
Save