# changepass-lib.pl

do '../web-lib.pl';
&init_config();
require '../ui-lib.pl';
require 'md5-lib.pl';

# check_password(password, username)
sub check_password
{
return &text('change_epasswd_min', $config{'passwd_min'})
	if (length($_[0]) < $config{'passwd_min'});
local $re = $config{'passwd_re'};
return &text('change_epasswd_re', $re)
	if ($re && !eval { $_[0] =~ /$re/ });
if ($config{'passwd_same'}) {
	return &text('change_epasswd_same')
		if ($_[0] =~ /\Q$_[1]\E/i);
	}
if ($config{'passwd_new'}) {
	return &text('change_epasswd_new')
		if (lc($_[0]) eq lc($in{'old'}));
	}
if ($config{'passwd_dict'} && $_[0] =~ /^[A-Za-z\'\-]+$/ &&
    (&has_command("ispell") || &has_command("spell"))) {
	local $temp = &transname();
	open(TEMP, ">$temp");
	print TEMP $_[0],"\n";
	close(TEMP);
	if (&has_command("ispell")) {
		open(SPELL, "ispell -a <$temp |");
		while(<SPELL>) {
			if (/^(#|\&|\?)/) {
				$unknown++;
				}
			}
		close(SPELL);
		}
	else {
		open(SPELL, "spell <$temp |");
		local $line = <SPELL>;
		$unknown++ if ($line);
		close(SPELL);
		}
	unlink($temp);
	return &text('change_epasswd_dict') if (!$unknown);
	}
if ($config{'passwd_prog'}) {
        # Run external program with username and password as args
        local $qu = quotemeta($_[1]);
        local $qp = quotemeta($_[0]);
        local $out = `$config{'passwd_prog'} $qu $qp 2>&1 </dev/null`;
        if ($?) {
                return $out;
                }
        }
return undef;
}

1;



syntax highlighted by Code2HTML, v. 0.9.1