/
usr
/
share
/
usermin
/
changepass
/
/usr/share/usermin/changepass
mkdir
upload
Name
Size
Mode
Actions
images/
-
0755
rm
ulang/
-
0755
rm
CHANGELOG
570
0644
edit
dl
rm
changepass-lib.pl
4045
0755
edit
dl
rm
changepass.cgi
8295
0755
edit
dl
rm
config
138
0644
edit
dl
rm
config-ALL-linux
136
0644
edit
dl
rm
config-freebsd
233
0644
edit
dl
rm
config-macos
151
0644
edit
dl
rm
config-netbsd
208
0644
edit
dl
rm
config-openbsd
154
0644
edit
dl
rm
config-openserver
151
0644
edit
dl
rm
config-qnx
159
0644
edit
dl
rm
config-solaris
136
0644
edit
dl
rm
config.info
812
0644
edit
dl
rm
config.info.ca
990
0755
edit
dl
rm
config.info.cs
872
0644
edit
dl
rm
config.info.de
689
0644
edit
dl
rm
config.info.el
1399
0644
edit
dl
rm
config.info.nl
929
0644
edit
dl
rm
config.info.no
852
0644
edit
dl
rm
index.cgi
1831
0755
edit
dl
rm
md5-lib.pl
7820
0755
edit
dl
rm
module.info
179
0644
edit
dl
rm
module.info.ar
0
0644
edit
dl
rm
module.info.ar.auto
213
0644
edit
dl
rm
module.info.bg
0
0644
edit
dl
rm
module.info.bg.auto
218
0644
edit
dl
rm
module.info.ca
29
0644
edit
dl
rm
module.info.ca.auto
106
0644
edit
dl
rm
module.info.cs
21
0644
edit
dl
rm
module.info.cs.auto
101
0644
edit
dl
rm
module.info.da
0
0644
edit
dl
rm
module.info.da.auto
134
0644
edit
dl
rm
module.info.de
81
0644
edit
dl
rm
module.info.de.auto
21
0644
edit
dl
rm
module.info.el
0
0644
edit
dl
rm
module.info.el.auto
213
0644
edit
dl
rm
module.info.es
32
0644
edit
dl
rm
module.info.es.auto
112
0644
edit
dl
rm
module.info.eu
0
0644
edit
dl
rm
module.info.eu.auto
116
0644
edit
dl
rm
module.info.fa
0
0644
edit
dl
rm
module.info.fa.auto
176
0644
edit
dl
rm
module.info.fi
0
0644
edit
dl
rm
module.info.fi.auto
133
0644
edit
dl
rm
module.info.fr
32
0644
edit
dl
rm
module.info.fr.auto
121
0644
edit
dl
rm
module.info.hr
0
0644
edit
dl
rm
module.info.hr.auto
132
0644
edit
dl
rm
module.info.hu
30
0644
edit
dl
rm
module.info.hu.auto
130
0644
edit
dl
rm
module.info.it
0
0644
edit
dl
rm
module.info.it.auto
127
0644
edit
dl
rm
module.info.ja
33
0644
edit
dl
rm
module.info.ja.auto
136
0644
edit
dl
rm
module.info.ko
0
0644
edit
dl
rm
module.info.ko.auto
154
0644
edit
dl
rm
module.info.ms
0
0644
edit
dl
rm
module.info.ms.auto
145
0644
edit
dl
rm
module.info.nl
30
0644
edit
dl
rm
module.info.nl.auto
108
0644
edit
dl
rm
module.info.no
22
0644
edit
dl
rm
module.info.no.auto
108
0644
edit
dl
rm
module.info.pl
109
0644
edit
dl
rm
module.info.pl.auto
99
0644
edit
dl
rm
module.info.pt
0
0644
edit
dl
rm
module.info.pt.auto
116
0644
edit
dl
rm
module.info.pt_BR
25
0644
edit
dl
rm
module.info.pt_BR.auto
102
0644
edit
dl
rm
module.info.ru
32
0644
edit
dl
rm
module.info.ru.auto
133
0644
edit
dl
rm
module.info.sk
0
0644
edit
dl
rm
module.info.sk.auto
125
0644
edit
dl
rm
module.info.sv
0
0644
edit
dl
rm
module.info.sv.auto
138
0644
edit
dl
rm
module.info.tr
0
0644
edit
dl
rm
module.info.tr.auto
147
0644
edit
dl
rm
module.info.uk
0
0644
edit
dl
rm
module.info.uk.auto
201
0644
edit
dl
rm
module.info.zh
0
0644
edit
dl
rm
module.info.zh.auto
112
0644
edit
dl
rm
module.info.zh_TW
0
0644
edit
dl
rm
module.info.zh_TW.auto
121
0644
edit
dl
rm
recovery.cgi
629
0755
edit
dl
rm
uconfig.info.de
845
0644
edit
dl
rm
webmin_menu.pl
339
0644
edit
dl
rm
Edit:
/usr/share/usermin/changepass/changepass-lib.pl
(4045B)
# changepass-lib.pl BEGIN { push(@INC, ".."); }; use WebminCore; &init_config(); require 'md5-lib.pl'; $recovery_file = $user_module_config_directory."/recovery"; # check_password(password, username) # Returns an error message if a password is invalid sub check_password { local ($pass, $username) = @_; return &text('change_epasswd_min', $config{'passwd_min'}) if (length($pass) < $config{'passwd_min'}); local $re = $config{'passwd_re'}; return &text('change_epasswd_re', $re) if ($re && !eval { $pass =~ /$re/ }); if ($config{'passwd_same'}) { return &text('change_epasswd_same') if ($pass =~ /\Q$username\E/i); } if ($config{'passwd_new'}) { return &text('change_epasswd_new') if (lc($pass) eq lc($in{'old'})); } if ($config{'passwd_dict'} && $pass =~ /^[A-Za-z\'\-]+$/) { return &text('change_epasswd_dict') if (&is_dictionary_word($pass)); } if ($config{'passwd_prog'}) { # Run external program with username and password as args local $qu = quotemeta($username); local $qp = quotemeta($pass); local $out = &backquote_command("$config{'passwd_prog'} $qu $qp 2>&1 </dev/null"); if ($?) { return $out; } } return undef; } # change_mailbox_passwords(user, old, new) # Change a user's password in Usermin IMAP folders. Returns a message about # the password change, if done sub change_mailbox_passwords { local ($user, $oldpass, $newpass) = @_; local $rv; if ($config{'mailbox'} && &foreign_check("mailbox")) { &foreign_require("mailbox", "mailbox-lib.pl"); foreach my $f (&mailbox::list_folders()) { if (($f->{'type'} == 2 || $f->{'type'} == 4) && ($f->{'user'} eq $user || $f->{'user'} eq '*') && $f->{'pass'} eq $oldpass && !$f->{'imapauto'} && !$f->{'autouser'}) { # Found one to change local $type = $f->{'type'} == 2 ? "pop3" : "imap"; local $file; if ($f->{'inbox'}) { # Need to change special inbox password file $file = "$mailbox::user_module_config_directory/inbox"; $rv = &text('change_inbox', uc($type)); } else { # Need to change folder's file $file = "$mailbox::user_module_config_directory/$f->{'id'}"; $rv = &text('change_folder', uc($type), $f->{'server'}); } $file .= ".".$type; local %data; &read_file($file, \%data); $data{'pass'} = $newpass; &write_file($file, \%data); } } } return $rv; } # change_samba_password(user, old, new) # Change a user's Samba password sub change_samba_password { local ($user, $oldpass, $newpass) = @_; local ($smbpasswd_binary) = split(/\s+/, $config{'smbpasswd'}); local $smbout; if (&has_command($smbpasswd_binary)) { $user = quotemeta($user); local $hout = &backquote_command("$config{'smbpasswd'} -h 2>&1"); if ($hout =~ /\s-s\s/) { # New version of smbpasswd which accepts the -s option local $temp = &transname(); open(TEMP, ">$temp"); if ($config{'smbpasswd'} =~ /\s-r\s/) { print TEMP $oldpass,"\n"; } print TEMP $newpass,"\n",$newpass,"\n"; close(TEMP); $smbout = &backquote_command( "$config{'smbpasswd'} -s $user 2>&1 <$temp"); unlink($temp); } else { # Old version of smbpasswd which takes password on command line local $pass = quotemeta($newpass); $smbout = &backquote_command( "$config{'smbpasswd'} $user $pass 2>&1 </dev/null"); } } return $smbout; } # get_recovery_address() # Returns the address from the recovery file sub get_recovery_address { my $rv = &eval_as_unix_user($remote_user, sub { &create_user_config_dirs(); &read_file_contents($user_module_config_directory."/recovery") }); $rv =~ s/\r|\n//g; return $rv; } # save_recovery_address(address) # Updates the user's password recovery address sub save_recovery_address { my ($addr) = @_; &eval_as_unix_user($remote_user, sub { &create_user_config_dirs(); &open_tempfile(ADDR, ">".$user_module_config_directory."/recovery"); if (defined($addr)) { &print_tempfile(ADDR, $addr,"\n"); } &close_tempfile(ADDR) }); } 1;
Save
cmd:
run