github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/terraform/parser/functions.go (about) 1 package parser 2 3 import ( 4 "io/fs" 5 6 "github.com/hashicorp/hcl/v2/ext/tryfunc" 7 "github.com/khulnasoft-lab/defsec/pkg/scanners/terraform/parser/funcs" 8 ctyyaml "github.com/zclconf/go-cty-yaml" 9 "github.com/zclconf/go-cty/cty" 10 "github.com/zclconf/go-cty/cty/function" 11 "github.com/zclconf/go-cty/cty/function/stdlib" 12 ) 13 14 // Functions returns the set of functions that should be used to when evaluating 15 // expressions in the receiving scope. 16 func Functions(target fs.FS, baseDir string) map[string]function.Function { 17 return map[string]function.Function{ 18 "abs": stdlib.AbsoluteFunc, 19 "abspath": funcs.AbsPathFunc, 20 "basename": funcs.BasenameFunc, 21 "base64decode": funcs.Base64DecodeFunc, 22 "base64encode": funcs.Base64EncodeFunc, 23 "base64gzip": funcs.Base64GzipFunc, 24 "base64sha256": funcs.Base64Sha256Func, 25 "base64sha512": funcs.Base64Sha512Func, 26 "bcrypt": funcs.BcryptFunc, 27 "can": tryfunc.CanFunc, 28 "ceil": stdlib.CeilFunc, 29 "chomp": stdlib.ChompFunc, 30 "cidrhost": funcs.CidrHostFunc, 31 "cidrnetmask": funcs.CidrNetmaskFunc, 32 "cidrsubnet": funcs.CidrSubnetFunc, 33 "cidrsubnets": funcs.CidrSubnetsFunc, 34 "coalesce": funcs.CoalesceFunc, 35 "coalescelist": stdlib.CoalesceListFunc, 36 "compact": stdlib.CompactFunc, 37 "concat": stdlib.ConcatFunc, 38 "contains": stdlib.ContainsFunc, 39 "csvdecode": stdlib.CSVDecodeFunc, 40 "dirname": funcs.DirnameFunc, 41 "distinct": stdlib.DistinctFunc, 42 "element": stdlib.ElementFunc, 43 "chunklist": stdlib.ChunklistFunc, 44 "file": funcs.MakeFileFunc(target, baseDir, false), 45 "fileexists": funcs.MakeFileExistsFunc(baseDir), 46 "fileset": funcs.MakeFileSetFunc(baseDir), 47 "filebase64": funcs.MakeFileFunc(target, baseDir, true), 48 "filebase64sha256": funcs.MakeFileBase64Sha256Func(target, baseDir), 49 "filebase64sha512": funcs.MakeFileBase64Sha512Func(target, baseDir), 50 "filemd5": funcs.MakeFileMd5Func(target, baseDir), 51 "filesha1": funcs.MakeFileSha1Func(target, baseDir), 52 "filesha256": funcs.MakeFileSha256Func(target, baseDir), 53 "filesha512": funcs.MakeFileSha512Func(target, baseDir), 54 "flatten": stdlib.FlattenFunc, 55 "floor": stdlib.FloorFunc, 56 "format": stdlib.FormatFunc, 57 "formatdate": stdlib.FormatDateFunc, 58 "formatlist": stdlib.FormatListFunc, 59 "indent": stdlib.IndentFunc, 60 "index": funcs.IndexFunc, // stdlib.IndexFunc is not compatible 61 "join": stdlib.JoinFunc, 62 "jsondecode": stdlib.JSONDecodeFunc, 63 "jsonencode": stdlib.JSONEncodeFunc, 64 "keys": stdlib.KeysFunc, 65 "length": funcs.LengthFunc, 66 "list": funcs.ListFunc, 67 "log": stdlib.LogFunc, 68 "lookup": funcs.LookupFunc, 69 "lower": stdlib.LowerFunc, 70 "map": funcs.MapFunc, 71 "matchkeys": funcs.MatchkeysFunc, 72 "max": stdlib.MaxFunc, 73 "md5": funcs.Md5Func, 74 "merge": stdlib.MergeFunc, 75 "min": stdlib.MinFunc, 76 "parseint": stdlib.ParseIntFunc, 77 "pathexpand": funcs.PathExpandFunc, 78 "pow": stdlib.PowFunc, 79 "range": stdlib.RangeFunc, 80 "regex": stdlib.RegexFunc, 81 "regexall": stdlib.RegexAllFunc, 82 "replace": funcs.ReplaceFunc, 83 "reverse": stdlib.ReverseListFunc, 84 "rsadecrypt": funcs.RsaDecryptFunc, 85 "setintersection": stdlib.SetIntersectionFunc, 86 "setproduct": stdlib.SetProductFunc, 87 "setsubtract": stdlib.SetSubtractFunc, 88 "setunion": stdlib.SetUnionFunc, 89 "sha1": funcs.Sha1Func, 90 "sha256": funcs.Sha256Func, 91 "sha512": funcs.Sha512Func, 92 "signum": stdlib.SignumFunc, 93 "slice": stdlib.SliceFunc, 94 "sort": stdlib.SortFunc, 95 "split": stdlib.SplitFunc, 96 "strrev": stdlib.ReverseFunc, 97 "substr": stdlib.SubstrFunc, 98 "timestamp": funcs.TimestampFunc, 99 "timeadd": stdlib.TimeAddFunc, 100 "title": stdlib.TitleFunc, 101 "tostring": funcs.MakeToFunc(cty.String), 102 "tonumber": funcs.MakeToFunc(cty.Number), 103 "tobool": funcs.MakeToFunc(cty.Bool), 104 "toset": funcs.MakeToFunc(cty.Set(cty.DynamicPseudoType)), 105 "tolist": funcs.MakeToFunc(cty.List(cty.DynamicPseudoType)), 106 "tomap": funcs.MakeToFunc(cty.Map(cty.DynamicPseudoType)), 107 "transpose": funcs.TransposeFunc, 108 "trim": stdlib.TrimFunc, 109 "trimprefix": stdlib.TrimPrefixFunc, 110 "trimspace": stdlib.TrimSpaceFunc, 111 "trimsuffix": stdlib.TrimSuffixFunc, 112 "try": tryfunc.TryFunc, 113 "upper": stdlib.UpperFunc, 114 "urlencode": funcs.URLEncodeFunc, 115 "uuid": funcs.UUIDFunc, 116 "uuidv5": funcs.UUIDV5Func, 117 "values": stdlib.ValuesFunc, 118 "yamldecode": ctyyaml.YAMLDecodeFunc, 119 "yamlencode": ctyyaml.YAMLEncodeFunc, 120 "zipmap": stdlib.ZipmapFunc, 121 } 122 123 }