internal

package
v0.2.3 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2024 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	USERNAME_CLAIM = "username"
	ROLES_CLAIM    = "roles"
)
View Source
const DEFAULT_CONFIG_FILE_NAME = "config.yaml"

Variables

This section is empty.

Functions

func GetKeySet added in v0.1.1

func GetKeySet(ctx context.Context, config TeleportConfig, logger *zap.SugaredLogger) jwk.Set

func WithAllowedRoles added in v0.1.0

func WithAllowedRoles(acl AccessControl) jwt.ValidateOption

func WithAllowedUsernames added in v0.1.0

func WithAllowedUsernames(acl AccessControl) jwt.ValidateOption

Types

type AccessControl added in v0.0.1

type AccessControl struct {
	AllowedUsers []string `yaml:"allowedUsers" env-default:""`
	AllowedRoles []string `yaml:"allowedRoles" env-default:""`
}
type Header struct {
	Name  string `yaml:"name"`
	Value string `yaml:"value"`
}

type MetricsConfig added in v0.0.1

type MetricsConfig struct {
	Enabled        bool   `yaml:"enabled" env:"METRICS_ENABLED" env-default:"true"`
	ListenAddr     string `yaml:"listenAddr" env:"METRICS_LISTEN_ADDR" env-default:"0.0.0.0:9090"`
	Endpoint       string `yaml:"endpoint" env:"METRICS_ENDPOINT" env-default:"/metrics"`
	HealthEndpoint string `yaml:"healthEndpoint" env:"HEALTH_ENDPOINT" env-default:"/health"`
}

type Proxy

type Proxy struct {
	http.Handler

	Logger *zap.SugaredLogger
	Config *ProxyConfig

	Target *url.URL
	// contains filtered or unexported fields
}

func NewProxy

func NewProxy(config *ProxyConfig, logger *zap.SugaredLogger) (*Proxy, error)

func (*Proxy) Run

func (proxy *Proxy) Run(globalContext context.Context) error

type ProxyConfig

type ProxyConfig struct {
	Upstream string `yaml:"upstream" env:"UPSTREAM" env-required:""`
	Debug    bool   `yaml:"debug" env:"DEBUG" env-default:"false"`

	Metrics MetricsConfig `yaml:"metrics"`

	Server            ServerConfig   `yaml:"server"`
	Teleport          TeleportConfig `yaml:"teleport"`
	AccessControl     AccessControl  `yaml:"accessControl"`
	Token             TokenConfig    `yaml:"token"`
	AdditionalHeaders []Header       `yaml:"additionalHeaders"`
}

func LoadConfig

func LoadConfig() *ProxyConfig

func (*ProxyConfig) Validate

func (config *ProxyConfig) Validate() error

type ServerConfig added in v0.0.1

type ServerConfig struct {
	RequireTls bool   `yaml:"requireTls" env:"REQUIRE_TLS" env-default:"false"`
	KeyFile    string `yaml:"keyFile" env:"KEY_FILE" env-default:"/cert/tls.key"`
	CertFile   string `yaml:"certFile" env:"CERT_FILE" env-default:"/cert/tls.crt"`

	ListenHttp  string `yaml:"listenHttp" env:"LISTEN_HTTP" env-default:"0.0.0.0:8081"`
	ListenHttps string `yaml:"listenHttps" env:"LISTEN_HTTPS" env-default:"0.0.0.0:8444"`
	TlsProfile  string `yaml:"tlsProfile" env:"TLS_PROFILE" env-default:"modern"`

	AppendProxyHeaders bool `yaml:"appendProxyHeaders" env:"PROXY_APPEND_HEADERS" env-default:"true"`
}

type TeleportConfig added in v0.0.1

type TeleportConfig struct {
	ProxyAddr        string        `yaml:"proxyAddr" env:"TELEPORT_HOST" env-required:""`
	Insecure         bool          `yaml:"insecure" env:"TELEPORT_INSECURE" env-default:"false"`
	OverrideJwksPath string        `yaml:"overrideJwksPath" env:"TELEPORT_JWKS_PATH" env-default:""`
	TokenHeader      string        `yaml:"tokenHeader" env:"TELEPORT_TOKEN_HEADER" env-default:"Teleport-Jwt-Assertion"`
	RefreshInternal  time.Duration `yaml:"refreshInternal" env:"TELEPORT_REFRESH_INTERVAL" env-default:"15m"`
}

type TokenConfig added in v0.0.1

type TokenConfig struct {
	PassToken         bool   `yaml:"passToken" env:"PASS_TOKEN" env-default:"false"`
	PassTokenAsHeader string `yaml:"passTokenAsHeader" env:"PASS_TOKEN_AS_HEADER" env-default:""`
	PassAsBearer      bool   `yaml:"passAsBearer" env:"PASS_TOKEN_AS_BEARER" env-default:"false"`
	UsernameHeader    string `yaml:"usernameHeader" env:"PASS_USERNAME_HEADER" env-default:""`
	RolesHeader       string `yaml:"rolesHeader" env:"PASS_ROLES_HEADER" env-default:""`
}

Jump to

Keyboard shortcuts

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