TUN-6773: Add access based configuration to ingress.OriginRequestConfig
This PR adds some access related configurations to OriginRequestConfig. This will eventually get validated to be part of Ingress.Rule.
This commit is contained in:
parent
3d345d3748
commit
db4564e5b9
|
@ -229,6 +229,19 @@ type OriginRequestConfig struct {
|
||||||
IPRules []IngressIPRule `yaml:"ipRules" json:"ipRules,omitempty"`
|
IPRules []IngressIPRule `yaml:"ipRules" json:"ipRules,omitempty"`
|
||||||
// Attempt to connect to origin with HTTP/2
|
// Attempt to connect to origin with HTTP/2
|
||||||
Http2Origin *bool `yaml:"http2Origin" json:"http2Origin,omitempty"`
|
Http2Origin *bool `yaml:"http2Origin" json:"http2Origin,omitempty"`
|
||||||
|
// Access holds all access related configs
|
||||||
|
Access *AccessConfig `yaml:"access" json:"access,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type AccessConfig struct {
|
||||||
|
// Enabled when set to true will fail every request that does not arrive through an access authenticated endpoint.
|
||||||
|
Enabled bool
|
||||||
|
|
||||||
|
// TeamName is the organization team name to get the public key certificates for.
|
||||||
|
TeamName string `yaml:"teamName" json:"teamName,omitempty"`
|
||||||
|
|
||||||
|
// AudTag is the AudTag to verify access JWT against.
|
||||||
|
AudTag []string `yaml:"audTag" json:"audTag,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type IngressIPRule struct {
|
type IngressIPRule struct {
|
||||||
|
|
|
@ -265,6 +265,9 @@ func originRequestFromConfig(c config.OriginRequestConfig) OriginRequestConfig {
|
||||||
if c.Http2Origin != nil {
|
if c.Http2Origin != nil {
|
||||||
out.Http2Origin = *c.Http2Origin
|
out.Http2Origin = *c.Http2Origin
|
||||||
}
|
}
|
||||||
|
if c.Access != nil {
|
||||||
|
out.Access = *c.Access
|
||||||
|
}
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,6 +313,9 @@ type OriginRequestConfig struct {
|
||||||
IPRules []ipaccess.Rule `yaml:"ipRules" json:"ipRules"`
|
IPRules []ipaccess.Rule `yaml:"ipRules" json:"ipRules"`
|
||||||
// Attempt to connect to origin with HTTP/2
|
// Attempt to connect to origin with HTTP/2
|
||||||
Http2Origin bool `yaml:"http2Origin" json:"http2Origin"`
|
Http2Origin bool `yaml:"http2Origin" json:"http2Origin"`
|
||||||
|
|
||||||
|
// Access holds all access related configs
|
||||||
|
Access config.AccessConfig `yaml:"access" json:"access,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (defaults *OriginRequestConfig) setConnectTimeout(overrides config.OriginRequestConfig) {
|
func (defaults *OriginRequestConfig) setConnectTimeout(overrides config.OriginRequestConfig) {
|
||||||
|
|
|
@ -182,25 +182,25 @@ func TestMarshalJSON(t *testing.T) {
|
||||||
{
|
{
|
||||||
name: "Nil",
|
name: "Nil",
|
||||||
path: nil,
|
path: nil,
|
||||||
expected: `{"hostname":"example.com","path":null,"service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false}}`,
|
expected: `{"hostname":"example.com","path":null,"service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false,"access":{"Enabled":false}}}`,
|
||||||
want: true,
|
want: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Nil regex",
|
name: "Nil regex",
|
||||||
path: &Regexp{Regexp: nil},
|
path: &Regexp{Regexp: nil},
|
||||||
expected: `{"hostname":"example.com","path":null,"service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false}}`,
|
expected: `{"hostname":"example.com","path":null,"service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false,"access":{"Enabled":false}}}`,
|
||||||
want: true,
|
want: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Empty",
|
name: "Empty",
|
||||||
path: &Regexp{Regexp: regexp.MustCompile("")},
|
path: &Regexp{Regexp: regexp.MustCompile("")},
|
||||||
expected: `{"hostname":"example.com","path":"","service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false}}`,
|
expected: `{"hostname":"example.com","path":"","service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false,"access":{"Enabled":false}}}`,
|
||||||
want: true,
|
want: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "Basic",
|
name: "Basic",
|
||||||
path: &Regexp{Regexp: regexp.MustCompile("/echo")},
|
path: &Regexp{Regexp: regexp.MustCompile("/echo")},
|
||||||
expected: `{"hostname":"example.com","path":"/echo","service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false}}`,
|
expected: `{"hostname":"example.com","path":"/echo","service":"https://localhost:8000","originRequest":{"connectTimeout":30,"tlsTimeout":10,"tcpKeepAlive":30,"noHappyEyeballs":false,"keepAliveTimeout":90,"keepAliveConnections":100,"httpHostHeader":"","originServerName":"","caPool":"","noTLSVerify":false,"disableChunkedEncoding":false,"bastionMode":false,"proxyAddress":"127.0.0.1","proxyPort":0,"proxyType":"","ipRules":null,"http2Origin":false,"access":{"Enabled":false}}}`,
|
||||||
want: true,
|
want: true,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue