limit.go 336 B

123456789101112131415161718192021
  1. package main
  2. import (
  3. "log"
  4. "github.com/gin-gonic/gin"
  5. "github.com/manucorporat/stats"
  6. )
  7. var ips = stats.New()
  8. func ratelimit(c *gin.Context) {
  9. ip := c.ClientIP()
  10. value := uint64(ips.Add(ip, 1))
  11. if value >= 1000 {
  12. if value%1000 == 0 {
  13. log.Printf("BlockedIP:%s Requests:%d\n", ip, value)
  14. }
  15. c.AbortWithStatus(401)
  16. }
  17. }