nezha/cmd/dashboard/controller/waf.go

77 lines
1.7 KiB
Go
Raw Normal View History

package controller
import (
2024-12-21 05:34:46 -05:00
"strconv"
"github.com/gin-gonic/gin"
2024-11-28 06:38:54 -05:00
"github.com/nezhahq/nezha/model"
"github.com/nezhahq/nezha/service/singleton"
)
// List blocked addresses
// @Summary List blocked addresses
// @Security BearerAuth
// @Schemes
// @Description List server
// @Tags auth required
2024-12-21 06:16:28 -05:00
// @Param limit query uint false "Page limit"
// @Param offset query uint false "Page offset"
// @Produce json
2024-12-21 10:18:43 -05:00
// @Success 200 {object} model.PaginatedResponse[[]model.WAFApiMock, model.WAFApiMock]
// @Router /waf [get]
2024-12-21 08:23:09 -05:00
func listBlockedAddress(c *gin.Context) (*model.Value[[]*model.WAF], error) {
2024-12-21 06:22:37 -05:00
limit, err := strconv.Atoi(c.Query("limit"))
2024-12-21 06:16:28 -05:00
if err != nil || limit < 1 {
limit = 25
}
2024-12-21 05:34:46 -05:00
2024-12-21 06:22:37 -05:00
offset, err := strconv.Atoi(c.Query("offset"))
2024-12-21 07:25:31 -05:00
if err != nil || offset < 0 {
offset = 0
2024-12-21 05:34:46 -05:00
}
var waf []*model.WAF
2024-12-21 06:22:37 -05:00
if err := singleton.DB.Limit(limit).Offset(offset).Find(&waf).Error; err != nil {
return nil, err
}
2024-12-21 08:23:09 -05:00
var total int64
if err := singleton.DB.Model(&model.WAF{}).Count(&total).Error; err != nil {
return nil, err
}
return &model.Value[[]*model.WAF]{
Value: waf,
Pagination: model.Pagination{
Offset: offset,
Limit: limit,
Total: total,
},
}, nil
}
// Batch delete blocked addresses
// @Summary Edit server
// @Security BearerAuth
// @Schemes
// @Description Edit server
// @Tags auth required
// @Accept json
// @Param request body []string true "block list"
// @Produce json
// @Success 200 {object} model.CommonResponse[any]
// @Router /batch-delete/waf [patch]
func batchDeleteBlockedAddress(c *gin.Context) (any, error) {
var list []string
if err := c.ShouldBindJSON(&list); err != nil {
return nil, err
}
if err := model.BatchClearIP(singleton.DB, list); err != nil {
return nil, newGormError("%v", err)
}
return nil, nil
}