feat: integrate new rate limiter into server

This commit is contained in:
2026-05-06 23:20:24 +02:00
parent d234c9b0ba
commit 9e6fc2a243
2 changed files with 18 additions and 11 deletions

View File

@@ -35,6 +35,14 @@ func main() {
jikanClient := jikan.NewClient(queries)
authLimiter := server.NewAuthLimiter()
go func() {
for {
time.Sleep(time.Minute)
authLimiter.Cleanup(time.Now())
}
}()
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
defer stop()
@@ -45,6 +53,7 @@ func main() {
SQLDB: dbConn,
JikanClient: jikanClient,
AuthService: auth.NewService(queries),
AuthLimiter: authLimiter,
PlaybackProxySecret: playbackSecret(),
}

View File

@@ -22,6 +22,7 @@ type Config struct {
SQLDB *sql.DB
JikanClient *jikan.Client
AuthService *auth.Service
AuthLimiter *pkgmiddleware.Limiter
PlaybackProxySecret string
}
@@ -42,6 +43,13 @@ func withMimeTypes(next http.Handler) http.Handler {
})
}
func NewAuthLimiter() *pkgmiddleware.Limiter {
return pkgmiddleware.NewLimiter(pkgmiddleware.Config{
MaxAttempts: 5,
Window: time.Minute,
})
}
func NewRouter(cfg Config) http.Handler {
mux := http.NewServeMux()
@@ -115,22 +123,12 @@ func NewRouter(cfg Config) http.Handler {
mux.HandleFunc("/api/watch/episode/", playbackHandler.HandleEpisodeData)
mux.HandleFunc("/api/watch/thumbnails/", playbackHandler.HandleEpisodeThumbnails)
authLimiter := pkgmiddleware.NewLimiter(pkgmiddleware.Config{
MaxAttempts: 5,
Window: time.Minute,
})
go func() {
for range time.Tick(time.Minute) {
authLimiter.Cleanup(time.Now())
}
}()
// Auth Endpoints
mux.HandleFunc("/login", func(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
authHandler.HandleLoginPage(w, r)
} else {
authLimiter.AuthMiddleware(pkgmiddleware.VerifyOrigin(http.HandlerFunc(authHandler.HandleLogin))).ServeHTTP(w, r)
cfg.AuthLimiter.AuthMiddleware(pkgmiddleware.VerifyOrigin(http.HandlerFunc(authHandler.HandleLogin))).ServeHTTP(w, r)
}
})
mux.HandleFunc("/logout", authHandler.HandleLogout)