cciplist.go 2.9 KB

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