From da1ef39d347bbb29a8f1d401cc6c14006c7ad2d2 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 20 Sep 2025 13:55:35 +0200 Subject: [PATCH 1/6] error with multines and using @VAR --- internals/proxy/middlewares/template.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/internals/proxy/middlewares/template.go b/internals/proxy/middlewares/template.go index 4365185..808ca75 100644 --- a/internals/proxy/middlewares/template.go +++ b/internals/proxy/middlewares/template.go @@ -120,6 +120,8 @@ func TemplateBody(data map[string]any, VARIABLES map[string]any) (map[string]any jsonStr = re.ReplaceAllString(jsonStr, "{{.$1}}") normalizedData, err := jsonutils.GetJsonSafe[map[string]any](jsonStr) + + log.Dev(err.Error()) if err == nil { data = normalizedData From efbef000df261b9bb69e6d24b043dcd985110e58 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 20 Sep 2025 13:58:29 +0200 Subject: [PATCH 2/6] fix panic --- internals/proxy/middlewares/template.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internals/proxy/middlewares/template.go b/internals/proxy/middlewares/template.go index 808ca75..d643cf7 100644 --- a/internals/proxy/middlewares/template.go +++ b/internals/proxy/middlewares/template.go @@ -121,7 +121,7 @@ func TemplateBody(data map[string]any, VARIABLES map[string]any) (map[string]any normalizedData, err := jsonutils.GetJsonSafe[map[string]any](jsonStr) - log.Dev(err.Error()) + log.Dev("Error removing @ and encoding: ", err.Error()) if err == nil { data = normalizedData From 96c9a997378a04dc01805cd0b2e260bcd15390e7 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:00:39 +0200 Subject: [PATCH 3/6] really fixed panic due to nil err --- internals/proxy/middlewares/template.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internals/proxy/middlewares/template.go b/internals/proxy/middlewares/template.go index d643cf7..72f86c9 100644 --- a/internals/proxy/middlewares/template.go +++ b/internals/proxy/middlewares/template.go @@ -120,11 +120,11 @@ func TemplateBody(data map[string]any, VARIABLES map[string]any) (map[string]any jsonStr = re.ReplaceAllString(jsonStr, "{{.$1}}") normalizedData, err := jsonutils.GetJsonSafe[map[string]any](jsonStr) - - log.Dev("Error removing @ and encoding: ", err.Error()) if err == nil { data = normalizedData + } else { + log.Dev(err.Error()) } } From e61b3879deca9e6131ebfc8b3f1ca3a3117c3cd4 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:26:30 +0200 Subject: [PATCH 4/6] debugging issue --- internals/proxy/middlewares/message.go | 2 ++ internals/proxy/middlewares/template.go | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/internals/proxy/middlewares/message.go b/internals/proxy/middlewares/message.go index 5761a7a..4c5232a 100644 --- a/internals/proxy/middlewares/message.go +++ b/internals/proxy/middlewares/message.go @@ -82,6 +82,8 @@ func (data MessageMiddleware) Use() http.Handler { } func TemplateMessage(template string, data map[string]any, VARIABLES map[string]any) (map[string]any, error) { + log.Dev(template) + data["message"] = template data, ok, err := TemplateBody(data, VARIABLES) diff --git a/internals/proxy/middlewares/template.go b/internals/proxy/middlewares/template.go index 72f86c9..f79805e 100644 --- a/internals/proxy/middlewares/template.go +++ b/internals/proxy/middlewares/template.go @@ -123,11 +123,11 @@ func TemplateBody(data map[string]any, VARIABLES map[string]any) (map[string]any if err == nil { data = normalizedData - } else { - log.Dev(err.Error()) } } + log.Dev(jsonStr) + templatedData, err := templating.RenderJSON("body", data, VARIABLES) if err != nil { From e0c6b63dcce3394989c0dd85118adde225253f1b Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:32:38 +0200 Subject: [PATCH 5/6] extensive debugging --- internals/proxy/middlewares/template.go | 2 -- utils/templating/templating.go | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/internals/proxy/middlewares/template.go b/internals/proxy/middlewares/template.go index f79805e..4365185 100644 --- a/internals/proxy/middlewares/template.go +++ b/internals/proxy/middlewares/template.go @@ -126,8 +126,6 @@ func TemplateBody(data map[string]any, VARIABLES map[string]any) (map[string]any } } - log.Dev(jsonStr) - templatedData, err := templating.RenderJSON("body", data, VARIABLES) if err != nil { diff --git a/utils/templating/templating.go b/utils/templating/templating.go index 3f66c90..bb8b7e0 100644 --- a/utils/templating/templating.go +++ b/utils/templating/templating.go @@ -7,6 +7,9 @@ import ( "regexp" "strings" "text/template" + + "github.com/codeshelldev/secured-signal-api/utils/jsonutils" + "github.com/codeshelldev/secured-signal-api/utils/logger" ) func normalize(value any) string { @@ -128,6 +131,8 @@ func RenderJSONTemplate(name string, data map[string]any, variables map[string]a tmplStr := string(jsonBytes) + logger.Dev("1\n", tmplStr) + re, err := regexp.Compile(`{{\s*\.([a-zA-Z0-9_.]+)\s*}}`) // Add normalize() to be able to remove Quotes from Arrays @@ -135,18 +140,24 @@ func RenderJSONTemplate(name string, data map[string]any, variables map[string]a tmplStr = re.ReplaceAllString(tmplStr, "{{normalize .$1}}") } + logger.Dev("2\n", tmplStr) + templt := CreateTemplateWithFunc(name, template.FuncMap{ "normalize": normalizeJSON, }) jsonStr, err := ParseTemplate(templt, tmplStr, variables) + logger.Dev("3\n", tmplStr) + if err != nil { return nil, err } jsonStr = cleanQuotedPairsJSON(jsonStr) + logger.Dev("4\n", tmplStr) + // Remove the Quotes around "<<[item1,item2]>>" re, err = regexp.Compile(`"<<(.*?)>>"`) @@ -156,8 +167,12 @@ func RenderJSONTemplate(name string, data map[string]any, variables map[string]a jsonStr = re.ReplaceAllString(jsonStr, "$1") + logger.Dev("5\n", tmplStr) + err = json.Unmarshal([]byte(jsonStr), &data) + logger.Dev("6\n", jsonutils.ToJson(data)) + if err != nil { return nil, err } From 7ceed86c99afcef1c5dd47afd29ba785d6fc72e9 Mon Sep 17 00:00:00 2001 From: CodeShell <122738806+CodeShellDev@users.noreply.github.com> Date: Sat, 20 Sep 2025 14:44:21 +0200 Subject: [PATCH 6/6] possible fix (testing) --- internals/proxy/middlewares/aliases.go | 2 +- internals/proxy/middlewares/message.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/internals/proxy/middlewares/aliases.go b/internals/proxy/middlewares/aliases.go index d38e81a..1f737b9 100644 --- a/internals/proxy/middlewares/aliases.go +++ b/internals/proxy/middlewares/aliases.go @@ -107,7 +107,7 @@ func getData(key string, aliases []middlewareTypes.DataAlias, data map[string]an value = aliasValue } - data[alias.Alias] = nil + delete(data, alias.Alias) } } diff --git a/internals/proxy/middlewares/message.go b/internals/proxy/middlewares/message.go index 4c5232a..67b5492 100644 --- a/internals/proxy/middlewares/message.go +++ b/internals/proxy/middlewares/message.go @@ -84,7 +84,7 @@ func (data MessageMiddleware) Use() http.Handler { func TemplateMessage(template string, data map[string]any, VARIABLES map[string]any) (map[string]any, error) { log.Dev(template) - data["message"] = template + data["message_template"] = template data, ok, err := TemplateBody(data, VARIABLES) @@ -92,5 +92,9 @@ func TemplateMessage(template string, data map[string]any, VARIABLES map[string] return data, err } + data["message"] = data["message_template"] + + delete(data, "message_template") + return data, nil } \ No newline at end of file