main.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package main
  2. import (
  3. "os"
  4. "text/template"
  5. "github.com/rs/zerolog/log"
  6. "github.com/zricethezav/gitleaks/v8/cmd/generate/config/rules"
  7. "github.com/zricethezav/gitleaks/v8/config"
  8. )
  9. const (
  10. templatePath = "rules/config.tmpl"
  11. )
  12. func main() {
  13. configRules := []*config.Rule{}
  14. configRules = append(configRules, rules.AdobeClientID())
  15. configRules = append(configRules, rules.AdobeClientSecret())
  16. configRules = append(configRules, rules.AgeSecretKey())
  17. configRules = append(configRules, rules.AlgoliaApiKey())
  18. configRules = append(configRules, rules.AlibabaAccessKey())
  19. configRules = append(configRules, rules.AlibabaSecretKey())
  20. configRules = append(configRules, rules.AsanaClientID())
  21. configRules = append(configRules, rules.AsanaClientSecret())
  22. configRules = append(configRules, rules.Atlassian())
  23. configRules = append(configRules, rules.AWS())
  24. configRules = append(configRules, rules.BitBucketClientID())
  25. configRules = append(configRules, rules.BitBucketClientSecret())
  26. configRules = append(configRules, rules.Beamer())
  27. configRules = append(configRules, rules.Clojars())
  28. configRules = append(configRules, rules.Contentful())
  29. configRules = append(configRules, rules.Databricks())
  30. configRules = append(configRules, rules.DiscordAPIToken())
  31. configRules = append(configRules, rules.DiscordClientID())
  32. configRules = append(configRules, rules.DiscordClientSecret())
  33. configRules = append(configRules, rules.DropBoxAPISecret())
  34. configRules = append(configRules, rules.DropBoxLongLivedAPIToken())
  35. configRules = append(configRules, rules.DropBoxShortLivedAPIToken())
  36. configRules = append(configRules, rules.Doppler())
  37. configRules = append(configRules, rules.Duffel())
  38. configRules = append(configRules, rules.Dynatrace())
  39. configRules = append(configRules, rules.EasyPost())
  40. configRules = append(configRules, rules.EasyPostTestAPI())
  41. configRules = append(configRules, rules.Facebook())
  42. configRules = append(configRules, rules.FastlyAPIToken())
  43. configRules = append(configRules, rules.FinicityClientSecret())
  44. configRules = append(configRules, rules.FinicityAPIToken())
  45. configRules = append(configRules, rules.FlutterwavePublicKey())
  46. configRules = append(configRules, rules.FlutterwaveSecretKey())
  47. configRules = append(configRules, rules.FlutterwaveEncKey())
  48. configRules = append(configRules, rules.FrameIO())
  49. configRules = append(configRules, rules.GoCardless())
  50. // TODO figure out what makes sense for GCP
  51. // configRules = append(configRules, rules.GCPServiceAccount())
  52. configRules = append(configRules, rules.GitHubPat())
  53. configRules = append(configRules, rules.GitHubOauth())
  54. configRules = append(configRules, rules.GitHubApp())
  55. configRules = append(configRules, rules.GitHubRefresh())
  56. configRules = append(configRules, rules.Gitlab())
  57. configRules = append(configRules, rules.Hashicorp())
  58. configRules = append(configRules, rules.Heroku())
  59. configRules = append(configRules, rules.HubSpot())
  60. configRules = append(configRules, rules.Intercom())
  61. configRules = append(configRules, rules.LinearAPIToken())
  62. configRules = append(configRules, rules.LinearClientSecret())
  63. configRules = append(configRules, rules.LinkedinClientID())
  64. configRules = append(configRules, rules.LinkedinClientSecret())
  65. configRules = append(configRules, rules.LobAPIToken())
  66. configRules = append(configRules, rules.LobPubAPIToken())
  67. configRules = append(configRules, rules.MailChimp())
  68. configRules = append(configRules, rules.MailGunPubAPIToken())
  69. configRules = append(configRules, rules.MailGunPrivateAPIToken())
  70. configRules = append(configRules, rules.MailGunSigningKey())
  71. configRules = append(configRules, rules.MapBox())
  72. configRules = append(configRules, rules.MessageBirdAPIToken())
  73. configRules = append(configRules, rules.MessageBirdClientID())
  74. configRules = append(configRules, rules.NewRelicUserID())
  75. configRules = append(configRules, rules.NewRelicUserKey())
  76. configRules = append(configRules, rules.NewRelicBrowserAPIKey())
  77. configRules = append(configRules, rules.NPM())
  78. configRules = append(configRules, rules.PlanetScalePassword())
  79. configRules = append(configRules, rules.PlanetScaleAPIToken())
  80. configRules = append(configRules, rules.PlanetScaleOAuthToken())
  81. configRules = append(configRules, rules.PostManAPI())
  82. configRules = append(configRules, rules.PrivateKey())
  83. configRules = append(configRules, rules.PulumiAPIToken())
  84. configRules = append(configRules, rules.PyPiUploadToken())
  85. configRules = append(configRules, rules.RubyGemsAPIToken())
  86. configRules = append(configRules, rules.SendGridAPIToken())
  87. configRules = append(configRules, rules.SendInBlueAPIToken())
  88. configRules = append(configRules, rules.ShippoAPIToken())
  89. configRules = append(configRules, rules.ShopifyAccessToken())
  90. configRules = append(configRules, rules.ShopifyCustomAccessToken())
  91. configRules = append(configRules, rules.ShopifyPrivateAppAccessToken())
  92. configRules = append(configRules, rules.ShopifySharedSecret())
  93. configRules = append(configRules, rules.SlackAccessToken())
  94. configRules = append(configRules, rules.SlackWebHook())
  95. configRules = append(configRules, rules.StripeAccessToken())
  96. configRules = append(configRules, rules.Twilio())
  97. configRules = append(configRules, rules.TwitchAPIToken())
  98. configRules = append(configRules, rules.Twitter())
  99. configRules = append(configRules, rules.Typeform())
  100. configRules = append(configRules, rules.GenericCredential())
  101. // ensure rules have unique ids
  102. ruleLookUp := make(map[string]bool)
  103. for _, rule := range configRules {
  104. // check if rule is in ruleLookUp
  105. if _, ok := ruleLookUp[rule.RuleID]; ok {
  106. log.Fatal().Msgf("rule id %s is not unique", rule.RuleID)
  107. }
  108. ruleLookUp[rule.RuleID] = true
  109. }
  110. config := config.Config{
  111. Rules: configRules,
  112. }
  113. tmpl, err := template.ParseFiles(templatePath)
  114. if err != nil {
  115. log.Fatal().Err(err).Msg("Failed to parse template")
  116. }
  117. f, err := os.Create("../../../config/gitleaks.toml")
  118. if err != nil {
  119. log.Fatal().Err(err).Msg("Failed to create rules.toml")
  120. }
  121. tmpl.Execute(f, config)
  122. }