mirror of
https://github.com/Luzifer/staticmap.git
synced 2024-12-20 04:41:18 +00:00
Add rate limit not to bust the OSM servers
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
178253acb3
commit
1ed601b84f
2 changed files with 36 additions and 1 deletions
29
Godeps/Godeps.json
generated
29
Godeps/Godeps.json
generated
|
@ -27,6 +27,22 @@
|
|||
"ImportPath": "github.com/Wessie/appdirs",
|
||||
"Rev": "6573e894f8e294cbae0c4e45c25ff9f2e2918a4e"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/didip/tollbooth",
|
||||
"Rev": "e11ced12e0e0bbfedbc1783fcf0a5ec7f9dc4856"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/didip/tollbooth/config",
|
||||
"Rev": "e11ced12e0e0bbfedbc1783fcf0a5ec7f9dc4856"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/didip/tollbooth/errors",
|
||||
"Rev": "e11ced12e0e0bbfedbc1783fcf0a5ec7f9dc4856"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/didip/tollbooth/libstring",
|
||||
"Rev": "e11ced12e0e0bbfedbc1783fcf0a5ec7f9dc4856"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/flopp/go-coordsparser",
|
||||
"Rev": "845bca739e263e1cd38de25024a47b4d6acbfc1f"
|
||||
|
@ -82,6 +98,11 @@
|
|||
"ImportPath": "github.com/lucasb-eyer/go-colorful",
|
||||
"Rev": "c900de9dbbc73129068f5af6a823068fc5f2308c"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/patrickmn/go-cache",
|
||||
"Comment": "v2.0.0-9-g7ac1518",
|
||||
"Rev": "7ac151875ffb48b9f3ccce9ea20f020b0c1596c8"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/spf13/pflag",
|
||||
"Rev": "c7e63cf4530bcd3ba943729cee0efeff2ebea63f"
|
||||
|
@ -110,10 +131,18 @@
|
|||
"ImportPath": "golang.org/x/image/math/fixed",
|
||||
"Rev": "97680175a5267bb8b31f1923e7a66df98013b11a"
|
||||
},
|
||||
{
|
||||
"ImportPath": "golang.org/x/net/context",
|
||||
"Rev": "dfe83d419c9403b40b19d08cdba2afec27b002f7"
|
||||
},
|
||||
{
|
||||
"ImportPath": "golang.org/x/sys/unix",
|
||||
"Rev": "8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9"
|
||||
},
|
||||
{
|
||||
"ImportPath": "golang.org/x/time/rate",
|
||||
"Rev": "8be79e1e0910c292df4e79c241bb7e8f7e725959"
|
||||
},
|
||||
{
|
||||
"ImportPath": "gopkg.in/validator.v2",
|
||||
"Rev": "07ffaad256c8e957050ad83d6472eb97d785013d"
|
||||
|
|
8
main.go
8
main.go
|
@ -12,6 +12,7 @@ import (
|
|||
httpHelper "github.com/Luzifer/go_helpers/http"
|
||||
"github.com/Luzifer/rconfig"
|
||||
log "github.com/Sirupsen/logrus"
|
||||
"github.com/didip/tollbooth"
|
||||
"github.com/golang/geo/s2"
|
||||
"github.com/gorilla/mux"
|
||||
colorful "github.com/lucasb-eyer/go-colorful"
|
||||
|
@ -23,6 +24,8 @@ var (
|
|||
ForceCache time.Duration `flag:"force-cache" default:"24h" description:"Force map to be cached for this duration"`
|
||||
Listen string `flag:"listen" default:":3000" description:"IP/Port to listen on"`
|
||||
MaxSize string `flag:"max-size" default:"1024x1024" description:"Maximum map size requestable"`
|
||||
RateLimit int64 `flag:"rate-limit" default:"1" description:"How many requests to allow per time"`
|
||||
RateLimitTime time.Duration `flag:"rate-limit-time" default:"1s" description:"Time interval to allow N requests in"`
|
||||
VersionAndExit bool `flag:"version" default:"false" description:"Print version information and exit"`
|
||||
}
|
||||
|
||||
|
@ -48,9 +51,12 @@ func init() {
|
|||
}
|
||||
|
||||
func main() {
|
||||
rateLimit := tollbooth.NewLimiter(cfg.RateLimit, cfg.RateLimitTime)
|
||||
rateLimit.IPLookups = []string{"X-Forwarded-For", "RemoteAddr", "X-Real-IP"}
|
||||
|
||||
r := mux.NewRouter()
|
||||
r.HandleFunc("/status", func(res http.ResponseWriter, r *http.Request) { http.Error(res, "I'm fine", http.StatusOK) })
|
||||
r.HandleFunc("/map.png", handleMapRequest)
|
||||
r.Handle("/map.png", tollbooth.LimitFuncHandler(rateLimit, handleMapRequest))
|
||||
log.Fatalf("HTTP Server exitted: %s", http.ListenAndServe(cfg.Listen, httpHelper.NewHTTPLogHandler(r)))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue