diff --git a/examples/auto-tls/main.go b/examples/auto-tls/main.go index 2c0d89d9..896d3a9e 100644 --- a/examples/auto-tls/main.go +++ b/examples/auto-tls/main.go @@ -2,16 +2,19 @@ package main import ( "github.com/gin-gonic/gin" + "golang.org/x/crypto/acme/autocert" ) func main() { r := gin.Default() + gin.AutoTLSManager.Cache = autocert.DirCache("/var/www/.cache") + // Ping handler r.GET("/ping", func(c *gin.Context) { c.String(200, "pong") }) // Listen and Server in 0.0.0.0:443 - r.RunAutoTLS(":443", "/var/www/.cache", "example.com") + r.RunAutoTLS("example.com") } diff --git a/gin1.7.go b/gin1.7.go index dd8a65a9..7599fdf0 100644 --- a/gin1.7.go +++ b/gin1.7.go @@ -9,30 +9,26 @@ import ( "golang.org/x/crypto/acme/autocert" ) +var AutoTLSManager = autocert.Manager{ + Prompt: autocert.AcceptTOS, +} + // RunAutoTLS attaches the router to a http.Server and starts listening and serving HTTPS (secure) requests. // It obtains and refreshes certificates automatically, // as well as providing them to a TLS server via tls.Config. // only from Go version 1.7 onward -func (engine *Engine) RunAutoTLS(addr string, cache string, domain ...string) (err error) { - debugPrint("Listening and serving HTTPS on %s and host name is %s\n", addr, domain) +func (engine *Engine) RunAutoTLS(domain ...string) (err error) { + debugPrint("Listening and serving HTTPS on host name is %s\n", domain) defer func() { debugPrintError(err) }() - m := autocert.Manager{ - Prompt: autocert.AcceptTOS, - } //your domain here if len(domain) != 0 { - m.HostPolicy = autocert.HostWhitelist(domain...) - } - - // folder for storing certificates - if cache != "" { - m.Cache = autocert.DirCache(cache) + AutoTLSManager.HostPolicy = autocert.HostWhitelist(domain...) } s := &http.Server{ - Addr: addr, - TLSConfig: &tls.Config{GetCertificate: m.GetCertificate}, + Addr: ":443", + TLSConfig: &tls.Config{GetCertificate: AutoTLSManager.GetCertificate}, Handler: engine, } err = s.ListenAndServeTLS("", "")