diff --git a/service/internal/executor/arguments.go b/service/internal/executor/arguments.go index ffe7b36..0276d5f 100644 --- a/service/internal/executor/arguments.go +++ b/service/internal/executor/arguments.go @@ -81,6 +81,7 @@ func parseActionArguments(values map[string]string, action *config.Action, entit return parsedShellCommand, nil } +//gocyclo:ignore func redactShellCommand(shellCommand string, arguments []config.ActionArgument, argumentValues map[string]string) string { for _, arg := range arguments { if arg.Type == "password" { @@ -92,7 +93,7 @@ func redactShellCommand(shellCommand string, arguments []config.ActionArgument, } if argValue == "" { - continue + continue } shellCommand = strings.ReplaceAll(shellCommand, argValue, "") @@ -237,30 +238,29 @@ func typeSafetyCheckUrl(value string) error { } func mangleInvalidArgumentValues(req *ExecutionRequest) { - mangleInvalidDatetimeValues(req) -} - -func mangleInvalidDatetimeValues(req *ExecutionRequest) { for _, arg := range req.Action.Arguments { if arg.Type == "datetime" { - value, exists := req.Arguments[arg.Name] - - if !exists || value == "" { - continue - } - - timestamp, err := time.Parse("2006-01-02T15:04", value) - - if err == nil { - log.WithFields(log.Fields { - "arg": arg.Name, - "value": value, - "actionTitle": req.Action.Title, - }).Warnf("Mangled invalid datetime value without seconds to :00 seconds, this issue is commonly caused by Android browsers.") - - req.Arguments[arg.Name] = timestamp.Format("2006-01-02T15:04:05") - } - + mangleInvalidDatetimeValues(req, &arg) } } } + +func mangleInvalidDatetimeValues(req *ExecutionRequest, arg *config.ActionArgument) { + value, exists := req.Arguments[arg.Name] + + if !exists || value == "" { + return + } + + timestamp, err := time.Parse("2006-01-02T15:04", value) + + if err == nil { + log.WithFields(log.Fields{ + "arg": arg.Name, + "value": value, + "actionTitle": req.Action.Title, + }).Warnf("Mangled invalid datetime value without seconds to :00 seconds, this issue is commonly caused by Android browsers.") + + req.Arguments[arg.Name] = timestamp.Format("2006-01-02T15:04:05") + } +} diff --git a/service/internal/executor/arguments_test.go b/service/internal/executor/arguments_test.go index f280cf0..a05c171 100644 --- a/service/internal/executor/arguments_test.go +++ b/service/internal/executor/arguments_test.go @@ -149,7 +149,7 @@ func TestRedactShellCommand(t *testing.T) { values := map[string]string{ "personName": "Fred", - "password": "toomanysecrets", + "password": "toomanysecrets", } res := redactShellCommand(cmd, args, values) diff --git a/service/internal/executor/executor_test.go b/service/internal/executor/executor_test.go index 87031ca..6c59ae4 100644 --- a/service/internal/executor/executor_test.go +++ b/service/internal/executor/executor_test.go @@ -247,11 +247,11 @@ func TestMangleInvalidArgumentValues(t *testing.T) { cfg.Sanitize() req := ExecutionRequest{ - Action: a1, + Action: a1, AuthenticatedUser: acl.UserFromSystem(cfg, "testuser"), Cfg: cfg, - Arguments: map[string]string{ - "date": "1990-01-10T12:00", // Invalid format, should be without seconds + Arguments: map[string]string{ + "date": "1990-01-10T12:00", // Invalid format, should be without seconds }, }