IP Blacklist

This commit is contained in:
2025-03-29 00:26:05 +08:00
parent 105ec693f8
commit f3f9ebb5af
4 changed files with 46 additions and 1 deletions

View File

@ -0,0 +1,34 @@
package web
import (
"bufio"
"os"
"github.com/rs/zerolog/log"
)
var ipBlocklist []string
func AddBlockIP(ip string) {
ipBlocklist = append(ipBlocklist, ip)
}
func ParseBlockIPList(path string) error {
file, err := os.Open(path)
if err != nil {
return err
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
ipBlocklist = append(ipBlocklist, scanner.Text())
}
if err := scanner.Err(); err != nil {
return err
}
log.Info().Int("count", len(ipBlocklist)).Msg("Block IP list parsed successfully.")
return nil
}

View File

@ -51,7 +51,13 @@ func NewServer() *WebApp {
},
}))
app.Use(auth.ContextMiddleware)
app.Use(func(c *fiber.Ctx) error {
if lo.Contains(ipBlocklist, c.IP()) {
return fiber.NewError(fiber.StatusForbidden, "your ip has been listed in the blacklist")
}
return c.Next()
})
app.Use(limiter.New(limiter.Config{
Max: viper.GetInt("rate_limit"),
Expiration: 60 * time.Second,
@ -69,6 +75,8 @@ func NewServer() *WebApp {
},
}))
app.Use(auth.ContextMiddleware)
api.MapControllers(app)
return &WebApp{app}