cc.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 CcHandler struct {
  12. *handler.Handler
  13. ccService waf.CcService
  14. wafLogService admin.WafLogService
  15. }
  16. func NewCcHandler(
  17. handler *handler.Handler,
  18. ccService waf.CcService,
  19. wafLogService admin.WafLogService,
  20. ) *CcHandler {
  21. return &CcHandler{
  22. Handler: handler,
  23. ccService: ccService,
  24. wafLogService : wafLogService,
  25. }
  26. }
  27. func (h *CcHandler) GetCcList(ctx *gin.Context) {
  28. var req v1.CCListRequest
  29. if err := ctx.ShouldBind(&req); err != nil {
  30. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  31. return
  32. }
  33. resp, err := h.ccService.GetCcList(ctx, req)
  34. if err != nil {
  35. v1.HandleError(ctx, http.StatusInternalServerError, err, err.Error())
  36. return
  37. }
  38. v1.HandleSuccess(ctx, resp)
  39. }
  40. func (h *CcHandler) EditCcState(ctx *gin.Context) {
  41. var req v1.CCStateRequest
  42. if err := ctx.ShouldBind(&req); err != nil {
  43. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  44. return
  45. }
  46. err := h.ccService.EditCcState(ctx, req)
  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 *CcHandler) AddWhiteOneClick (ctx *gin.Context) {
  62. var req v1.CCStateRequest
  63. if err := ctx.ShouldBind(&req); err != nil {
  64. v1.HandleError(ctx, http.StatusBadRequest, v1.ErrBadRequest, err.Error())
  65. return
  66. }
  67. err := h.ccService.AddWhiteOneClick(ctx, req)
  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. }