get stack before call
add stack trace as argument to the panic recovery function
fix build manifest
Kick streamlines configuration of a robust, hardened, production-ready
Go web server. Its core is based on net/http
and standard library
packages, and it integrates proven, high-quality community Go packages
for commonly-needed additional features.
Through the use of the Builders
type, it provides some flexibility
and "pluggability" in the choice of third-party packages used to
deliver those extra features, but it is not the goal of this package
to be fully customizable - it is opinionated and as much as possible,
provides an out-of-the-box encoding of best practices.
The tests require a valid TLS certificate for localhost. The recommended approach is to use mkcert to create a local Certificate Authority and generate a locally-trusted certificate for localhost.
The following enviroment variables should be set:
KICK_TEST_LOCALHOST_CERT
should point to the localhost certificate file.KICK_TEST_LOCALHOST_KEY
should point to the localhost certificate key file.Additionally, to use Go modules with Go 1.11+:
GO111MODULE=on
Then run the tests:
$ go test ./...
$ go test ./... -cover
$ go test ./... -race
Kick automatically builds a robust, DOS-hardened web server based on proven, established and widely used Go packages:
github.com/gorilla/sessions
for sessions with github.com/boj/redistore
(?) as backing storegithub.com/gorilla/websocket
for websocketgithub.com/gorilla/handlers
for panic recovery, CORS, canonical host, content-type validation, method override, trust proxy headersgithub.com/gorilla/csrf
for CSRFgithub.com/julienschmidt/httprouter
for route multiplexing and static file servinggithub.com/sirupsen/logrus
for structured logginggithub.com/gomodule/redigo
for Redisgithub.com/gorilla/schema
for decoding form values to structs, and github.com/mna/httpparms
for streamlined API with validationgithub.com/sony/gobreaker
for the circuit breakergolang.org/x/crypto/acme/autocert
for production TLS certificategithub.com/FiloSottile/mkcert
for localhost/development TLS certificategithub.com/throttled/throttled
for session-based rate-limitinggithub.com/juju/ratelimit
for absolute endpoint rate-limitinggithub.com/NYTimes/gziphandler
for gzip compressiongithub.com/go-sql-driver/mysql
for mysql DB supportgithub.com/jmoiron/sqlx
for added SQL and struct supportgithub.com/kelseyhightower/envconfig
for configuration, overridable via flagsgithub.com/felixge/httpsnoop
for wrapping http.ResponseWriter