summaryrefslogtreecommitdiff
path: root/fs_passwd/fs_passwd.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'fs_passwd/fs_passwd.cgi')
-rwxr-xr-xfs_passwd/fs_passwd.cgi17
1 files changed, 9 insertions, 8 deletions
diff --git a/fs_passwd/fs_passwd.cgi b/fs_passwd/fs_passwd.cgi
index 34a33c7f5..3f676fff3 100755
--- a/fs_passwd/fs_passwd.cgi
+++ b/fs_passwd/fs_passwd.cgi
@@ -2,10 +2,12 @@
use strict;
use Getopt::Std;
-use FS::SelfService qw(passwd);
+use Socket;
+use IO::Handle;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
+my $fs_passwdd_socket = "/usr/local/freeside/fs_passwdd_socket";
my $freeside_uid = scalar(getpwnam('freeside'));
$ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
@@ -31,13 +33,12 @@ my $new_password = $1;
die "New passwords don't match"
unless $new_password eq $cgi->param('new_password2');
-my $rv = passwd(
- 'username' => $me,
- 'old_password' => $old_password,
- 'new_password' => $new_password,
-);
-
-my $error = $rv->{error};
+socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
+connect(SOCK, sockaddr_un($fs_passwdd_socket)) or die "connect: $!";
+print SOCK join("\n", $me, $old_password, $new_password, '', ''), "\n";
+SOCK->flush;
+my $error = <SOCK>;
+chomp $error;
if ($error) {
die $error;