|
|
@ -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 {
|
|
|
|