server(fs): keep file mode when extracting archive
This commit is contained in:
@@ -2,12 +2,14 @@ package server
|
||||
|
||||
import (
|
||||
"io"
|
||||
"io/fs"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"emperror.dev/errors"
|
||||
"github.com/apex/log"
|
||||
"github.com/docker/docker/client"
|
||||
|
||||
"github.com/pterodactyl/wings/environment"
|
||||
"github.com/pterodactyl/wings/remote"
|
||||
"github.com/pterodactyl/wings/server/backup"
|
||||
@@ -150,9 +152,12 @@ func (s *Server) RestoreBackup(b backup.BackupInterface, reader io.ReadCloser) (
|
||||
// Attempt to restore the backup to the server by running through each entry
|
||||
// in the file one at a time and writing them to the disk.
|
||||
s.Log().Debug("starting file writing process for backup restoration")
|
||||
err = b.Restore(s.Context(), reader, func(file string, r io.Reader) error {
|
||||
err = b.Restore(s.Context(), reader, func(file string, r io.Reader, mode fs.FileMode) error {
|
||||
s.Events().Publish(DaemonMessageEvent, "(restoring): "+file)
|
||||
return s.Filesystem().Writefile(file, r)
|
||||
if err := s.Filesystem().Writefile(file, r); err != nil {
|
||||
return err
|
||||
}
|
||||
return s.Filesystem().Chmod(file, mode)
|
||||
})
|
||||
|
||||
return errors.WithStackIf(err)
|
||||
|
||||
Reference in New Issue
Block a user