mirror of
https://github.com/tailscale/tailscale.git
synced 2025-07-31 16:23:44 +00:00
ipnlocal: add MoveFilesTo method
Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
This commit is contained in:
parent
cf2beafbcd
commit
12306507da
@ -1994,6 +1994,16 @@ func (b *LocalBackend) WaitingFiles() ([]WaitingFile, error) {
|
|||||||
return apiSrv.WaitingFiles()
|
return apiSrv.WaitingFiles()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *LocalBackend) MoveFilesTo(dir string) (filesMoved []string, err error) {
|
||||||
|
b.mu.Lock()
|
||||||
|
apiSrv := b.peerAPIServer
|
||||||
|
b.mu.Unlock()
|
||||||
|
if apiSrv == nil {
|
||||||
|
return nil, errors.New("peerapi disabled")
|
||||||
|
}
|
||||||
|
return apiSrv.MoveFilesTo(dir)
|
||||||
|
}
|
||||||
|
|
||||||
func (b *LocalBackend) DeleteFile(name string) error {
|
func (b *LocalBackend) DeleteFile(name string) error {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
apiSrv := b.peerAPIServer
|
apiSrv := b.peerAPIServer
|
||||||
|
@ -135,6 +135,51 @@ func (s *peerAPIServer) WaitingFiles() (ret []WaitingFile, err error) {
|
|||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *peerAPIServer) MoveFilesTo(dir string) (filesMoved []string, err error) {
|
||||||
|
defer func() {
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("MoveFilesTo: %w", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
if s.rootDir == "" {
|
||||||
|
return nil, errors.New("peerapi disabled; reconsider life choices TODO")
|
||||||
|
}
|
||||||
|
f, err := os.Open(s.rootDir)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
for {
|
||||||
|
des, err := f.ReadDir(10)
|
||||||
|
if err == io.EOF {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
return filesMoved, err
|
||||||
|
}
|
||||||
|
for _, de := range des {
|
||||||
|
if strings.HasSuffix(de.Name(), partialSuffix) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !de.Type().IsRegular() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
tsdir := filepath.Join(dir, "Tailscale")
|
||||||
|
if err := os.MkdirAll(tsdir, 0777); err != nil {
|
||||||
|
return filesMoved, err
|
||||||
|
}
|
||||||
|
dst := filepath.Join(tsdir, filepath.Base(de.Name()))
|
||||||
|
err = os.Rename(filepath.Join(s.rootDir, de.Name()), dst)
|
||||||
|
if err != nil {
|
||||||
|
return filesMoved, err
|
||||||
|
}
|
||||||
|
filesMoved = append(filesMoved, dst)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return filesMoved, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *peerAPIServer) DeleteFile(baseName string) error {
|
func (s *peerAPIServer) DeleteFile(baseName string) error {
|
||||||
if s.rootDir == "" {
|
if s.rootDir == "" {
|
||||||
return errors.New("peerapi disabled; no storage configured")
|
return errors.New("peerapi disabled; no storage configured")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user