add upload of batch result from TD Canada Trust
[freeside.git] / fs_passwd / fs_passwd.cgi
1 #!/usr/bin/perl -Tw
2
3 use strict;
4 use Getopt::Std;
5 use Socket;
6 use IO::Handle;
7 use CGI;
8 use CGI::Carp qw(fatalsToBrowser);
9
10 my $fs_passwdd_socket = "/usr/local/freeside/fs_passwdd_socket";
11 my $freeside_uid = scalar(getpwnam('freeside'));
12
13 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
14 $ENV{'SHELL'} = '/bin/sh';
15 $ENV{'IFS'} = " \t\n";
16 $ENV{'CDPATH'} = '';
17 $ENV{'ENV'} = '';
18 $ENV{'BASH_ENV'} = '';
19
20 die "fs_passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
21
22 my $cgi = new CGI;
23
24 $cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username";
25 my $me = $1;
26
27 $cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password";
28 my $old_password = $1;
29
30 $cgi->param('new_password') =~ /^([^\n]{0,255}$)/ or die "Illegal new_password";
31 my $new_password = $1;
32
33 die "New passwords don't match"
34   unless $new_password eq $cgi->param('new_password2');
35
36 socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
37 connect(SOCK, sockaddr_un($fs_passwdd_socket)) or die "connect: $!";
38 print SOCK join("\n", $me, $old_password, $new_password, '', ''), "\n";
39 SOCK->flush;
40 my $error = <SOCK>;
41 chomp $error;
42
43 if ($error) {
44   die $error;
45 } else {
46   print $cgi->header(), <<END;
47 <html>
48   <head>
49     <title>Password changed</title>
50   </head>
51   <body bgcolor="#e8e8e8">
52     <h3>Password changed</h3>
53 <br>Your password has been changed.
54   </body>
55 </html>
56 END
57 }