6 use FS::SelfService qw(passwd);
8 use CGI::Carp qw(fatalsToBrowser);
10 my $freeside_uid = scalar(getpwnam('freeside'));
12 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
13 $ENV{'SHELL'} = '/bin/sh';
14 $ENV{'IFS'} = " \t\n";
17 $ENV{'BASH_ENV'} = '';
19 die "passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
23 $cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username";
26 $cgi->param('domain') =~ /^([^\n]{0,255}$)/ or die "Illegal domain";
29 $cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password";
30 my $old_password = $1;
32 $cgi->param('new_password') =~ /^([^\n]{0,255}$)/ or die "Illegal new_password";
33 my $new_password = $1;
35 die "New passwords don't match"
36 unless $new_password eq $cgi->param('new_password2');
41 'old_password' => $old_password,
42 'new_password' => $new_password,
45 my $error = $rv->{error};
50 print $cgi->header(), <<END;
53 <title>Password changed</title>
55 <body bgcolor="#e8e8e8">
56 <h3>Password changed</h3>
57 <br>Your password has been changed.