Documentation
¶
Index ¶
- func DefaultTLSConfig() *tls.Config
- func Port(address string) int
- type AcmeConfig
- type CertificateConfig
- type ClientAuthConfig
- type ClientAuthType
- type DNSChallengeConfig
- type DNSProviderType
- type EntryPoint
- type EntryPointConfig
- type EntryPointsConfig
- type HTTP2Config
- type HTTP3Config
- type HTTPChallengeConfig
- type HTTPConfig
- type RedirectionConfig
- type Server
- type TLSConfig
- type TransportConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultTLSConfig ¶
Types ¶
type AcmeConfig ¶
type AcmeConfig struct {
// directory to save the certificates, le_certs default
CacheDir string `json:"cache_dir" yaml:"cache_dir"`
// User email, mandatory
Email string `json:"email" yaml:"email"`
// Use LE production endpoint or staging
UseProductionEndpoint bool `json:"use_production_endpoint" yaml:"use_production_endpoint"`
// Domains to obtain certificates
Domains []string `json:"domains" yaml:"domains"`
HTTPChallenge *HTTPChallengeConfig `json:"httpChallenge" yaml:"httpChallenge"`
TLSChallenge bool `json:"tlsChallenge" yaml:"tlsChallenge"`
DNSChallenge *DNSChallengeConfig `json:"dnsChallenge" yaml:"dnsChallenge"`
// contains filtered or unexported fields
}
func (*AcmeConfig) Config ¶ added in v0.1.0
func (cfg *AcmeConfig) Config(key string, mCfg EntryPointsConfig, logger *zap.Logger) *certmagic.Config
type CertificateConfig ¶ added in v0.1.0
type CertificateConfig struct {
CertFile string `json:"certFile,omitempty" yaml:"certFile,omitempty"`
KeyFile string `json:"keyFile,omitempty" yaml:"keyFile,omitempty"`
}
func (CertificateConfig) Certificate ¶ added in v0.1.0
func (cfg CertificateConfig) Certificate() (tls.Certificate, error)
type ClientAuthConfig ¶ added in v0.1.0
type ClientAuthConfig struct {
ClientAuthType ClientAuthType `json:"clientAuthType,omitempty" yaml:"clientAuthType,omitempty"`
CaFiles []string `json:"caFiles,omitempty" yaml:"caFiles,omitempty"`
}
type ClientAuthType ¶
type ClientAuthType string
const ( NoClientCert ClientAuthType = "no_client_cert" RequestClientCert ClientAuthType = "request_client_cert" RequireAnyClientCert ClientAuthType = "require_any_client_cert" VerifyClientCertIfGiven ClientAuthType = "verify_client_cert_if_given" RequireAndVerifyClientCert ClientAuthType = "require_and_verify_client_cert" )
func (ClientAuthType) TLSClientAuth ¶ added in v0.1.0
func (t ClientAuthType) TLSClientAuth() tls.ClientAuthType
type DNSChallengeConfig ¶ added in v0.1.0
type DNSChallengeConfig struct {
Provider DNSProviderType `json:"provider" yaml:"provider"`
APIToken string `json:"apiToken" yaml:"apiToken"`
Metadata map[string]string `json:"metadata" yaml:"metadata"`
}
type DNSProviderType ¶ added in v0.1.0
type DNSProviderType string
const CloudflareProvider DNSProviderType = "cloudflare"
type EntryPoint ¶ added in v0.1.0
type EntryPoint struct {
// contains filtered or unexported fields
}
func NewEntryPoint ¶ added in v0.1.0
func NewEntryPoint(name string, cfg EntryPointsConfig, handler http.Handler, logger *zap.Logger) (*EntryPoint, error)
func (*EntryPoint) Start ¶ added in v0.1.0
func (ep *EntryPoint) Start() error
type EntryPointConfig ¶ added in v0.1.0
type EntryPointConfig struct {
// Host and port to handle as http server.
Address string `json:"address,omitempty" yaml:"address,omitempty"`
// HTTP2 defines http/2 server options.
HTTP2 HTTP2Config `json:"http2,omitempty" yaml:"http2,omitempty"`
// HTTP3 enables HTTP/3 protocol on the entryPoint. HTTP/3 requires a TCP entryPoint,
// as HTTP/3 always starts as a TCP connection that then gets upgraded to UDP.
// In most scenarios, this entryPoint is the same as the one used for TLS traffic.
HTTP3 *HTTP3Config `json:"http3,omitempty" yaml:"http3,omitempty"`
Transport TransportConfig `json:"transport,omitempty" yaml:"transport,omitempty"`
HTTP HTTPConfig `json:"http,omitempty" yaml:"http,omitempty"`
}
type EntryPointsConfig ¶ added in v0.1.0
type EntryPointsConfig map[string]EntryPointConfig
type HTTP2Config ¶ added in v0.1.0
type HTTP2Config struct {
// MaxConcurrentStreams specifies the number of concurrent
// streams per connection that each client is allowed to initiate.
// The MaxConcurrentStreams value must be greater than zero, defaults to 250.
MaxConcurrentStreams uint `json:"maxConcurrentStreams,omitempty" yaml:"maxConcurrentStreams,omitempty"`
}
type HTTP3Config ¶ added in v0.1.0
type HTTP3Config struct {
// AdvertisedPort defines which UDP port to advertise as the HTTP/3 authority.
// It defaults to the entryPoint's address port. It can be used to override
// the authority in the alt-svc header.
AdvertisedPort uint `json:"advertisedPort,omitempty" yaml:"advertisedPort,omitempty"`
}
type HTTPChallengeConfig ¶ added in v0.1.0
type HTTPChallengeConfig struct {
EntryPoint string `json:"entryPoint" yaml:"entryPoint"`
}
type HTTPConfig ¶ added in v0.1.0
type HTTPConfig struct {
Redirection *RedirectionConfig `json:"redirection,omitempty" yaml:"redirection,omitempty"`
TLS *TLSConfig `json:"tls,omitempty" yaml:"tls,omitempty"`
}
type RedirectionConfig ¶ added in v0.1.0
type RedirectionConfig struct {
EntryPoint struct {
// To the target element, it can be:
// - an entry point name (ex: websecure)
// - a port (:443)
// defaults: :443
To string `json:"to,omitempty" yaml:"to,omitempty"`
// Scheme the redirection target scheme, defaults to `https`
Scheme string `json:"scheme,omitempty" yaml:"scheme,omitempty"`
// Permanent to apply a permanent redirection
Permanent bool `json:"permanent,omitempty" yaml:"permanent,omitempty"`
} `json:"entryPoint,omitempty" yaml:"entryPoint,omitempty"`
}
type TLSConfig ¶ added in v0.1.0
type TLSConfig struct {
InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty" yaml:"insecureSkipVerify,omitempty"`
Certificates []CertificateConfig `json:"certificates,omitempty" yaml:"certificates,omitempty"`
ClientAuth *ClientAuthConfig `json:"clientAuth,omitempty" yaml:"clientAuth,omitempty"`
Acme *AcmeConfig `json:"acme,omitempty" yaml:"acme,omitempty"`
}
type TransportConfig ¶ added in v0.1.0
type TransportConfig struct {
// ReadTimeout is the maximum duration for reading the entire
// request, including the body. A zero or negative value means
// there will be no timeout.
//
// Because ReadTimeout does not let Handlers make per-request
// decisions on each request body's acceptable deadline or
// upload rate, most users will prefer to use
// ReadHeaderTimeout. It is valid to use them both.
ReadTimeout time.Duration `json:"readTimeout,omitempty" yaml:"readTimeout,omitempty"`
// ReadHeaderTimeout is the amount of time allowed to read
// request headers. The connection's read deadline is reset
// after reading the headers and the Handler can decide what
// is considered too slow for the body. If zero, the value of
// ReadTimeout is used. If negative, or if zero and ReadTimeout
// is zero or negative, there is no timeout.
ReadHeaderTimeout time.Duration `json:"readHeaderTimeout,omitempty" yaml:"readHeaderTimeout,omitempty"`
// WriteTimeout is the maximum duration before timing out
// writes of the response. It is reset whenever a new
// request's header is read. Like ReadTimeout, it does not
// let Handlers make decisions on a per-request basis.
// A zero or negative value means there will be no timeout.
WriteTimeout time.Duration `json:"writeTimeout,omitempty" yaml:"writeTimeout,omitempty"`
// IdleTimeout is the maximum amount of time to wait for the
// next request when keep-alives are enabled. If zero, the value
// of ReadTimeout is used. If negative, or if zero and ReadTimeout
// is zero or negative, there is no timeout.
IdleTimeout time.Duration `json:"idleTimeout,omitempty" yaml:"idleTimeout,omitempty"`
// MaxHeaderBytes controls the maximum number of bytes the
// server will read parsing the request header's keys and
// values, including the request line. It does not limit the
// size of the request body.
// If zero, http.DefaultMaxHeaderBytes is used.
MaxHeaderBytes int `json:"maxHeaderBytes,omitempty" yaml:"maxHeaderBytes,omitempty"`
}
Click to show internal directories.
Click to hide internal directories.