mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-29 10:26:29 +02:00
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package httputil
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"time"
|
|
)
|
|
|
|
// ServerOptions contains the configurations settings for a http server.
|
|
type ServerOptions struct {
|
|
// Addr specifies the host and port on which the server should serve
|
|
// HTTPS requests. If empty, ":443" is used.
|
|
Addr string
|
|
|
|
// TLSConfig is the tls configuration used to setup the HTTPS server.
|
|
TLSConfig *tls.Config
|
|
|
|
// InsecureServer when enabled disables all transport security.
|
|
// In this mode, Pomerium is susceptible to man-in-the-middle attacks.
|
|
// This should be used only for testing.
|
|
Insecure bool
|
|
|
|
// Service is an optional field that helps define what the server's role is.
|
|
Service string
|
|
|
|
// Timeouts
|
|
ReadHeaderTimeout time.Duration
|
|
ReadTimeout time.Duration
|
|
WriteTimeout time.Duration
|
|
IdleTimeout time.Duration
|
|
}
|
|
|
|
var defaultServerOptions = &ServerOptions{
|
|
Addr: ":443",
|
|
ReadHeaderTimeout: 10 * time.Second,
|
|
ReadTimeout: 30 * time.Second,
|
|
WriteTimeout: 0, // support streaming by default
|
|
IdleTimeout: 5 * time.Minute,
|
|
}
|
|
|
|
func (o *ServerOptions) applyServerDefaults() {
|
|
if o.Addr == "" {
|
|
o.Addr = defaultServerOptions.Addr
|
|
}
|
|
if o.ReadHeaderTimeout == 0 {
|
|
o.ReadHeaderTimeout = defaultServerOptions.ReadHeaderTimeout
|
|
}
|
|
if o.ReadTimeout == 0 {
|
|
o.ReadTimeout = defaultServerOptions.ReadTimeout
|
|
}
|
|
if o.WriteTimeout == 0 {
|
|
o.WriteTimeout = defaultServerOptions.WriteTimeout
|
|
}
|
|
if o.IdleTimeout == 0 {
|
|
o.IdleTimeout = defaultServerOptions.IdleTimeout
|
|
}
|
|
}
|