Manu Mtz-Almeida 10 лет назад
Родитель
Сommit
313d05ed68
2 измененных файлов с 18 добавлено и 1 удалено
  1. 15 0
      examples/realtime-advanced/limit.go
  2. 3 1
      examples/realtime-advanced/main.go

+ 15 - 0
examples/realtime-advanced/limit.go

@@ -0,0 +1,15 @@
+package main
+
+import "github.com/gin-gonic/gin"
+
+import "github.com/manucorporat/stats"
+
+var ips = stats.New()
+
+func ratelimit(c *gin.Context) {
+	ip := c.ClientIP()
+	value := ips.Add(ip, 1)
+	if value > 1000 {
+		c.AbortWithStatus(401)
+	}
+}

+ 3 - 1
examples/realtime-advanced/main.go

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