mirror of https://github.com/velour/catbase.git
bot: add rate limiting
- emojy: lazy load images so they don't break/spam the server
This commit is contained in:
parent
7c0a777737
commit
37e4dcb5c8
34
bot/bot.go
34
bot/bot.go
|
@ -4,6 +4,8 @@ package bot
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
"github.com/go-chi/httprate"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"os"
|
||||
|
@ -14,7 +16,6 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/go-chi/chi/v5"
|
||||
"github.com/go-chi/chi/v5/middleware"
|
||||
"github.com/jmoiron/sqlx"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/velour/catbase/bot/history"
|
||||
|
@ -120,21 +121,34 @@ func New(config *config.Config, connector Connector) Bot {
|
|||
|
||||
log.Debug().Msgf("created web router")
|
||||
|
||||
// Make the http logger optional
|
||||
// It has never served a purpose in production and with the emojy page, can make a rather noisy log
|
||||
if bot.Config().GetInt("bot.useLogger", 0) == 1 {
|
||||
bot.router.Use(middleware.Logger)
|
||||
}
|
||||
bot.router.Use(middleware.StripSlashes)
|
||||
|
||||
bot.router.HandleFunc("/", bot.serveRoot)
|
||||
bot.router.HandleFunc("/nav", bot.serveNav)
|
||||
bot.setupHTTP()
|
||||
|
||||
connector.RegisterEvent(bot.Receive)
|
||||
|
||||
return bot
|
||||
}
|
||||
|
||||
func (b *bot) setupHTTP() {
|
||||
// Make the http logger optional
|
||||
// It has never served a purpose in production and with the emojy page, can make a rather noisy log
|
||||
if b.Config().GetInt("bot.useLogger", 0) == 1 {
|
||||
b.router.Use(middleware.Logger)
|
||||
}
|
||||
|
||||
reqCount := b.Config().GetInt("bot.httprate.requests", 500)
|
||||
reqTime := time.Duration(b.Config().GetInt("bot.httprate.seconds", 5))
|
||||
if reqCount > 0 && reqTime > 0 {
|
||||
b.router.Use(httprate.LimitByIP(reqCount, reqTime*time.Second))
|
||||
}
|
||||
|
||||
b.router.Use(middleware.RequestID)
|
||||
b.router.Use(middleware.Recoverer)
|
||||
b.router.Use(middleware.StripSlashes)
|
||||
|
||||
b.router.HandleFunc("/", b.serveRoot)
|
||||
b.router.HandleFunc("/nav", b.serveNav)
|
||||
}
|
||||
|
||||
func (b *bot) ListenAndServe() {
|
||||
addr := b.config.Get("HttpAddr", "127.0.0.1:1337")
|
||||
stop := make(chan os.Signal, 1)
|
||||
|
|
|
@ -45,8 +45,10 @@
|
|||
|
||||
<div class="row row-cols-5">
|
||||
<div class="card text-center" v-for="name in fileKeys" key="name">
|
||||
<img :src="fileList[name]" class="card-img-top mx-auto d-block" :alt="name" style="max-width: 100px">
|
||||
<div class="card-body">
|
||||
<span>
|
||||
<b-img-lazy :src="fileList[name]" class="card-img-top mx-auto d-block" :alt="name" width=100 style="max-width: 100px">
|
||||
</span>
|
||||
<h5 class="card-title">{{name}}</h5>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue