diff --git a/cmd/tailscaled/depaware-minlinux.txt b/cmd/tailscaled/depaware-minlinux.txt index 79eeadab0..a40a05b94 100644 --- a/cmd/tailscaled/depaware-minlinux.txt +++ b/cmd/tailscaled/depaware-minlinux.txt @@ -49,7 +49,6 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de tailscale.com/derp from tailscale.com/derp/derphttp+ tailscale.com/derp/derphttp from tailscale.com/wgengine/magicsock tailscale.com/disco from tailscale.com/derp+ - tailscale.com/drive from tailscale.com/ipn+ tailscale.com/envknob from tailscale.com/cmd/tailscaled+ tailscale.com/envknob/featureknob from tailscale.com/ipn/ipnlocal tailscale.com/health from tailscale.com/control/controlclient+ @@ -274,8 +273,8 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de path from github.com/vishvananda/netns+ path/filepath from crypto/x509+ reflect from crypto/x509+ - regexp from github.com/coreos/go-iptables/iptables+ - regexp/syntax from regexp + L regexp from github.com/coreos/go-iptables/iptables + L regexp/syntax from regexp runtime/debug from github.com/klauspost/compress/zstd+ slices from crypto/tls+ sort from compress/flate+ diff --git a/ipn/backend.go b/ipn/backend.go index 3e956f473..b55af27ea 100644 --- a/ipn/backend.go +++ b/ipn/backend.go @@ -8,7 +8,6 @@ import ( "strings" "time" - "tailscale.com/drive" "tailscale.com/health" "tailscale.com/ipn/ipnstate" "tailscale.com/tailcfg" @@ -16,7 +15,6 @@ import ( "tailscale.com/types/key" "tailscale.com/types/netmap" "tailscale.com/types/structs" - "tailscale.com/types/views" ) type State int @@ -140,14 +138,6 @@ type Notify struct { // is available. ClientVersion *tailcfg.ClientVersion `json:",omitempty"` - // DriveShares tracks the full set of current DriveShares that we're - // publishing. Some client applications, like the MacOS and Windows clients, - // will listen for updates to this and handle serving these shares under - // the identity of the unprivileged user that is running the application. A - // nil value here means that we're not broadcasting shares information, an - // empty value means that there are no shares. - DriveShares views.SliceView[*drive.Share, drive.ShareView] - // Health is the last-known health state of the backend. When this field is // non-nil, a change in health verified, and the API client should surface // any changes to the user in the UI. diff --git a/ipn/ipn_clone.go b/ipn/ipn_clone.go index 34d7ba9a6..2372561a0 100644 --- a/ipn/ipn_clone.go +++ b/ipn/ipn_clone.go @@ -9,7 +9,6 @@ import ( "maps" "net/netip" - "tailscale.com/drive" "tailscale.com/tailcfg" "tailscale.com/types/opt" "tailscale.com/types/persist" @@ -28,16 +27,6 @@ func (src *Prefs) Clone() *Prefs { dst.AdvertiseTags = append(src.AdvertiseTags[:0:0], src.AdvertiseTags...) dst.AdvertiseRoutes = append(src.AdvertiseRoutes[:0:0], src.AdvertiseRoutes...) dst.AdvertiseServices = append(src.AdvertiseServices[:0:0], src.AdvertiseServices...) - if src.DriveShares != nil { - dst.DriveShares = make([]*drive.Share, len(src.DriveShares)) - for i := range dst.DriveShares { - if src.DriveShares[i] == nil { - dst.DriveShares[i] = nil - } else { - dst.DriveShares[i] = src.DriveShares[i].Clone() - } - } - } dst.Persist = src.Persist.Clone() return dst } @@ -72,7 +61,6 @@ var _PrefsCloneNeedsRegeneration = Prefs(struct { AppConnector AppConnectorPrefs PostureChecking bool NetfilterKind string - DriveShares []*drive.Share AllowSingleHosts marshalAsTrueInJSON Persist *persist.Persist }{}) diff --git a/ipn/ipn_view.go b/ipn/ipn_view.go index bc67531e4..bcfb82030 100644 --- a/ipn/ipn_view.go +++ b/ipn/ipn_view.go @@ -10,7 +10,6 @@ import ( "errors" "net/netip" - "tailscale.com/drive" "tailscale.com/tailcfg" "tailscale.com/types/opt" "tailscale.com/types/persist" @@ -97,9 +96,6 @@ func (v PrefsView) AutoUpdate() AutoUpdatePrefs { return v.ж.AutoUpda func (v PrefsView) AppConnector() AppConnectorPrefs { return v.ж.AppConnector } func (v PrefsView) PostureChecking() bool { return v.ж.PostureChecking } func (v PrefsView) NetfilterKind() string { return v.ж.NetfilterKind } -func (v PrefsView) DriveShares() views.SliceView[*drive.Share, drive.ShareView] { - return views.SliceOfViews[*drive.Share, drive.ShareView](v.ж.DriveShares) -} func (v PrefsView) AllowSingleHosts() marshalAsTrueInJSON { return v.ж.AllowSingleHosts } func (v PrefsView) Persist() persist.PersistView { return v.ж.Persist.View() } @@ -133,7 +129,6 @@ var _PrefsViewNeedsRegeneration = Prefs(struct { AppConnector AppConnectorPrefs PostureChecking bool NetfilterKind string - DriveShares []*drive.Share AllowSingleHosts marshalAsTrueInJSON Persist *persist.Persist }{}) diff --git a/ipn/ipnlocal/bus.go b/ipn/ipnlocal/bus.go index 111a877d8..2253bde4d 100644 --- a/ipn/ipnlocal/bus.go +++ b/ipn/ipnlocal/bus.go @@ -152,7 +152,6 @@ func isNotableNotify(n *ipn.Notify) bool { n.Prefs != nil || n.ErrMessage != nil || n.LoginFinished != nil || - !n.DriveShares.IsNil() || n.Health != nil || len(n.IncomingFiles) > 0 || len(n.OutgoingFiles) > 0 || diff --git a/ipn/ipnlocal/local.go b/ipn/ipnlocal/local.go index dcd2b3140..b7cb63a51 100644 --- a/ipn/ipnlocal/local.go +++ b/ipn/ipnlocal/local.go @@ -36,7 +36,6 @@ import ( "tailscale.com/client/tailscale/apitype" "tailscale.com/control/controlclient" "tailscale.com/control/controlknobs" - "tailscale.com/drive" "tailscale.com/envknob" "tailscale.com/envknob/featureknob" "tailscale.com/health" @@ -309,11 +308,6 @@ type LocalBackend struct { // lastNotifiedDriveSharesMu guards lastNotifiedDriveShares lastNotifiedDriveSharesMu sync.Mutex - - // lastNotifiedDriveShares keeps track of the last set of shares that we - // notified about. - lastNotifiedDriveShares *views.SliceView[*drive.Share, drive.ShareView] - // outgoingFiles keeps track of Taildrop outgoing files keyed to their OutgoingFile.ID outgoingFiles map[string]*ipn.OutgoingFile @@ -495,19 +489,6 @@ func NewLocalBackend(logf logger.Logf, sys *tsd.System, loginFlags controlclient } } - // initialize Taildrive shares from saved state - fs, ok := b.sys.DriveForRemote.GetOK() - if ok { - currentShares := b.pm.prefs.DriveShares() - if currentShares.Len() > 0 { - var shares []*drive.Share - for _, share := range currentShares.All() { - shares = append(shares, share.AsStruct()) - } - fs.SetShares(shares) - } - } - return b, nil } diff --git a/ipn/prefs.go b/ipn/prefs.go index f5406f3b7..ce7ce6b17 100644 --- a/ipn/prefs.go +++ b/ipn/prefs.go @@ -14,11 +14,9 @@ import ( "path/filepath" "reflect" "runtime" - "slices" "strings" "tailscale.com/atomicfile" - "tailscale.com/drive" "tailscale.com/ipn/ipnstate" "tailscale.com/net/netaddr" "tailscale.com/net/tsaddr" @@ -241,10 +239,6 @@ type Prefs struct { // Linux-only. NetfilterKind string - // DriveShares are the configured DriveShares, stored in increasing order - // by name. - DriveShares []*drive.Share - // AllowSingleHosts was a legacy field that was always true // for the past 4.5 years. It controlled whether Tailscale // peers got /32 or /127 routes for each other. @@ -614,7 +608,6 @@ func (p *Prefs) Equals(p2 *Prefs) bool { p.AutoUpdate.Equals(p2.AutoUpdate) && p.AppConnector == p2.AppConnector && p.PostureChecking == p2.PostureChecking && - slices.EqualFunc(p.DriveShares, p2.DriveShares, drive.SharesEqual) && p.NetfilterKind == p2.NetfilterKind } diff --git a/tsd/tsd.go b/tsd/tsd.go index 834950556..ef93e2d05 100644 --- a/tsd/tsd.go +++ b/tsd/tsd.go @@ -22,7 +22,6 @@ import ( "reflect" "tailscale.com/control/controlknobs" - "tailscale.com/drive" "tailscale.com/health" "tailscale.com/ipn" "tailscale.com/ipn/conffile" @@ -47,8 +46,6 @@ type System struct { Tun SubSystem[*tstun.Wrapper] StateStore SubSystem[ipn.StateStore] Netstack SubSystem[NetstackImpl] // actually a *netstack.Impl - DriveForLocal SubSystem[drive.FileSystemForLocal] - DriveForRemote SubSystem[drive.FileSystemForRemote] // InitialConfig is initial server config, if any. // It is nil if the node is not in declarative mode. @@ -100,10 +97,6 @@ func (s *System) Set(v any) { s.StateStore.Set(v) case NetstackImpl: s.Netstack.Set(v) - case drive.FileSystemForLocal: - s.DriveForLocal.Set(v) - case drive.FileSystemForRemote: - s.DriveForRemote.Set(v) default: panic(fmt.Sprintf("unknown type %T", v)) } diff --git a/wgengine/userspace.go b/wgengine/userspace.go index 3c49f16de..3698f7ee3 100644 --- a/wgengine/userspace.go +++ b/wgengine/userspace.go @@ -19,7 +19,6 @@ import ( "github.com/tailscale/wireguard-go/device" "github.com/tailscale/wireguard-go/tun" "tailscale.com/control/controlknobs" - "tailscale.com/drive" "tailscale.com/envknob" "tailscale.com/health" "tailscale.com/ipn/ipnstate" @@ -203,10 +202,6 @@ type Config struct { // SetSubsystem, if non-nil, is called for each new subsystem created, just before a successful return. SetSubsystem func(any) - - // DriveForLocal, if populated, will cause the engine to expose a Taildrive - // listener at 100.100.100.100:8080. - DriveForLocal drive.FileSystemForLocal } // NewFakeUserspaceEngine returns a new userspace engine for testing. @@ -490,9 +485,6 @@ func NewUserspaceEngine(logf logger.Logf, conf Config) (_ Engine, reterr error) conf.SetSubsystem(conf.Router) conf.SetSubsystem(conf.Dialer) conf.SetSubsystem(e.netMon) - if conf.DriveForLocal != nil { - conf.SetSubsystem(conf.DriveForLocal) - } } e.logf("Engine created.")