|
|
@ -239,8 +239,12 @@ func (h *Hostinfo) Equal(h2 *Hostinfo) bool {
|
|
|
|
return reflect.DeepEqual(h, h2)
|
|
|
|
return reflect.DeepEqual(h, h2)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// RegisterRequest is sent by a client to register the key for a node.
|
|
|
|
|
|
|
|
// It is encoded to JSON, encrypted with golang.org/x/crypto/nacl/box,
|
|
|
|
|
|
|
|
// using the local machine key, and sent to:
|
|
|
|
|
|
|
|
// https://login.tailscale.com/machine/<mkey hex>
|
|
|
|
type RegisterRequest struct {
|
|
|
|
type RegisterRequest struct {
|
|
|
|
Version int
|
|
|
|
Version int // currently 1
|
|
|
|
NodeKey NodeKey
|
|
|
|
NodeKey NodeKey
|
|
|
|
OldNodeKey NodeKey
|
|
|
|
OldNodeKey NodeKey
|
|
|
|
Auth struct {
|
|
|
|
Auth struct {
|
|
|
@ -254,6 +258,19 @@ type RegisterRequest struct {
|
|
|
|
Hostinfo Hostinfo
|
|
|
|
Hostinfo Hostinfo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Copy makes a deep copy of RegisterRequest.
|
|
|
|
|
|
|
|
// The result aliases no memory with the original.
|
|
|
|
|
|
|
|
func (req *RegisterRequest) Copy() *RegisterRequest {
|
|
|
|
|
|
|
|
res := *req
|
|
|
|
|
|
|
|
res.Hostinfo = *res.Hostinfo.Copy()
|
|
|
|
|
|
|
|
if res.Auth.Oauth2Token != nil {
|
|
|
|
|
|
|
|
tok := *res.Auth.Oauth2Token
|
|
|
|
|
|
|
|
res.Auth.Oauth2Token = &tok
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return &res
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// RegisterResponse is returned by the server in response to a RegisterRequest.
|
|
|
|
type RegisterResponse struct {
|
|
|
|
type RegisterResponse struct {
|
|
|
|
User User
|
|
|
|
User User
|
|
|
|
Login Login
|
|
|
|
Login Login
|
|
|
@ -262,13 +279,20 @@ type RegisterResponse struct {
|
|
|
|
AuthURL string // if set, authorization pending
|
|
|
|
AuthURL string // if set, authorization pending
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// MapRequest is sent by a client to start a long-poll network map updates.
|
|
|
|
|
|
|
|
// The request includes a copy of the client's current set of WireGuard
|
|
|
|
|
|
|
|
// endpoints and general host information.
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
// The request is encoded to JSON, encrypted with golang.org/x/crypto/nacl/box,
|
|
|
|
|
|
|
|
// using the local machine key, and sent to:
|
|
|
|
|
|
|
|
// https://login.tailscale.com/machine/<mkey hex>/map
|
|
|
|
type MapRequest struct {
|
|
|
|
type MapRequest struct {
|
|
|
|
Version int // current version is 4
|
|
|
|
Version int // current version is 4
|
|
|
|
Compress string // "zstd" or "" (no compression)
|
|
|
|
Compress string // "zstd" or "" (no compression)
|
|
|
|
KeepAlive bool // server sends keep-alives
|
|
|
|
KeepAlive bool // server sends keep-alives
|
|
|
|
NodeKey NodeKey
|
|
|
|
NodeKey NodeKey
|
|
|
|
Endpoints []string
|
|
|
|
Endpoints []string
|
|
|
|
Stream bool
|
|
|
|
Stream bool // if true, multiple MapResponse objects are returned
|
|
|
|
Hostinfo Hostinfo
|
|
|
|
Hostinfo Hostinfo
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|