mirror of
https://github.com/minio/minio.git
synced 2024-12-26 23:25:54 -05:00
Bandwidth quota now supports 100-Continue
This commit is contained in:
parent
9431a54a27
commit
258bf55e31
@ -92,10 +92,10 @@ func HTTPHandler(domain string, driver drivers.Driver) http.Handler {
|
||||
}
|
||||
|
||||
h := validateHandler(conf, ignoreResourcesHandler(mux))
|
||||
h = quota.BandwidthCap(h, 250*1024*1024, time.Duration(30*time.Minute))
|
||||
// h = quota.BandwidthCap(h, 1024*1024*1024, time.Duration(24*time.Hour))
|
||||
// h = quota.RequestLimit(h, 100, time.Duration(30*time.Minute))
|
||||
// h = quota.RequestLimit(h, 1000, time.Duration(24*time.Hour))
|
||||
// h = quota.ConnectionLimit(h, 5)
|
||||
h = quota.BandwidthCap(h, 25*1024*1024, time.Duration(30*time.Minute))
|
||||
h = quota.BandwidthCap(h, 100*1024*1024, time.Duration(24*time.Hour))
|
||||
h = quota.RequestLimit(h, 100, time.Duration(30*time.Minute))
|
||||
h = quota.RequestLimit(h, 1000, time.Duration(24*time.Hour))
|
||||
h = quota.ConnectionLimit(h, 5)
|
||||
return h
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"errors"
|
||||
"github.com/minio-io/minio/pkg/iodine"
|
||||
"io"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"time"
|
||||
@ -40,10 +39,22 @@ var bandwidthQuotaExceeded = ErrorResponse{
|
||||
HostID: "",
|
||||
}
|
||||
|
||||
var bandwidthInsufficientToProceed = ErrorResponse{
|
||||
Code: "BandwidthQuotaWillBeExceeded",
|
||||
Message: "Bandwidth quota will be exceeded with this request",
|
||||
Resource: "",
|
||||
RequestID: "",
|
||||
HostID: "",
|
||||
}
|
||||
|
||||
// ServeHTTP is an http.Handler ServeHTTP method
|
||||
func (h *bandwidthQuotaHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
|
||||
host, _, _ := net.SplitHostPort(req.RemoteAddr)
|
||||
longIP := longIP{net.ParseIP(host)}.IptoUint32()
|
||||
if h.quotas.WillExceedQuota(longIP, req.ContentLength) {
|
||||
writeError(w, req, bandwidthInsufficientToProceed, 429)
|
||||
return
|
||||
}
|
||||
req.Body = "aReader{
|
||||
ReadCloser: req.Body,
|
||||
quotas: h.quotas,
|
||||
@ -56,7 +67,6 @@ func (h *bandwidthQuotaHandler) ServeHTTP(w http.ResponseWriter, req *http.Reque
|
||||
quotas: h.quotas,
|
||||
ip: longIP,
|
||||
}
|
||||
log.Println("serving")
|
||||
h.handler.ServeHTTP(w, req)
|
||||
}
|
||||
|
||||
@ -84,12 +94,10 @@ type quotaReader struct {
|
||||
|
||||
func (q *quotaReader) Read(b []byte) (int, error) {
|
||||
if q.err {
|
||||
log.Println("Shortcut, quitting")
|
||||
return 0, iodine.New(errors.New("Quota Met"), nil)
|
||||
}
|
||||
if q.quotas.IsQuotaMet(q.ip) {
|
||||
q.err = true
|
||||
log.Println("QUOTA!!!")
|
||||
writeError(q.w, q.req, bandwidthQuotaExceeded, 429)
|
||||
return 0, iodine.New(errors.New("Quota Met"), nil)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user