|
|
@@ -532,12 +532,16 @@ func (p *Prefs) Pretty() string { return p.pretty(runtime.GOOS) }
|
|
|
func (p *Prefs) pretty(goos string) string {
|
|
|
var sb strings.Builder
|
|
|
sb.WriteString("Prefs{")
|
|
|
- fmt.Fprintf(&sb, "ra=%v ", p.RouteAll)
|
|
|
- fmt.Fprintf(&sb, "dns=%v want=%v ", p.CorpDNS, p.WantRunning)
|
|
|
- if p.RunSSH {
|
|
|
+ if buildfeatures.HasUseRoutes {
|
|
|
+ fmt.Fprintf(&sb, "ra=%v ", p.RouteAll)
|
|
|
+ }
|
|
|
+ if buildfeatures.HasDNS {
|
|
|
+ fmt.Fprintf(&sb, "dns=%v want=%v ", p.CorpDNS, p.WantRunning)
|
|
|
+ }
|
|
|
+ if buildfeatures.HasSSH && p.RunSSH {
|
|
|
sb.WriteString("ssh=true ")
|
|
|
}
|
|
|
- if p.RunWebClient {
|
|
|
+ if buildfeatures.HasWebClient && p.RunWebClient {
|
|
|
sb.WriteString("webclient=true ")
|
|
|
}
|
|
|
if p.LoggedOut {
|
|
|
@@ -552,26 +556,30 @@ func (p *Prefs) pretty(goos string) string {
|
|
|
if p.ShieldsUp {
|
|
|
sb.WriteString("shields=true ")
|
|
|
}
|
|
|
- if p.ExitNodeIP.IsValid() {
|
|
|
- fmt.Fprintf(&sb, "exit=%v lan=%t ", p.ExitNodeIP, p.ExitNodeAllowLANAccess)
|
|
|
- } else if !p.ExitNodeID.IsZero() {
|
|
|
- fmt.Fprintf(&sb, "exit=%v lan=%t ", p.ExitNodeID, p.ExitNodeAllowLANAccess)
|
|
|
- }
|
|
|
- if p.AutoExitNode.IsSet() {
|
|
|
- fmt.Fprintf(&sb, "auto=%v ", p.AutoExitNode)
|
|
|
- }
|
|
|
- if len(p.AdvertiseRoutes) > 0 || goos == "linux" {
|
|
|
- fmt.Fprintf(&sb, "routes=%v ", p.AdvertiseRoutes)
|
|
|
- }
|
|
|
- if len(p.AdvertiseRoutes) > 0 || p.NoSNAT {
|
|
|
- fmt.Fprintf(&sb, "snat=%v ", !p.NoSNAT)
|
|
|
+ if buildfeatures.HasUseExitNode {
|
|
|
+ if p.ExitNodeIP.IsValid() {
|
|
|
+ fmt.Fprintf(&sb, "exit=%v lan=%t ", p.ExitNodeIP, p.ExitNodeAllowLANAccess)
|
|
|
+ } else if !p.ExitNodeID.IsZero() {
|
|
|
+ fmt.Fprintf(&sb, "exit=%v lan=%t ", p.ExitNodeID, p.ExitNodeAllowLANAccess)
|
|
|
+ }
|
|
|
+ if p.AutoExitNode.IsSet() {
|
|
|
+ fmt.Fprintf(&sb, "auto=%v ", p.AutoExitNode)
|
|
|
+ }
|
|
|
}
|
|
|
- if len(p.AdvertiseRoutes) > 0 || p.NoStatefulFiltering.EqualBool(true) {
|
|
|
- // Only print if we're advertising any routes, or the user has
|
|
|
- // turned off stateful filtering (NoStatefulFiltering=true ⇒
|
|
|
- // StatefulFiltering=false).
|
|
|
- bb, _ := p.NoStatefulFiltering.Get()
|
|
|
- fmt.Fprintf(&sb, "statefulFiltering=%v ", !bb)
|
|
|
+ if buildfeatures.HasAdvertiseRoutes {
|
|
|
+ if len(p.AdvertiseRoutes) > 0 || goos == "linux" {
|
|
|
+ fmt.Fprintf(&sb, "routes=%v ", p.AdvertiseRoutes)
|
|
|
+ }
|
|
|
+ if len(p.AdvertiseRoutes) > 0 || p.NoSNAT {
|
|
|
+ fmt.Fprintf(&sb, "snat=%v ", !p.NoSNAT)
|
|
|
+ }
|
|
|
+ if len(p.AdvertiseRoutes) > 0 || p.NoStatefulFiltering.EqualBool(true) {
|
|
|
+ // Only print if we're advertising any routes, or the user has
|
|
|
+ // turned off stateful filtering (NoStatefulFiltering=true ⇒
|
|
|
+ // StatefulFiltering=false).
|
|
|
+ bb, _ := p.NoStatefulFiltering.Get()
|
|
|
+ fmt.Fprintf(&sb, "statefulFiltering=%v ", !bb)
|
|
|
+ }
|
|
|
}
|
|
|
if len(p.AdvertiseTags) > 0 {
|
|
|
fmt.Fprintf(&sb, "tags=%s ", strings.Join(p.AdvertiseTags, ","))
|
|
|
@@ -594,9 +602,13 @@ func (p *Prefs) pretty(goos string) string {
|
|
|
if p.NetfilterKind != "" {
|
|
|
fmt.Fprintf(&sb, "netfilterKind=%s ", p.NetfilterKind)
|
|
|
}
|
|
|
- sb.WriteString(p.AutoUpdate.Pretty())
|
|
|
- sb.WriteString(p.AppConnector.Pretty())
|
|
|
- if p.RelayServerPort != nil {
|
|
|
+ if buildfeatures.HasClientUpdate {
|
|
|
+ sb.WriteString(p.AutoUpdate.Pretty())
|
|
|
+ }
|
|
|
+ if buildfeatures.HasAppConnectors {
|
|
|
+ sb.WriteString(p.AppConnector.Pretty())
|
|
|
+ }
|
|
|
+ if buildfeatures.HasRelayServer && p.RelayServerPort != nil {
|
|
|
fmt.Fprintf(&sb, "relayServerPort=%d ", *p.RelayServerPort)
|
|
|
}
|
|
|
if p.Persist != nil {
|