diff --git a/config/interpolate_funcs.go b/config/interpolate_funcs.go index 5538763c0ced..0ca16b56cd6a 100644 --- a/config/interpolate_funcs.go +++ b/config/interpolate_funcs.go @@ -2,7 +2,9 @@ package config import ( "bytes" + "crypto/sha1" "encoding/base64" + "encoding/hex" "errors" "fmt" "io/ioutil" @@ -38,6 +40,7 @@ func init() { "lower": interpolationFuncLower(), "replace": interpolationFuncReplace(), "split": interpolationFuncSplit(), + "sha1": interpolationFuncSha1(), "base64encode": interpolationFuncBase64Encode(), "base64decode": interpolationFuncBase64Decode(), "upper": interpolationFuncUpper(), @@ -586,3 +589,17 @@ func interpolationFuncUpper() ast.Function { }, } } + +func interpolationFuncSha1() ast.Function { + return ast.Function{ + ArgTypes: []ast.Type{ast.TypeString}, + ReturnType: ast.TypeString, + Callback: func(args []interface{}) (interface{}, error) { + s := args[0].(string) + h := sha1.New() + h.Write([]byte(s)) + hash := hex.EncodeToString(h.Sum(nil)) + return hash, nil + }, + } +}