cciplist.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package waf
  2. import (
  3. "github.com/gin-gonic/gin"
  4. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  5. adminApi "github.com/go-nunu/nunu-layout-advanced/api/v1/admin"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/handler"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/service/admin"
  8. "github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf"
  9. "net/http"
  10. )
  11. type CcIpListHandler struct {
  12. *handler.Handler
  13. ccIpListService waf.CcIpListService
  14. wafLogService admin.WafLogService
  15. }
  16. func NewCcIpListHandler(
  17. handler *handler.Handler,
  18. ccIpListService waf.CcIpListService,
  19. wafLogService admin.WafLogService,
  20. ) *CcIpListHandler {
  21. return &CcIpListHandler{
  22. Handler: handler,
  23. ccIpListService: ccIpListService,
  24. wafLogService : wafLogService,
  25. }
  26. }
  27. func (h *CcIpListHandler) GetCcIpList(ctx *gin.Context) {
  28. var req v1.GetCcIpList
  29. if err := ctx.ShouldBind(&req); err != nil {
  30. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  31. return
  32. }
  33. res, err := h.ccIpListService.GetCcIpList(ctx, req.WebId)
  34. if err != nil {
  35. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  36. return
  37. }
  38. v1.HandleSuccess(ctx, res)
  39. }
  40. func (h *CcIpListHandler) AddCcIpList(ctx *gin.Context) {
  41. var req v1.CcIpList
  42. if err := ctx.ShouldBind(&req); err != nil {
  43. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  44. return
  45. }
  46. err := h.ccIpListService.AddCcWhiteIp(ctx, req.WebId,req.NewIp,req.Comment)
  47. if err != nil {
  48. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  49. return
  50. }
  51. go h.wafLogService.PublishIpWafLogTask(ctx,adminApi.WafLog{
  52. Uid: int(req.Uid),
  53. RequestIp: ctx.ClientIP(), // 复制 ClientIP
  54. UserAgent: ctx.Request.UserAgent(), // 复制 UserAgent
  55. Api: ctx.Request.URL.Path, // 复制 Path
  56. HostId: int(req.HostId),
  57. ExtraData: req,
  58. })
  59. v1.HandleSuccess(ctx, nil)
  60. }
  61. func (h *CcIpListHandler) DelCcIpList(ctx *gin.Context) {
  62. var req v1.DelCcIpList
  63. if err := ctx.ShouldBind(&req); err != nil {
  64. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  65. return
  66. }
  67. err := h.ccIpListService.DelCcWhiteIp(ctx, req.WebId,req.Ips)
  68. if err != nil {
  69. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  70. return
  71. }
  72. go h.wafLogService.PublishIpWafLogTask(ctx,adminApi.WafLog{
  73. Uid: int(req.Uid),
  74. RequestIp: ctx.ClientIP(), // 复制 ClientIP
  75. UserAgent: ctx.Request.UserAgent(), // 复制 UserAgent
  76. Api: ctx.Request.URL.Path, // 复制 Path
  77. HostId: int(req.HostId),
  78. ExtraData: req,
  79. })
  80. v1.HandleSuccess(ctx, nil)
  81. }
  82. func (h *CcIpListHandler) EditCcIpList(ctx *gin.Context) {
  83. var req v1.CcIpList
  84. if err := ctx.ShouldBind(&req); err != nil {
  85. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  86. return
  87. }
  88. err := h.ccIpListService.EditCcWhiteIp(ctx, req.WebId,req.OldIp,req.NewIp,req.Comment)
  89. if err != nil {
  90. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  91. return
  92. }
  93. v1.HandleSuccess(ctx, nil)
  94. }