diff options
Diffstat (limited to 'fs_passwd/fs_passwd.cgi')
-rwxr-xr-x | fs_passwd/fs_passwd.cgi | 17 |
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; |