Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Config ¶
Config holds the proxy section of .humanconfig.yaml.
func LoadConfig ¶
LoadConfig reads the proxy configuration from .humanconfig.yaml in dir. Returns (nil, nil) when the proxy section is absent.
type InteractiveDecider ¶
type InteractiveDecider struct {
// contains filtered or unexported fields
}
InteractiveDecider wraps a base Decider and prompts the user for hostnames that the base does not allow. Decisions are cached for the session.
func NewInteractiveDecider ¶
func NewInteractiveDecider(base Decider, prompt PromptFunc) *InteractiveDecider
NewInteractiveDecider creates an InteractiveDecider that falls through to prompt for hostnames not allowed by base.
func (*InteractiveDecider) Allowed ¶
func (d *InteractiveDecider) Allowed(hostname string) bool
Allowed returns true if the hostname is permitted. Hostnames allowed by the base decider pass through immediately. Unknown hostnames trigger a prompt; the result is cached for subsequent calls.
type Policy ¶
type Policy struct {
// contains filtered or unexported fields
}
Policy decides whether a given hostname is allowed to pass through the proxy.
func BlockAllPolicy ¶
func BlockAllPolicy() *Policy
BlockAllPolicy returns a policy that blocks every hostname.
type PromptFunc ¶
PromptFunc asks the user whether a hostname should be allowed. It returns true to allow, false to deny.
func NewTerminalPrompt ¶
func NewTerminalPrompt(in io.Reader, out io.Writer) PromptFunc
NewTerminalPrompt returns a PromptFunc that asks the user via the terminal. It serialises I/O with its own mutex so that concurrent prompts don't interleave on the terminal.
type Server ¶
type Server struct {
Addr string
Policy Decider
Logger zerolog.Logger
// Dialer connects to upstream servers. Injected for testing.
Dialer func(ctx context.Context, network, address string) (net.Conn, error)
}
Server is a transparent HTTPS proxy that reads the SNI from TLS ClientHello to block/allow domains without decrypting traffic.