From 3686e4f3669b1b8a8742d87971c543f6fb7e16bf Mon Sep 17 00:00:00 2001 From: Bryan Shelton Date: Tue, 9 Oct 2018 12:58:50 -0700 Subject: [PATCH] Move escapeLocationPathVar to escapeLiteralDollar --- .../ingress/controller/template/template.go | 6 ++--- .../controller/template/template_test.go | 23 +++++++++++++++---- rootfs/etc/nginx/template/nginx.tmpl | 2 +- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/internal/ingress/controller/template/template.go b/internal/ingress/controller/template/template.go index 132051cb3b..6643027e71 100644 --- a/internal/ingress/controller/template/template.go +++ b/internal/ingress/controller/template/template.go @@ -120,7 +120,7 @@ var ( } return true }, - "escapeLocationPathVar": escapeLocationPathVar, + "escapeLiteralDollar": escapeLiteralDollar, "shouldConfigureLuaRestyWAF": shouldConfigureLuaRestyWAF, "buildLuaSharedDictionaries": buildLuaSharedDictionaries, "buildLocation": buildLocation, @@ -162,13 +162,13 @@ var ( } ) -// escapeLocationPathVar will replace the $ character with ${literal_dollar} +// escapeLiteralDollar will replace the $ character with ${literal_dollar} // which is made to work via the following configuration in the http section of // the template: // geo $literal_dollar { // default "$"; // } -func escapeLocationPathVar(input interface{}) string { +func escapeLiteralDollar(input interface{}) string { inputStr, ok := input.(string) if !ok { return "" diff --git a/internal/ingress/controller/template/template_test.go b/internal/ingress/controller/template/template_test.go index fd3c5d0631..a5b11f75fb 100644 --- a/internal/ingress/controller/template/template_test.go +++ b/internal/ingress/controller/template/template_test.go @@ -835,15 +835,28 @@ func TestBuildUpstreamName(t *testing.T) { } } -func TestEscapeLocationPathVar(t *testing.T) { - escapedPath := escapeLocationPathVar("/$") +func TestEscapeLiteralDollar(t *testing.T) { + escapedPath := escapeLiteralDollar("/$") expected := "/${literal_dollar}" if escapedPath != expected { - t.Errorf("Expected %s but got %s", expected, escapedPath) + t.Errorf("Expected %v but returned %v", expected, escapedPath) } - escapedPath = escapeLocationPathVar(false) + + escapedPath = escapeLiteralDollar("/hello-$/world-$/") + expected = "/hello-${literal_dollar}/world-${literal_dollar}/" + if escapedPath != expected { + t.Errorf("Expected %v but returned %v", expected, escapedPath) + } + + leaveUnchagned := "/leave-me/unchagned" + escapedPath = escapeLiteralDollar(leaveUnchagned) + if escapedPath != leaveUnchagned { + t.Errorf("Expected %v but returned %v", leaveUnchagned, escapedPath) + } + + escapedPath = escapeLiteralDollar(false) expected = "" if escapedPath != expected { - t.Errorf("Expected %s but got %s", expected, escapedPath) + t.Errorf("Expected %v but returned %v", expected, escapedPath) } } diff --git a/rootfs/etc/nginx/template/nginx.tmpl b/rootfs/etc/nginx/template/nginx.tmpl index 23d6dfa1b7..714d46dd73 100644 --- a/rootfs/etc/nginx/template/nginx.tmpl +++ b/rootfs/etc/nginx/template/nginx.tmpl @@ -976,7 +976,7 @@ stream { set $ingress_name "{{ $ing.Rule }}"; set $service_name "{{ $ing.Service }}"; set $service_port "{{ $location.Port }}"; - set $location_path "{{ $location.Path | escapeLocationPathVar }}"; + set $location_path "{{ $location.Path | escapeLiteralDollar }}"; {{ if $all.Cfg.EnableOpentracing }} opentracing_propagate_context;