added sftp client implementation

This commit is contained in:
ston1th 2022-04-02 20:05:07 +02:00
commit ce73f0472c
175 changed files with 28135 additions and 13 deletions

View file

@ -40,6 +40,10 @@ func MetadataGenerator(file string, dst provider.FS) error {
if !filepath.IsAbs(file) {
return errors.New("metadata path is not absolute")
}
_, err := dst.Fstat(0)
if err == provider.ErrFstat {
return err
}
f, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE, 0o640)
if err != nil {
return err
@ -99,7 +103,7 @@ func NewMetadataHandler(ctx context.Context, fs *FS, file, dst string, log logr.
return
}
err = json.NewDecoder(mh.f).Decode(&mh.md)
if err != nil && err == io.EOF {
if err != nil && err != io.EOF {
return
}
mh.enc = json.NewEncoder(mh.f)
@ -281,8 +285,10 @@ func (mh *MetadataHandler) flush() {
func (mh *MetadataHandler) close() {
mh.mu.Lock()
for _, md := range mh.md {
md.f.Sync()
md.f.Close()
if md.f != nil {
md.f.Sync()
md.f.Close()
}
}
mh.mu.Unlock()
mh.flush()