Skip to content

Commit d7268af

Browse files
committed
TUN-3533: Set config for single origin ingress
1 parent 8c1deb4 commit d7268af

File tree

2 files changed

+84
-1
lines changed

2 files changed

+84
-1
lines changed

ingress/ingress.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,15 @@ func NewSingleOrigin(c *cli.Context, compatibilityMode bool, logger logger.Servi
7171
}
7272

7373
// Construct an Ingress with the single rule.
74+
defaults := originRequestFromSingeRule(c)
7475
ing := Ingress{
7576
Rules: []Rule{
7677
{
7778
Service: service,
79+
Config: setConfig(defaults, config.OriginRequestConfig{}),
7880
},
7981
},
80-
defaults: originRequestFromSingeRule(c),
82+
defaults: defaults,
8183
}
8284
return ing, err
8385
}

ingress/ingress_test.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
package ingress
22

33
import (
4+
"flag"
45
"fmt"
56
"net/url"
67
"regexp"
78
"testing"
9+
"time"
810

911
"github.com/stretchr/testify/assert"
1012
"github.com/stretchr/testify/require"
13+
"github.com/urfave/cli/v2"
1114
"gopkg.in/yaml.v2"
1215

1316
"github.com/cloudflare/cloudflared/cmd/cloudflared/config"
17+
"github.com/cloudflare/cloudflared/logger"
18+
"github.com/cloudflare/cloudflared/tlsconfig"
1419
)
1520

1621
func TestParseUnixSocket(t *testing.T) {
@@ -228,6 +233,82 @@ ingress:
228233
}
229234
}
230235

236+
func TestSingleOriginSetsConfig(t *testing.T) {
237+
flagSet := flag.NewFlagSet(t.Name(), flag.PanicOnError)
238+
flagSet.Bool("hello-world", true, "")
239+
flagSet.Duration(ProxyConnectTimeoutFlag, time.Second, "")
240+
flagSet.Duration(ProxyTLSTimeoutFlag, time.Second, "")
241+
flagSet.Duration(ProxyTCPKeepAlive, time.Second, "")
242+
flagSet.Bool(ProxyNoHappyEyeballsFlag, true, "")
243+
flagSet.Int(ProxyKeepAliveConnectionsFlag, 10, "")
244+
flagSet.Duration(ProxyKeepAliveTimeoutFlag, time.Second, "")
245+
flagSet.String(HTTPHostHeaderFlag, "example.com:8080", "")
246+
flagSet.String(OriginServerNameFlag, "example.com", "")
247+
flagSet.String(tlsconfig.OriginCAPoolFlag, "/etc/certs/ca.pem", "")
248+
flagSet.Bool(NoTLSVerifyFlag, true, "")
249+
flagSet.Bool(NoChunkedEncodingFlag, true, "")
250+
flagSet.Bool(config.BastionFlag, true, "")
251+
flagSet.String(ProxyAddressFlag, "localhost:8080", "")
252+
flagSet.Uint(ProxyPortFlag, 8080, "")
253+
flagSet.Bool(Socks5Flag, true, "")
254+
255+
cliCtx := cli.NewContext(cli.NewApp(), flagSet, nil)
256+
err := cliCtx.Set("hello-world", "true")
257+
require.NoError(t, err)
258+
err = cliCtx.Set(ProxyConnectTimeoutFlag, "1s")
259+
require.NoError(t, err)
260+
err = cliCtx.Set(ProxyTLSTimeoutFlag, "1s")
261+
require.NoError(t, err)
262+
err = cliCtx.Set(ProxyTCPKeepAlive, "1s")
263+
require.NoError(t, err)
264+
err = cliCtx.Set(ProxyNoHappyEyeballsFlag, "true")
265+
require.NoError(t, err)
266+
err = cliCtx.Set(ProxyKeepAliveConnectionsFlag, "10")
267+
require.NoError(t, err)
268+
err = cliCtx.Set(ProxyKeepAliveTimeoutFlag, "1s")
269+
require.NoError(t, err)
270+
err = cliCtx.Set(HTTPHostHeaderFlag, "example.com:8080")
271+
require.NoError(t, err)
272+
err = cliCtx.Set(OriginServerNameFlag, "example.com")
273+
require.NoError(t, err)
274+
err = cliCtx.Set(tlsconfig.OriginCAPoolFlag, "/etc/certs/ca.pem")
275+
require.NoError(t, err)
276+
err = cliCtx.Set(NoTLSVerifyFlag, "true")
277+
require.NoError(t, err)
278+
err = cliCtx.Set(NoChunkedEncodingFlag, "true")
279+
require.NoError(t, err)
280+
err = cliCtx.Set(config.BastionFlag, "true")
281+
require.NoError(t, err)
282+
err = cliCtx.Set(ProxyAddressFlag, "localhost:8080")
283+
require.NoError(t, err)
284+
err = cliCtx.Set(ProxyPortFlag, "8080")
285+
require.NoError(t, err)
286+
err = cliCtx.Set(Socks5Flag, "true")
287+
require.NoError(t, err)
288+
289+
allowURLFromArgs := false
290+
logger, err := logger.New()
291+
require.NoError(t, err)
292+
ingress, err := NewSingleOrigin(cliCtx, allowURLFromArgs, logger)
293+
require.NoError(t, err)
294+
295+
assert.Equal(t, time.Second, ingress.Rules[0].Config.ConnectTimeout)
296+
assert.Equal(t, time.Second, ingress.Rules[0].Config.TLSTimeout)
297+
assert.Equal(t, time.Second, ingress.Rules[0].Config.TCPKeepAlive)
298+
assert.True(t, ingress.Rules[0].Config.NoHappyEyeballs)
299+
assert.Equal(t, 10, ingress.Rules[0].Config.KeepAliveConnections)
300+
assert.Equal(t, time.Second, ingress.Rules[0].Config.KeepAliveTimeout)
301+
assert.Equal(t, "example.com:8080", ingress.Rules[0].Config.HTTPHostHeader)
302+
assert.Equal(t, "example.com", ingress.Rules[0].Config.OriginServerName)
303+
assert.Equal(t, "/etc/certs/ca.pem", ingress.Rules[0].Config.CAPool)
304+
assert.True(t, ingress.Rules[0].Config.NoTLSVerify)
305+
assert.True(t, ingress.Rules[0].Config.DisableChunkedEncoding)
306+
assert.True(t, ingress.Rules[0].Config.BastionMode)
307+
assert.Equal(t, "localhost:8080", ingress.Rules[0].Config.ProxyAddress)
308+
assert.Equal(t, uint(8080), ingress.Rules[0].Config.ProxyPort)
309+
assert.Equal(t, socksProxy, ingress.Rules[0].Config.ProxyType)
310+
}
311+
231312
func TestFindMatchingRule(t *testing.T) {
232313
ingress := Ingress{
233314
Rules: []Rule{

0 commit comments

Comments
 (0)