$conf = FS::Conf->new;
});
+our @pw_set;
+
our $me = '[' . __PACKAGE__ . ']';
our $BLOWFISH_COST = 10;
=back
+=head1 CLASS METHODS
+
+=over 4
+
+=item pw_set
+
+Returns the list of characters allowed in random passwords (from the
+C<password-generated-characters> config).
+
+=cut
+
+sub pw_set {
+ my $class = shift;
+ if (!@pw_set) {
+ my $pw_set = $conf->config('password-generated-characters');
+ $pw_set =~ s/\s//g; # don't ever allow whitespace
+ if ( $pw_set =~ /[[:lower:]]/
+ && $pw_set =~ /[[:upper:]]/
+ && $pw_set =~ /[[:digit:]]/
+ && $pw_set =~ /[[:punct:]]/ ) {
+ @pw_set = split('', $pw_set);
+ } else {
+ warn "password-generated-characters set is insufficient; using default.";
+ @pw_set = split('', 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ23456789()#.,');
+ }
+ }
+ return @pw_set;
+}
+
+=back
+
=head1 SEE ALSO
L<FS::password_history>