mirror of
https://github.com/wneessen/apg-go.git
synced 2024-11-22 05:40:51 +01:00
Winni Neessen
b31219046a
The naming and handling of mode bitmasks have been refactored for improved code readability and maintainability. The term "Mode" was replaced with "ModeMask" for clarity and all associated functions were renamed accordingly (e.g., "SetMode" to "MaskSetMode"). These changes provide better insight into the function of the code and increase understandability for future development efforts. The command-line utility now also supports specifying modes via the "-M" flag.
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
package apg
|
|
|
|
// List of default values for Config instances
|
|
const (
|
|
// DefaultMinLength reflects the default minimum length of a generated password
|
|
DefaultMinLength int64 = 12
|
|
// DefaultMaxLength reflects the default maximum length of a generated password
|
|
DefaultMaxLength int64 = 20
|
|
// DefaultNumberPass reflects the default amount of passwords returned by the generator
|
|
DefaultNumberPass int64 = 6
|
|
)
|
|
|
|
// Config represents the apg.Generator config parameters
|
|
type Config struct {
|
|
// Algo
|
|
Algorithm Algorithm
|
|
// MaxLength sets the maximum length for a generated password
|
|
MaxLength int64
|
|
// MinLength sets the minimum length for a generated password
|
|
MinLength int64
|
|
// Modes holds the different character modes for the Random algorithm
|
|
Modes ModeMask
|
|
// NumberPass sets the number of passwords that are generated
|
|
// and returned by the generator
|
|
NumberPass int64
|
|
}
|
|
|
|
// Option is a function that can override default Config settings
|
|
type Option func(*Config)
|
|
|
|
// NewConfig creates a new Config instance and pre-fills it with sane
|
|
// default settings. The Config is returned as pointer value
|
|
func NewConfig(o ...Option) *Config {
|
|
c := &Config{
|
|
MaxLength: DefaultMaxLength,
|
|
MinLength: DefaultMinLength,
|
|
NumberPass: DefaultNumberPass,
|
|
}
|
|
|
|
// Override defaults with optionally provided config.Option functions
|
|
for _, co := range o {
|
|
if co == nil {
|
|
continue
|
|
}
|
|
co(c)
|
|
}
|
|
return c
|
|
}
|
|
|
|
// WithMinLength overrides the minimum password length
|
|
func WithMinLength(l int64) Option {
|
|
return func(c *Config) {
|
|
c.MinLength = l
|
|
}
|
|
}
|
|
|
|
// WithMaxLength overrides the maximum password length
|
|
func WithMaxLength(l int64) Option {
|
|
return func(c *Config) {
|
|
c.MaxLength = l
|
|
}
|
|
}
|
|
|
|
// WithNumberPass overrides the number of generated passwords setting
|
|
func WithNumberPass(n int64) Option {
|
|
return func(c *Config) {
|
|
c.NumberPass = n
|
|
}
|
|
}
|