Compare commits
1 Commits
v1.11.10
...
release/v1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
954186291f |
@@ -1,10 +1,5 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## v1.11.10
|
|
||||||
### Fixed
|
|
||||||
* Archives randomly ignoring files and directories ([#5027](https://github.com/pterodactyl/panel/issues/5027))
|
|
||||||
* Crash when deleting or transferring a server ([#5028](https://github.com/pterodactyl/panel/issues/5028))
|
|
||||||
|
|
||||||
## v1.11.9
|
## v1.11.9
|
||||||
### Changed
|
### Changed
|
||||||
* Release binaries are now built with Go 1.21.8
|
* Release binaries are now built with Go 1.21.8
|
||||||
|
|||||||
@@ -227,19 +227,20 @@ func deleteServer(c *gin.Context) {
|
|||||||
//
|
//
|
||||||
// In addition, servers with large amounts of files can take some time to finish deleting,
|
// In addition, servers with large amounts of files can take some time to finish deleting,
|
||||||
// so we don't want to block the HTTP call while waiting on this.
|
// so we don't want to block the HTTP call while waiting on this.
|
||||||
go func(s *server.Server) {
|
go func(p string) {
|
||||||
fs := s.Filesystem()
|
_ = s.Filesystem().UnixFS().Close()
|
||||||
p := fs.Path()
|
|
||||||
_ = fs.UnixFS().Close()
|
|
||||||
if err := os.RemoveAll(p); err != nil {
|
if err := os.RemoveAll(p); err != nil {
|
||||||
log.WithFields(log.Fields{"path": p, "error": err}).Warn("failed to remove server files during deletion process")
|
log.WithFields(log.Fields{"path": p, "error": err}).Warn("failed to remove server files during deletion process")
|
||||||
}
|
}
|
||||||
}(s)
|
}(s.Filesystem().Path())
|
||||||
|
|
||||||
middleware.ExtractManager(c).Remove(func(server *server.Server) bool {
|
middleware.ExtractManager(c).Remove(func(server *server.Server) bool {
|
||||||
return server.ID() == s.ID()
|
return server.ID() == s.ID()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Deallocate the reference to this server.
|
||||||
|
s = nil
|
||||||
|
|
||||||
c.Status(http.StatusNoContent)
|
c.Status(http.StatusNoContent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,9 +66,10 @@ type Archive struct {
|
|||||||
// BaseDirectory .
|
// BaseDirectory .
|
||||||
BaseDirectory string
|
BaseDirectory string
|
||||||
|
|
||||||
// Files specifies the files to archive, this takes priority over the Ignore
|
// Files specifies the files to archive, this takes priority over the Ignore option, if
|
||||||
// option, if unspecified, all files in the BaseDirectory will be archived
|
// unspecified, all files in the BasePath will be archived unless Ignore is set.
|
||||||
// unless Ignore is set.
|
//
|
||||||
|
// All items in Files must be absolute within BasePath.
|
||||||
Files []string
|
Files []string
|
||||||
|
|
||||||
// Progress wraps the writer of the archive to pass through the progress tracker.
|
// Progress wraps the writer of the archive to pass through the progress tracker.
|
||||||
@@ -113,16 +114,11 @@ func (a *Archive) Stream(ctx context.Context, w io.Writer) error {
|
|||||||
return errors.New("filesystem: archive.Filesystem is unset")
|
return errors.New("filesystem: archive.Filesystem is unset")
|
||||||
}
|
}
|
||||||
|
|
||||||
if filesLen := len(a.Files); filesLen > 0 {
|
for i, f := range a.Files {
|
||||||
files := make([]string, filesLen)
|
if !strings.HasPrefix(f, a.Filesystem.Path()) {
|
||||||
for i, f := range a.Files {
|
continue
|
||||||
if !strings.HasPrefix(f, a.Filesystem.Path()) {
|
|
||||||
files[i] = f
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
files[i] = strings.TrimPrefix(strings.TrimPrefix(f, a.Filesystem.Path()), "/")
|
|
||||||
}
|
}
|
||||||
a.Files = files
|
a.Files[i] = strings.TrimPrefix(strings.TrimPrefix(f, a.Filesystem.Path()), "/")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Choose which compression level to use based on the compression_level configuration option
|
// Choose which compression level to use based on the compression_level configuration option
|
||||||
@@ -132,6 +128,8 @@ func (a *Archive) Stream(ctx context.Context, w io.Writer) error {
|
|||||||
compressionLevel = pgzip.NoCompression
|
compressionLevel = pgzip.NoCompression
|
||||||
case "best_compression":
|
case "best_compression":
|
||||||
compressionLevel = pgzip.BestCompression
|
compressionLevel = pgzip.BestCompression
|
||||||
|
case "best_speed":
|
||||||
|
fallthrough
|
||||||
default:
|
default:
|
||||||
compressionLevel = pgzip.BestSpeed
|
compressionLevel = pgzip.BestSpeed
|
||||||
}
|
}
|
||||||
@@ -198,9 +196,6 @@ func (a *Archive) callback(opts ...walkFunc) walkFunc {
|
|||||||
// a non-nil error we will exit immediately.
|
// a non-nil error we will exit immediately.
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
if err := opt(dirfd, name, relative, d); err != nil {
|
if err := opt(dirfd, name, relative, d); err != nil {
|
||||||
if err == SkipThis {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -211,8 +206,6 @@ func (a *Archive) callback(opts ...walkFunc) walkFunc {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var SkipThis = errors.New("skip this")
|
|
||||||
|
|
||||||
// Pushes only files defined in the Files key to the final archive.
|
// Pushes only files defined in the Files key to the final archive.
|
||||||
func (a *Archive) withFilesCallback() walkFunc {
|
func (a *Archive) withFilesCallback() walkFunc {
|
||||||
return a.callback(func(_ int, _, relative string, _ ufs.DirEntry) error {
|
return a.callback(func(_ int, _, relative string, _ ufs.DirEntry) error {
|
||||||
@@ -232,7 +225,7 @@ func (a *Archive) withFilesCallback() walkFunc {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return SkipThis
|
return ufs.SkipDir
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ import (
|
|||||||
"github.com/pterodactyl/wings/internal/ufs"
|
"github.com/pterodactyl/wings/internal/ufs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TODO: detect and enable
|
||||||
|
var useOpenat2 = true
|
||||||
|
|
||||||
type Filesystem struct {
|
type Filesystem struct {
|
||||||
unixFS *ufs.Quota
|
unixFS *ufs.Quota
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
package system
|
package system
|
||||||
|
|
||||||
var Version = "develop"
|
var Version = "1.11.9"
|
||||||
|
|||||||
Reference in New Issue
Block a user