[LON-CAPA-cvs] cvs: loncom / lond
foxr
lon-capa-cvs@mail.lon-capa.org
Mon, 16 Sep 2002 13:26:21 -0000
foxr Mon Sep 16 09:26:21 2002 EDT
Modified files:
/loncom lond
Log:
Bug 701 -- attempt to capture status from lcuseradd and lcpasswd.. not
yet working, need to be smarter... but the infrastructure is there.
Index: loncom/lond
diff -u loncom/lond:1.96 loncom/lond:1.97
--- loncom/lond:1.96 Thu Sep 12 22:46:12 2002
+++ loncom/lond Mon Sep 16 09:26:21 2002
@@ -2,7 +2,7 @@
# The LearningOnline Network
# lond "LON Daemon" Server (port "LOND" 5663)
#
-# $Id: lond,v 1.96 2002/09/13 02:46:12 foxr Exp $
+# $Id: lond,v 1.97 2002/09/16 13:26:21 foxr Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -86,7 +86,7 @@
#
# The array below are password error strings."
#
-my $lasterror = 10; # Largest error number from lcpasswd.
+my $lastpwderror = 13; # Largest error number from lcpasswd.
my @passwderrors = ("ok",
"lcpasswd must be run as user 'www'",
"lcpasswd got incorrect number of arguments",
@@ -97,20 +97,54 @@
"lcpasswd Unable to su to root.",
"lcpasswd Cannot set new passwd.",
"lcpasswd Username has invalid characters",
- "lcpasswd Invalid characters in password");
+ "lcpasswd Invalid characters in password",
+ "11", "12",
+ "lcpasswd Password mismatch");
+
+
+# The array below are lcuseradd error strings.:
+
+my $lastadderror = 13;
+my @adderrors = ("ok",
+ "User ID mismatch, lcuseradd must run as user www",
+ "lcuseradd Incorrect number of command line parameters must be 3",
+ "lcuseradd Incorrect number of stdinput lines, must be 3",
+ "lcuseradd Too many other simultaneous pwd changes in progress",
+ "lcuseradd User does not exist",
+ "lcuseradd Unabel to mak ewww member of users's group",
+ "lcuseradd Unable to su to root",
+ "lcuseradd Unable to set password",
+ "lcuseradd Usrname has invbalid charcters",
+ "lcuseradd Password has an invalid character",
+ "lcuseradd User already exists",
+ "lcuseradd Could not add user.",
+ "lcuseradd Password mismatch");
+
#
# Convert an error return code from lcpasswd to a string value.
#
sub lcpasswdstrerror {
my $ErrorCode = shift;
- if(($ErrorCode < 0) || ($ErrorCode > $lasterror)) {
+ if(($ErrorCode < 0) || ($ErrorCode > $lastpwderror)) {
return "lcpasswd Unrecognized error return value ".$ErrorCode;
} else {
return $passwderrors($ErrorCode);
}
}
+#
+# Convert an error return code from lcuseradd to a string value:
+#
+sub lcuseraddstrerror {
+ my $ErrorCode = shift;
+ if(($ErrorCode < 0) || ($ErrorCode > $lastadderror)) {
+ return "lcuseradd - Unrecognized error code: ".$ErrorCode;
+ } else {
+ return $adderrors($ErrorCode);
+ }
+}
+
# grabs exception and records it to log before exiting
sub catchexception {
my ($error)=@_;
@@ -762,14 +796,15 @@
die "Cannot invoke authentication";
print PWAUTH "$uname\n$upass\n";
close PWAUTH;
- $pwdcorrect=!$?;
+ my $pwdcorrect=!$?;
}
if ($pwdcorrect) {
my $execdir=$perlvar{'lonDaemons'};
my $pf = IO::File->new("|$execdir/lcpasswd");
print $pf "$uname\n$npass\n$npass\n";
close $pf;
- my $result = ($?>0 ? 'pwchange_failure'
+ my $err = $?;
+ my $result = ($err>0 ? 'pwchange_failure'
: 'ok');
&logthis("Result of password change for $uname: ".
&lcpasswdstrerror($?));
@@ -1659,6 +1694,10 @@
print $se "$uname\n";
print $se "$npass\n";
print $se "$npass\n";
+ }
+ my $useraddok = $?;
+ if($useraddok > 0) {
+ &logthis("Failed lcuseradd: ".&lcuseraddstrerror($useraddok));
}
my $pf = IO::File->new(">$passfilename");
print $pf "unix:\n";