Fix: delete node in admin panel

pull/1040/head
HFO4 4 years ago
parent 9d436e0504
commit 0d9aeb1d98

@ -10,6 +10,7 @@ import (
"github.com/cloudreve/Cloudreve/v3/pkg/mq" "github.com/cloudreve/Cloudreve/v3/pkg/mq"
"github.com/cloudreve/Cloudreve/v3/pkg/serializer" "github.com/cloudreve/Cloudreve/v3/pkg/serializer"
"github.com/cloudreve/Cloudreve/v3/pkg/util" "github.com/cloudreve/Cloudreve/v3/pkg/util"
"github.com/gofrs/uuid"
"net/url" "net/url"
"os" "os"
"path/filepath" "path/filepath"
@ -182,10 +183,11 @@ func (r *rpcService) Init() error {
func (r *rpcService) CreateTask(task *model.Download, groupOptions map[string]interface{}) (string, error) { func (r *rpcService) CreateTask(task *model.Download, groupOptions map[string]interface{}) (string, error) {
r.parent.lock.RLock() r.parent.lock.RLock()
// 生成存储路径 // 生成存储路径
guid, _ := uuid.NewV4()
path := filepath.Join( path := filepath.Join(
r.parent.Model.Aria2OptionsSerialized.TempPath, r.parent.Model.Aria2OptionsSerialized.TempPath,
"aria2", "aria2",
strconv.FormatInt(time.Now().UnixNano(), 10), guid.String(),
) )
r.parent.lock.RUnlock() r.parent.lock.RUnlock()

@ -465,3 +465,14 @@ func AdminToggleNode(c *gin.Context) {
c.JSON(200, ErrorResponse(err)) c.JSON(200, ErrorResponse(err))
} }
} }
// AdminDeleteGroup 删除用户组
func AdminDeleteNode(c *gin.Context) {
var service admin.NodeService
if err := c.ShouldBindUri(&service); err == nil {
res := service.Delete()
c.JSON(200, res)
} else {
c.JSON(200, ErrorResponse(err))
}
}

@ -456,6 +456,8 @@ func InitMasterRouter() *gin.Engine {
node.POST("", controllers.AdminAddNode) node.POST("", controllers.AdminAddNode)
// 启用/暂停节点 // 启用/暂停节点
node.PATCH("enable/:id/:desired", controllers.AdminToggleNode) node.PATCH("enable/:id/:desired", controllers.AdminToggleNode)
// 删除节点
node.DELETE(":id", controllers.AdminDeleteNode)
} }
} }

@ -95,3 +95,29 @@ func (service *ToggleNodeService) Toggle() serializer.Response {
return serializer.Response{} return serializer.Response{}
} }
// NodeService 节点ID服务
type NodeService struct {
ID uint `uri:"id" json:"id" binding:"required"`
}
// Delete 删除节点
func (service *NodeService) Delete() serializer.Response {
// 查找用户组
node, err := model.GetNodeByID(service.ID)
if err != nil {
return serializer.Err(serializer.CodeNotFound, "节点不存在", err)
}
// 是否为系统节点
if node.ID <= 1 {
return serializer.Err(serializer.CodeNoPermissionErr, "系统节点无法删除", err)
}
cluster.Default.Delete(node.ID)
if err := model.DB.Delete(&node).Error; err != nil {
return serializer.DBErr("无法删除节点", err)
}
return serializer.Response{}
}

Loading…
Cancel
Save