in capi/capi.go [37:71]
func main() {
InitLogging()
store, err := memstore.New(65536)
if err != nil {
log.Fatal(err)
}
// 100 per minute, with a burst of 6.
quota := throttled.RateQuota{MaxRate: throttled.PerMin(500), MaxBurst: 24}
rateLimiter, err := throttled.NewGCRARateLimiter(store, quota)
if err != nil {
log.Fatal(err)
}
httpRateLimiter := throttled.HTTPRateLimiter{
RateLimiter: rateLimiter,
VaryBy: &throttled.VaryBy{Path: true},
}
verifyLimiter := httpRateLimiter.RateLimit(http.HandlerFunc(verify))
verifyCCADBLimiter := httpRateLimiter.RateLimit(http.HandlerFunc(verifyFromCCADB))
verifyFromCertificateDetailsLimiter := httpRateLimiter.RateLimit(http.HandlerFunc(verifyFromCertificateDetails))
lintCCADBLimiter := httpRateLimiter.RateLimit(http.HandlerFunc(lintFromCCADB))
lintFromCertificateDetailsLimiter := httpRateLimiter.RateLimit(http.HandlerFunc(lintFromCertificateDetails))
lintFromSubjectLimiter := httpRateLimiter.RateLimit(http.HandlerFunc(lintFromSubject))
http.Handle("/", verifyLimiter)
http.Handle("/fromreport", verifyCCADBLimiter)
http.Handle("/fromCertificateDetails", verifyFromCertificateDetailsLimiter)
http.Handle("/lintFromReport", lintCCADBLimiter)
http.Handle("/lintFromCertificateDetails", lintFromCertificateDetailsLimiter)
http.Handle("/lintFromSubject", lintFromSubjectLimiter)
port := Port()
addr := BindingAddress()
log.WithFields(log.Fields{"Binding Address": addr, "Port": port}).Info("Starting server")
if err := http.ListenAndServe(addr+":"+port, nil); err != nil {
log.Panicln(err)
}
}