diff options
Diffstat (limited to 'fs_passwd')
-rwxr-xr-x | fs_passwd/fs_passwd.cgi | 21 | ||||
-rw-r--r-- | fs_passwd/fs_passwd.html | 3 |
2 files changed, 15 insertions, 9 deletions
diff --git a/fs_passwd/fs_passwd.cgi b/fs_passwd/fs_passwd.cgi index 3f676fff3..38b70d0cf 100755 --- a/fs_passwd/fs_passwd.cgi +++ b/fs_passwd/fs_passwd.cgi @@ -2,12 +2,10 @@ use strict; use Getopt::Std; -use Socket; -use IO::Handle; +use FS::SelfService qw(passwd); 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'; @@ -24,6 +22,9 @@ my $cgi = new CGI; $cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username"; my $me = $1; +$cgi->param('domain') =~ /^([^\n]{0,255}$)/ or die "Illegal domain"; +my $domain = $1; + $cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password"; my $old_password = $1; @@ -33,12 +34,14 @@ my $new_password = $1; die "New passwords don't match" unless $new_password eq $cgi->param('new_password2'); -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; +my $rv = passwd( + 'username' => $me, + 'domain' => $domain, + 'old_password' => $old_password, + 'new_password' => $new_password, +); + +my $error = $rv->{error}; if ($error) { die $error; diff --git a/fs_passwd/fs_passwd.html b/fs_passwd/fs_passwd.html index fadc4df8b..7e06ecff1 100644 --- a/fs_passwd/fs_passwd.html +++ b/fs_passwd/fs_passwd.html @@ -9,6 +9,9 @@ <tr><th align="right">Username</th> <td><input type="text" name="username" size="18"></td> </tr> + <tr><th align="right">Domain</th> + <td><input type="text" name="domain" size="18"></td> + </tr> <tr><th align="right">Current password</th> <td><input type="password" name="old_password" size="18"></td> </tr> |