Update
This commit is contained in:
1 parent
3530afb854
commit
6903fcff27
2146 files changed
+112256
-190703
No files matched your search
+47
-4
@@ -1,11 +1,14 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// Copyright (c) Tailscale Inc & contributors
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package ipn
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/netip"
|
||||
|
||||
"tailscale.com/net/tsaddr"
|
||||
"tailscale.com/tailcfg"
|
||||
"tailscale.com/types/opt"
|
||||
"tailscale.com/types/preftype"
|
||||
@@ -29,8 +32,9 @@ type ConfigVAlpha struct {
|
||||
ExitNode *string `json:"exitNode,omitempty"` // IP, StableID, or MagicDNS base name
|
||||
AllowLANWhileUsingExitNode opt.Bool `json:"allowLANWhileUsingExitNode,omitempty"`
|
||||
|
||||
AdvertiseRoutes []netip.Prefix `json:",omitempty"`
|
||||
DisableSNAT opt.Bool `json:",omitempty"`
|
||||
AdvertiseRoutes []netip.Prefix `json:",omitempty"`
|
||||
AdvertiseExitNode opt.Bool `json:",omitzero"`
|
||||
DisableSNAT opt.Bool `json:",omitzero"`
|
||||
|
||||
AdvertiseServices []string `json:",omitempty"`
|
||||
|
||||
@@ -43,6 +47,7 @@ type ConfigVAlpha struct {
|
||||
RunSSHServer opt.Bool `json:",omitempty"` // Tailscale SSH
|
||||
RunWebClient opt.Bool `json:",omitempty"`
|
||||
ShieldsUp opt.Bool `json:",omitempty"`
|
||||
RemoteConfig opt.Bool `json:",omitzero"` // delegate full remote control to the tailnet admin; see Prefs.RemoteConfig
|
||||
AutoUpdate *AutoUpdatePrefs `json:",omitempty"`
|
||||
ServeConfigTemp *ServeConfig `json:",omitempty"` // TODO(bradfitz,maisem): make separate stable type for this
|
||||
|
||||
@@ -50,6 +55,15 @@ type ConfigVAlpha struct {
|
||||
// should advertise amongst its wireguard endpoints.
|
||||
StaticEndpoints []netip.AddrPort `json:",omitempty"`
|
||||
|
||||
// RelayServerPort is the UDP port for the relay server to bind to.
|
||||
// A value of 0 will pick a random unused port. Nil disables relay server.
|
||||
RelayServerPort *uint16 `json:",omitzero"`
|
||||
|
||||
// RelayServerStaticEndpoints are static IP:port endpoints to advertise
|
||||
// as candidates for relay connections. Only relevant when RelayServerPort
|
||||
// is non-nil.
|
||||
RelayServerStaticEndpoints []netip.AddrPort `json:",omitempty"`
|
||||
|
||||
// TODO(bradfitz,maisem): future something like:
|
||||
// Profile map[string]*Config // keyed by alice@gmail.com, corp.com (TailnetSID)
|
||||
}
|
||||
@@ -101,12 +115,29 @@ func (c *ConfigVAlpha) ToPrefs() (MaskedPrefs, error) {
|
||||
mp.ExitNodeAllowLANAccessSet = true
|
||||
}
|
||||
if c.AdvertiseRoutes != nil {
|
||||
var routeErrs []error
|
||||
for _, route := range c.AdvertiseRoutes {
|
||||
if route != route.Masked() {
|
||||
routeErrs = append(routeErrs, fmt.Errorf("route %s has non-address bits set; expected %s", route, route.Masked()))
|
||||
}
|
||||
}
|
||||
if err := errors.Join(routeErrs...); err != nil {
|
||||
return mp, err
|
||||
}
|
||||
mp.AdvertiseRoutes = c.AdvertiseRoutes
|
||||
mp.AdvertiseRoutesSet = true
|
||||
}
|
||||
if c.AdvertiseExitNode.EqualBool(true) {
|
||||
if mp.AdvertiseRoutesSet {
|
||||
mp.AdvertiseRoutes = append(mp.AdvertiseRoutes, tsaddr.AllIPv4(), tsaddr.AllIPv6())
|
||||
} else {
|
||||
mp.AdvertiseRoutes = tsaddr.ExitRoutes()
|
||||
mp.AdvertiseRoutesSet = true
|
||||
}
|
||||
}
|
||||
if c.DisableSNAT != "" {
|
||||
mp.NoSNAT = c.DisableSNAT.EqualBool(true)
|
||||
mp.NoSNAT = true
|
||||
mp.NoSNATSet = true
|
||||
}
|
||||
if c.NoStatefulFiltering != "" {
|
||||
mp.NoStatefulFiltering = c.NoStatefulFiltering
|
||||
@@ -137,6 +168,10 @@ func (c *ConfigVAlpha) ToPrefs() (MaskedPrefs, error) {
|
||||
mp.ShieldsUp = c.ShieldsUp.EqualBool(true)
|
||||
mp.ShieldsUpSet = true
|
||||
}
|
||||
if c.RemoteConfig != "" {
|
||||
mp.RemoteConfig = c.RemoteConfig.EqualBool(true)
|
||||
mp.RemoteConfigSet = true
|
||||
}
|
||||
if c.AutoUpdate != nil {
|
||||
mp.AutoUpdate = *c.AutoUpdate
|
||||
mp.AutoUpdateSet = AutoUpdatePrefsMask{ApplySet: true, CheckSet: true}
|
||||
@@ -155,5 +190,13 @@ func (c *ConfigVAlpha) ToPrefs() (MaskedPrefs, error) {
|
||||
if c.AdvertiseServices != nil {
|
||||
mp.AdvertiseServices = c.AdvertiseServices
|
||||
}
|
||||
mp.RelayServerPortSet = true
|
||||
mp.RelayServerStaticEndpointsSet = true
|
||||
if c.RelayServerPort != nil {
|
||||
mp.RelayServerPort = c.RelayServerPort
|
||||
}
|
||||
if c.RelayServerStaticEndpoints != nil {
|
||||
mp.RelayServerStaticEndpoints = c.RelayServerStaticEndpoints
|
||||
}
|
||||
return mp, nil
|
||||
}
|
||||
Reference in new issue
Block a user