mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-30 05:25:35 +00:00
abab0d4197
- Restyles tailfs -> tailFS - Defines interfaces for main TailFS types - Moves implemenatation of TailFS into tailfsimpl package Updates tailscale/corp#16827 Signed-off-by: Percy Wegmann <percy@tailscale.com>
38 lines
1.3 KiB
Go
38 lines
1.3 KiB
Go
// Copyright (c) Tailscale Inc & AUTHORS
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
// Package tailfs provides a filesystem that allows sharing folders between
|
|
// Tailscale nodes using WebDAV. The actual implementation of the core TailFS
|
|
// functionality lives in package tailfsimpl. These packages are separated to
|
|
// allow users of tailfs to refer to the interfaces without having a hard
|
|
// dependency on tailfs, so that programs which don't actually use tailfs can
|
|
// avoid its transitive dependencies.
|
|
package tailfs
|
|
|
|
import (
|
|
"net"
|
|
"net/http"
|
|
)
|
|
|
|
// Remote represents a remote TailFS node.
|
|
type Remote struct {
|
|
Name string
|
|
URL string
|
|
Available func() bool
|
|
}
|
|
|
|
// FileSystemForLocal is the TailFS filesystem exposed to local clients. It
|
|
// provides a unified WebDAV interface to remote TailFS shares on other nodes.
|
|
type FileSystemForLocal interface {
|
|
// HandleConn handles connections from local WebDAV clients
|
|
HandleConn(conn net.Conn, remoteAddr net.Addr) error
|
|
|
|
// SetRemotes sets the complete set of remotes on the given tailnet domain
|
|
// using a map of name -> url. If transport is specified, that transport
|
|
// will be used to connect to these remotes.
|
|
SetRemotes(domain string, remotes []*Remote, transport http.RoundTripper)
|
|
|
|
// Close() stops serving the WebDAV content
|
|
Close() error
|
|
}
|