Initial implementation of global default SNI option (#3047)

* add global default sni

* fixed grammar

* httpcaddyfile: Reduce some duplicated code

* Um, re-commit already-committed commit, I guess? (sigh)

Co-authored-by: Matt Holt <mholt@users.noreply.github.com>
This commit is contained in:
Mark Sargent
2020-02-27 12:01:47 +13:00
committed by GitHub
parent 5d97522d18
commit 2de0acc11f
3 changed files with 24 additions and 20 deletions

View File

@ -29,6 +29,7 @@ import (
"github.com/caddyserver/caddy/v2"
"github.com/lucas-clemente/quic-go/http3"
"github.com/mholt/certmagic"
"go.uber.org/zap"
)
@ -111,6 +112,10 @@ type App struct {
// affect functionality.
Servers map[string]*Server `json:"servers,omitempty"`
// DefaultSNI if set configures all certificate lookups to fallback to use
// this SNI name if a more specific certificate could not be found
DefaultSNI string `json:"default_sni,omitempty"`
servers []*http.Server
h3servers []*http3.Server
h3listeners []net.PacketConn
@ -134,6 +139,8 @@ func (app *App) Provision(ctx caddy.Context) error {
repl := caddy.NewReplacer()
certmagic.Default.DefaultServerName = app.DefaultSNI
// this provisions the matchers for each route,
// and prepares auto HTTP->HTTP redirects, and
// is required before we provision each server