cmd/tailscale/cli: do not allow turning Funnel on while shields-up (#7770)
This commit is contained in:
parent
7bfb7744b7
commit
ba4e58f429
|
@ -2549,6 +2549,9 @@ func (b *LocalBackend) checkPrefsLocked(p *ipn.Prefs) error {
|
||||||
if err := b.checkExitNodePrefsLocked(p); err != nil {
|
if err := b.checkExitNodePrefsLocked(p); err != nil {
|
||||||
errs = append(errs, err)
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
|
if err := b.checkFunnelEnabledLocked(p); err != nil {
|
||||||
|
errs = append(errs, err)
|
||||||
|
}
|
||||||
return multierr.New(errs...)
|
return multierr.New(errs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2633,6 +2636,13 @@ func (b *LocalBackend) checkExitNodePrefsLocked(p *ipn.Prefs) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *LocalBackend) checkFunnelEnabledLocked(p *ipn.Prefs) error {
|
||||||
|
if p.ShieldsUp && b.serveConfig.IsFunnelOn() {
|
||||||
|
return errors.New("Cannot enable shields-up when Funnel is enabled.")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (b *LocalBackend) EditPrefs(mp *ipn.MaskedPrefs) (ipn.PrefsView, error) {
|
func (b *LocalBackend) EditPrefs(mp *ipn.MaskedPrefs) (ipn.PrefsView, error) {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
if mp.EggSet {
|
if mp.EggSet {
|
||||||
|
|
|
@ -218,6 +218,11 @@ func (b *LocalBackend) SetServeConfig(config *ipn.ServeConfig) error {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
defer b.mu.Unlock()
|
defer b.mu.Unlock()
|
||||||
|
|
||||||
|
prefs := b.pm.CurrentPrefs()
|
||||||
|
if config.IsFunnelOn() && prefs.ShieldsUp() {
|
||||||
|
return errors.New("Unable to turn on Funnel while shields-up is enabled")
|
||||||
|
}
|
||||||
|
|
||||||
nm := b.netMap
|
nm := b.netMap
|
||||||
if nm == nil {
|
if nm == nil {
|
||||||
return errors.New("netMap is nil")
|
return errors.New("netMap is nil")
|
||||||
|
|
|
@ -163,6 +163,12 @@ func (sc *ServeConfig) IsServingWeb(port uint16) bool {
|
||||||
return sc.TCP[port].HTTPS
|
return sc.TCP[port].HTTPS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsFunnelOn checks if ServeConfig is currently allowing
|
||||||
|
// funnel traffic for any host:port.
|
||||||
|
//
|
||||||
|
// View version of ServeConfig.IsFunnelOn.
|
||||||
|
func (v ServeConfigView) IsFunnelOn() bool { return v.ж.IsFunnelOn() }
|
||||||
|
|
||||||
// IsFunnelOn checks if ServeConfig is currently allowing
|
// IsFunnelOn checks if ServeConfig is currently allowing
|
||||||
// funnel traffic for any host:port.
|
// funnel traffic for any host:port.
|
||||||
func (sc *ServeConfig) IsFunnelOn() bool {
|
func (sc *ServeConfig) IsFunnelOn() bool {
|
||||||
|
|
Loading…
Reference in New Issue