Better rate limiting

This commit is contained in:
Manu Mtz-Almeida 2015-05-13 03:45:17 +02:00
parent 7e6153dc33
commit 9386d78673
2 changed files with 11 additions and 4 deletions
examples/realtime-advanced

View File

@ -1,6 +1,10 @@
package main
import "github.com/gin-gonic/gin"
import (
"log"
"github.com/gin-gonic/gin"
)
import "github.com/manucorporat/stats"
@ -8,8 +12,11 @@ var ips = stats.New()
func ratelimit(c *gin.Context) {
ip := c.ClientIP()
value := ips.Add(ip, 1)
if value > 400 {
value := uint64(ips.Add(ip, 1))
if value >= 400 {
if value%400 == 0 {
log.Printf("BlockedIP:%s Requests:%d\n", ip, value)
}
c.AbortWithStatus(401)
}
}

View File

@ -9,7 +9,7 @@ import (
func main() {
router := gin.New()
router.Use(gin.Logger(), ratelimit)
router.Use(ratelimit, gin.Recovery(), gin.Logger())
router.LoadHTMLGlob("resources/*.templ.html")
router.Static("/static", "resources/static")