package rules import ( "regexp" "github.com/rs/zerolog/log" "github.com/zricethezav/gitleaks/v8/config" "github.com/zricethezav/gitleaks/v8/detect" ) func PyPiUploadToken() *config.Rule { // define rule r := config.Rule{ Description: "PyPI upload token", RuleID: "pypi-upload-token", Regex: regexp.MustCompile( `pypi-AgEIcHlwaS5vcmc[A-Za-z0-9\-_]{50,1000}`), Keywords: []string{ "pypi-AgEIcHlwaS5vcmc", }, } // validate tps := []string{"pypiToken := \"pypi-AgEIcHlwaS5vcmc" + sampleHex32Token + sampleHex32Token + "\""} d := detect.NewDetector(config.Config{ Rules: []*config.Rule{&r}, }) for _, tp := range tps { if len(d.DetectString(tp)) != 1 { log.Fatal().Msg("Failed to validate pypi-upload-token") } } return &r }