apg-go/chars/chars.go

50 lines
1.4 KiB
Go
Raw Normal View History

package chars
2021-03-21 14:05:14 +01:00
import (
"github.com/wneessen/apg-go/config"
"regexp"
)
const PwLowerCharsHuman string = "abcdefghjkmnpqrstuvwxyz"
const PwUpperCharsHuman string = "ABCDEFGHJKMNPQRSTUVWXYZ"
const PwLowerChars string = "abcdefghijklmnopqrstuvwxyz"
const PwUpperChars string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
const PwSpecialCharsHuman string = "\"#%*+-/:;=\\_|~"
const PwSpecialChars string = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
const PwNumbersHuman string = "23456789"
const PwNumbers string = "1234567890"
2021-03-21 14:05:14 +01:00
// GetRange provides the range of available characters based on configured parameters
func GetRange(config *config.Config) string {
2021-03-21 14:05:14 +01:00
pwUpperChars := PwUpperChars
pwLowerChars := PwLowerChars
pwNumbers := PwNumbers
pwSpecialChars := PwSpecialChars
if config.HumanReadable {
2021-03-21 14:05:14 +01:00
pwUpperChars = PwUpperCharsHuman
pwLowerChars = PwLowerCharsHuman
pwNumbers = PwNumbersHuman
pwSpecialChars = PwSpecialCharsHuman
}
var charRange string
if config.UseLowerCase {
2021-03-21 14:05:14 +01:00
charRange = charRange + pwLowerChars
}
if config.UseUpperCase {
2021-03-21 14:05:14 +01:00
charRange = charRange + pwUpperChars
}
if config.UseNumber {
2021-03-21 14:05:14 +01:00
charRange = charRange + pwNumbers
}
if config.UseSpecial {
2021-03-21 14:05:14 +01:00
charRange = charRange + pwSpecialChars
}
if config.ExcludeChars != "" {
regExp := regexp.MustCompile("[" + regexp.QuoteMeta(config.ExcludeChars) + "]")
2021-03-21 14:05:14 +01:00
charRange = regExp.ReplaceAllLiteralString(charRange, "")
}
return charRange
}