internal

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2023 License: MIT Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Backend

type Backend struct {
	ServerNames []string  `yaml:"serverNames"`
	ClientAuth  bool      `yaml:"clientAuth"`
	ClientACL   *[]string `yaml:"clientACL"`
	ClientCAs   string    `yaml:"clientCAs"`
	// ALPNProtos specifies the list of ALPN procotols supported by this
	// backend. The ACME acme-tls/1 protocol doesn't need to be specified.
	// The default values are: h2, http/1.1
	// Set the value to an empty slice to disable ALPN.
	// The negotiated protocol is forwarded to the backends that use TLS.
	// https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids
	ALPNProtos *[]string `yaml:"alpnProtos,omitempty"`

	Addresses          []string      `yaml:"addresses"`
	UseTLS             bool          `yaml:"useTLS"`
	InsecureSkipVerify bool          `yaml:"insecureSkipVerify"`
	ForwardRateLimit   int           `yaml:"forwardRateLimit"`
	ForwardServerName  string        `yaml:"forwardServerName"`
	ForwardRootCAs     string        `yaml:"forwardRootCAs"`
	ForwardTimeout     time.Duration `yaml:"forwardTimeout"`
	// contains filtered or unexported fields
}

Backend encapsulates the data of one backend.

type Config

type Config struct {
	HTTPAddr string     `yaml:"httpAddr"`
	TLSAddr  string     `yaml:"tlsAddr"`
	CacheDir string     `yaml:"cacheDir"`
	Backends []*Backend `yaml:"backends"`
	Email    string     `yaml:"email"`
	MaxOpen  int        `yaml:"maxOpen"`
}

Config is the TLS proxy configuration.

func ReadConfig

func ReadConfig(filename string) (*Config, error)

ReadConfig reads and validates a YAML config file.

func (*Config) Check added in v0.0.2

func (cfg *Config) Check() error

Check checks that the Config is valid, sets some default values, and initializes internal data structures.

type Proxy

type Proxy struct {
	// contains filtered or unexported fields
}

Proxy receives TLS connections and forwards them to the configured backends.

func New

func New(cfg *Config) (*Proxy, error)

New returns a new initialized Proxy.

func (*Proxy) Reconfigure

func (p *Proxy) Reconfigure(cfg *Config) error

Reconfigure updates the proxy's configuration. Some parameters cannot be changed after Start has been called, e.g. HTTPAddr, TLSAddr, CacheDir.

func (*Proxy) Start

func (p *Proxy) Start(ctx context.Context) error

Start starts a TLS proxy with the given configuration. The proxy runs in background until the context is canceled.

func (*Proxy) Stop

func (p *Proxy) Stop()

Stop signals the background goroutines to exit.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL