Support data coming from the panel better
This commit is contained in:
parent
151b00de23
commit
1e2da95d26
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -46,3 +46,4 @@ test_*/
|
||||||
!.gitkeep
|
!.gitkeep
|
||||||
debug
|
debug
|
||||||
data/.states.json
|
data/.states.json
|
||||||
|
.DS_Store
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package router
|
package router
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/pterodactyl/wings/server"
|
"github.com/pterodactyl/wings/server"
|
||||||
"github.com/pterodactyl/wings/server/backup"
|
"github.com/pterodactyl/wings/server/backup"
|
||||||
|
@ -12,14 +14,27 @@ import (
|
||||||
func postServerBackup(c *gin.Context) {
|
func postServerBackup(c *gin.Context) {
|
||||||
s := GetServer(c.Param("server"))
|
s := GetServer(c.Param("server"))
|
||||||
|
|
||||||
data := &backup.LocalBackup{}
|
data := &backup.Request{}
|
||||||
c.BindJSON(&data)
|
c.BindJSON(&data)
|
||||||
|
|
||||||
go func(b *backup.LocalBackup, serv *server.Server) {
|
switch data.Adapter {
|
||||||
if err := serv.BackupLocal(b); err != nil {
|
case backup.LocalBackupAdapter:
|
||||||
zap.S().Errorw("failed to generate backup for server", zap.Error(err))
|
adapter, err := data.NewLocalBackup()
|
||||||
|
if err != nil {
|
||||||
|
TrackedServerError(err, s).AbortWithServerError(c)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}(data, s)
|
|
||||||
|
go func(b *backup.LocalBackup, serv *server.Server) {
|
||||||
|
if err := serv.BackupLocal(b); err != nil {
|
||||||
|
zap.S().Errorw("failed to generate backup for server", zap.Error(err))
|
||||||
|
}
|
||||||
|
}(adapter, s)
|
||||||
|
case backup.S3BackupAdapter:
|
||||||
|
TrackedServerError(errors.New(fmt.Sprintf("unsupported backup adapter [%s] provided", data.Adapter)), s).AbortWithServerError(c)
|
||||||
|
default:
|
||||||
|
TrackedServerError(errors.New(fmt.Sprintf("unknown backup adapter [%s] provided", data.Adapter)), s).AbortWithServerError(c)
|
||||||
|
}
|
||||||
|
|
||||||
c.Status(http.StatusAccepted)
|
c.Status(http.StatusAccepted)
|
||||||
}
|
}
|
||||||
|
@ -40,4 +55,4 @@ func deleteServerBackup(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
c.Status(http.StatusNoContent)
|
c.Status(http.StatusNoContent)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,35 @@
|
||||||
package backup
|
package backup
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
"github.com/pterodactyl/wings/api"
|
"github.com/pterodactyl/wings/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
LocalBackupAdapter = "local"
|
||||||
|
S3BackupAdapter = "s3"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Request struct {
|
||||||
|
Adapter string `json:"adapter"`
|
||||||
|
Uuid string `json:"uuid"`
|
||||||
|
IgnoredFiles []string `json:"ignored_files"`
|
||||||
|
PresignedUrl string `json:"presigned_url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generates a new local backup struct.
|
||||||
|
func (r *Request) NewLocalBackup() (*LocalBackup, error) {
|
||||||
|
if r.Adapter != LocalBackupAdapter {
|
||||||
|
return nil, errors.New(fmt.Sprintf("cannot create local backup using [%s] adapter", r.Adapter))
|
||||||
|
}
|
||||||
|
|
||||||
|
return &LocalBackup{
|
||||||
|
Uuid: r.Uuid,
|
||||||
|
IgnoredFiles: r.IgnoredFiles,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
type Backup interface {
|
type Backup interface {
|
||||||
// Returns the UUID of this backup as tracked by the panel instance.
|
// Returns the UUID of this backup as tracked by the panel instance.
|
||||||
Identifier() string
|
Identifier() string
|
||||||
|
@ -39,4 +65,4 @@ func (ad *ArchiveDetails) ToRequest(successful bool) api.BackupRequest {
|
||||||
Size: ad.Size,
|
Size: ad.Size,
|
||||||
Successful: successful,
|
Successful: successful,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user