Documentation
¶
Index ¶
- Variables
- func ConfigToTLSConfig(c *TLSConfig) (*tls.Config, error)
- func Listen(server *http.Server, flags *FlagConfig, logger *slog.Logger) errordeprecated
- func ListenAndServe(server *http.Server, flags *FlagConfig, logger *slog.Logger) error
- func Serve(l net.Listener, server *http.Server, flags *FlagConfig, logger *slog.Logger) error
- func ServeMultiple(listeners []net.Listener, server *http.Server, flags *FlagConfig, ...) error
- func Validate(tlsConfigPath string) error
- type Cipher
- type Config
- type Curve
- type FlagConfig
- type HTTPConfig
- type LandingConfig
- type LandingForm
- type LandingFormInput
- type LandingLinks
- type LandingPageHandler
- type RateLimiterConfig
- type TLSConfig
- type TLSVersion
Constants ¶
This section is empty.
Variables ¶
var (
ErrNoListeners = errors.New("no web listen address or systemd socket flag specified")
)
Functions ¶
func ConfigToTLSConfig ¶
ConfigToTLSConfig generates the golang tls.Config from the TLSConfig struct.
func ListenAndServe ¶
ListenAndServe starts the server on addresses given in WebListenAddresses in the FlagConfig. When address starts looks like vsock://:{port}, it listens on vsock. More info check https://wiki.qemu.org/Features/VirtioVsock . Or instead uses systemd socket activated listeners if WebSystemdSocket in the FlagConfig is true. The FlagConfig is also passed on to ServeMultiple.
func Serve ¶
Server starts the server on the given listener. Based on the file path WebConfigFile in the FlagConfig, TLS or basic auth could be enabled.
func ServeMultiple ¶ added in v0.8.0
func ServeMultiple(listeners []net.Listener, server *http.Server, flags *FlagConfig, logger *slog.Logger) error
ServeMultiple starts the server on the given listeners. The FlagConfig is also passed on to Serve.
Types ¶
type Cipher ¶ added in v0.8.0
type Cipher uint16
func (Cipher) MarshalYAML ¶ added in v0.8.0
func (*Cipher) UnmarshalYAML ¶ added in v0.8.0
type Config ¶
type Config struct {
TLSConfig TLSConfig `yaml:"tls_server_config"`
HTTPConfig HTTPConfig `yaml:"http_server_config"`
RateLimiterConfig RateLimiterConfig `yaml:"rate_limit"`
Users map[string]config_util.Secret `yaml:"basic_auth_users"`
}
type Curve ¶ added in v0.8.0
func (*Curve) MarshalYAML ¶ added in v0.8.0
func (*Curve) UnmarshalYAML ¶ added in v0.8.0
type FlagConfig ¶ added in v0.8.0
type HTTPConfig ¶ added in v0.8.0
type LandingConfig ¶ added in v0.9.0
type LandingConfig struct {
RoutePrefix string // The route prefix for the exporter.
HeaderColor string // Used for the landing page header.
CSS string // CSS style tag for the landing page.
Name string // The name of the exporter, generally suffixed by _exporter.
Description string // A short description about the exporter.
Form LandingForm // A POST form.
Links []LandingLinks // Links displayed on the landing page.
ExtraHTML string // Additional HTML to be embedded.
ExtraCSS string // Additional CSS to be embedded.
Version string // The version displayed.
Profiling string // If false, don't display profiling links.
}
Config represents the configuration of the web listener.
type LandingForm ¶ added in v0.10.0
type LandingForm struct {
Action string
Inputs []LandingFormInput
Width float64
}
LandingForm provides a configuration struct for creating a POST form on the landing page.
type LandingFormInput ¶ added in v0.10.0
type LandingFormInput struct {
Label string
Type string
Name string
Placeholder string
Value string
}
LandingFormInput represents a single form input field.
type LandingLinks ¶ added in v0.9.0
type LandingPageHandler ¶ added in v0.9.0
type LandingPageHandler struct {
// contains filtered or unexported fields
}
func NewLandingPage ¶ added in v0.9.0
func NewLandingPage(c LandingConfig) (*LandingPageHandler, error)
func (*LandingPageHandler) ServeHTTP ¶ added in v0.9.0
func (h *LandingPageHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)
type RateLimiterConfig ¶ added in v0.15.0
type TLSConfig ¶ added in v0.8.0
type TLSConfig struct {
TLSCert string `yaml:"cert"`
TLSKey config_util.Secret `yaml:"key"`
ClientCAsText string `yaml:"client_ca"`
TLSCertPath string `yaml:"cert_file"`
TLSKeyPath string `yaml:"key_file"`
ClientAuth string `yaml:"client_auth_type"`
ClientCAs string `yaml:"client_ca_file"`
CipherSuites []Cipher `yaml:"cipher_suites"`
CurvePreferences []Curve `yaml:"curve_preferences"`
MinVersion TLSVersion `yaml:"min_version"`
MaxVersion TLSVersion `yaml:"max_version"`
PreferServerCipherSuites bool `yaml:"prefer_server_cipher_suites"`
ClientAllowedSans []string `yaml:"client_allowed_sans"`
}
func (*TLSConfig) SetDirectory ¶ added in v0.8.0
SetDirectory joins any relative file paths with dir.
func (*TLSConfig) VerifyPeerCertificate ¶ added in v0.10.0
func (t *TLSConfig) VerifyPeerCertificate(rawCerts [][]byte, _ [][]*x509.Certificate) error
VerifyPeerCertificate will check the SAN entries of the client cert if there is configuration for it
type TLSVersion ¶ added in v0.8.0
type TLSVersion uint16
func (*TLSVersion) MarshalYAML ¶ added in v0.8.0
func (tv *TLSVersion) MarshalYAML() (interface{}, error)
func (*TLSVersion) UnmarshalYAML ¶ added in v0.8.0
func (tv *TLSVersion) UnmarshalYAML(unmarshal func(interface{}) error) error