[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";