Added HTTPS support.
This commit is contained in:
parent
337ebb67b4
commit
502e146f92
3 changed files with 28 additions and 4 deletions
|
|
@ -58,6 +58,11 @@ type (
|
||||||
ReadTimeout time.Duration `env:"HTTP_READ_TIMEOUT,default=5s"`
|
ReadTimeout time.Duration `env:"HTTP_READ_TIMEOUT,default=5s"`
|
||||||
WriteTimeout time.Duration `env:"HTTP_WRITE_TIMEOUT,default=10s"`
|
WriteTimeout time.Duration `env:"HTTP_WRITE_TIMEOUT,default=10s"`
|
||||||
IdleTimeout time.Duration `env:"HTTP_IDLE_TIMEOUT,default=2m"`
|
IdleTimeout time.Duration `env:"HTTP_IDLE_TIMEOUT,default=2m"`
|
||||||
|
TLS struct {
|
||||||
|
Enabled bool `env:"HTTP_TLS_ENABLED,default=false"`
|
||||||
|
Certificate string `env:"HTTP_TLS_CERTIFICATE"`
|
||||||
|
Key string `env:"HTTP_TLS_KEY"`
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// AppConfig stores application configuration
|
// AppConfig stores application configuration
|
||||||
|
|
|
||||||
12
main.go
12
main.go
|
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"crypto/tls"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -34,6 +35,17 @@ func main() {
|
||||||
IdleTimeout: c.Config.HTTP.IdleTimeout,
|
IdleTimeout: c.Config.HTTP.IdleTimeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if c.Config.HTTP.TLS.Enabled {
|
||||||
|
certs, err := tls.LoadX509KeyPair(c.Config.HTTP.TLS.Certificate, c.Config.HTTP.TLS.Key)
|
||||||
|
if err != nil {
|
||||||
|
c.Web.Logger.Fatalf("cannot load TLS certificate: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
srv.TLSConfig = &tls.Config{
|
||||||
|
Certificates: []tls.Certificate{certs},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if err := c.Web.StartServer(&srv); err != http.ErrServerClosed {
|
if err := c.Web.StartServer(&srv); err != http.ErrServerClosed {
|
||||||
c.Web.Logger.Fatalf("shutting down the server: v", err)
|
c.Web.Logger.Fatalf("shutting down the server: v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,15 @@ func BuildRouter(c *services.Container) {
|
||||||
c.Web.Group("", middleware.CacheControl(c.Config.Cache.Expiration.StaticFile)).
|
c.Web.Group("", middleware.CacheControl(c.Config.Cache.Expiration.StaticFile)).
|
||||||
Static(config.StaticPrefix, config.StaticDir)
|
Static(config.StaticPrefix, config.StaticDir)
|
||||||
|
|
||||||
// Middleware
|
// Non static file route group
|
||||||
g := c.Web.Group("",
|
g := c.Web.Group("")
|
||||||
|
|
||||||
|
// Force HTTPS, if enabled
|
||||||
|
if c.Config.HTTP.TLS.Enabled {
|
||||||
|
g.Use(echomw.HTTPSRedirect())
|
||||||
|
}
|
||||||
|
|
||||||
|
g.Use(
|
||||||
echomw.RemoveTrailingSlashWithConfig(echomw.TrailingSlashConfig{
|
echomw.RemoveTrailingSlashWithConfig(echomw.TrailingSlashConfig{
|
||||||
RedirectCode: http.StatusMovedPermanently,
|
RedirectCode: http.StatusMovedPermanently,
|
||||||
}),
|
}),
|
||||||
|
|
@ -51,12 +58,12 @@ func BuildRouter(c *services.Container) {
|
||||||
echomw.TimeoutWithConfig(echomw.TimeoutConfig{
|
echomw.TimeoutWithConfig(echomw.TimeoutConfig{
|
||||||
Timeout: c.Config.App.Timeout,
|
Timeout: c.Config.App.Timeout,
|
||||||
}),
|
}),
|
||||||
middleware.ServeCachedPage(c.Cache),
|
|
||||||
session.Middleware(sessions.NewCookieStore([]byte(c.Config.App.EncryptionKey))),
|
session.Middleware(sessions.NewCookieStore([]byte(c.Config.App.EncryptionKey))),
|
||||||
|
middleware.LoadAuthenticatedUser(c.Auth),
|
||||||
|
middleware.ServeCachedPage(c.Cache),
|
||||||
echomw.CSRFWithConfig(echomw.CSRFConfig{
|
echomw.CSRFWithConfig(echomw.CSRFConfig{
|
||||||
TokenLookup: "form:csrf",
|
TokenLookup: "form:csrf",
|
||||||
}),
|
}),
|
||||||
middleware.LoadAuthenticatedUser(c.Auth),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Base controller
|
// Base controller
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue