func main()

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)
	}
}