5 use FS::SelfService qw(passwd);
7 use CGI::Carp qw(fatalsToBrowser);
9 my $freeside_uid = scalar(getpwnam('freeside'));
11 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
12 $ENV{'SHELL'} = '/bin/sh';
13 $ENV{'IFS'} = " \t\n";
16 $ENV{'BASH_ENV'} = '';
18 die "passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
22 $cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username";
25 $cgi->param('domain') =~ /^([^\n]{0,255}$)/ or die "Illegal domain";
28 $cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password";
29 my $old_password = $1;
31 $cgi->param('new_password') =~ /^([^\n]{0,255}$)/ or die "Illegal new_password";
32 my $new_password = $1;
34 die "New passwords don't match"
35 unless $new_password eq $cgi->param('new_password2');
40 'old_password' => $old_password,
41 'new_password' => $new_password,
44 my $error = $rv->{error};
49 print $cgi->header(), <<END;
52 <title>Password changed</title>
54 <body bgcolor="#e8e8e8">
55 <h3>Password changed</h3>
56 <br>Your password has been changed.