mirror of
https://github.com/eliasstepanik/caddy-ingess.git
synced 2026-01-11 12:38:27 +00:00
31 lines
744 B
Go
31 lines
744 B
Go
package proxy
|
|
|
|
import (
|
|
"github.com/caddyserver/caddy/v2"
|
|
"net"
|
|
|
|
"github.com/pires/go-proxyproto"
|
|
)
|
|
|
|
// Wrapper provides PROXY protocol support to Caddy by implementing the caddy.ListenerWrapper interface. It must be loaded before the `tls` listener.
|
|
type Wrapper struct {
|
|
// Allow is an optional list of CIDR ranges to allow/require PROXY headers from.
|
|
Allow []string `json:"allow,omitempty"`
|
|
|
|
policy proxyproto.PolicyFunc
|
|
}
|
|
|
|
func (pp *Wrapper) Provision(ctx caddy.Context) error {
|
|
pp.policy = func(upstream net.Addr) (proxyproto.Policy, error) {
|
|
return proxyproto.REQUIRE, nil
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (pp *Wrapper) WrapListener(l net.Listener) net.Listener {
|
|
pL := &proxyproto.Listener{Listener: l, Policy: pp.policy}
|
|
|
|
return pL
|
|
}
|