Diff for /loncom/Attic/lcuseradd between versions 1.38 and 1.43

version 1.38, 2005/07/29 17:33:18 version 1.43, 2013/08/10 01:15:13
Line 49  use File::Find; Line 49  use File::Find;
 #  #
 # Standard input (STDIN) usage  # Standard input (STDIN) usage
 # First line is USERNAME  # First line is USERNAME
 # Second line is PASSWORD  # Second line is DOMAIN
 # Third line is PASSWORD  # Third line is PASSWORD
 # Fouth line is the name of a file to which an error code will be written.  # Fourth line is PASSWORD
   # Fifth line is the name of a file to which an error code will be written.
 #            If the fourth line is omitted, no error file will be written.  #            If the fourth line is omitted, no error file will be written.
 #            In either case, the program Exits with the code as its Exit status.  #            In either case, the program Exits with the code as its Exit status.
 #            The error file will just be a single line containing an  #            The error file will just be a single line containing an
Line 59  use File::Find; Line 60  use File::Find;
 #              #            
 #    #  
 #  #
 # Command-line arguments [USERNAME] [PASSWORD] [PASSWORD]  # Command-line arguments [USERNAME] [DOMAIN] [PASSWORD] [PASSWORD]
 # Yes, but be very careful here (don't pass shell commands)  # Yes, but be very careful here (don't pass shell commands)
 # and this is only supported to allow perl-system calls.  # and this is only supported to allow perl-system calls.
 #  #
Line 82  use File::Find; Line 83  use File::Find;
 # Usage within code  # Usage within code
 #  #
 # $Exitcode=  # $Exitcode=
 #      system("/home/httpd/perl/lcuseradd","NAME","PASSWORD1","PASSWORD2")/256;  #      system("/home/httpd/perl/lcuseradd","NAME","DOMAIN","PASSWORD1","PASSWORD2")/256;
 # print "uh-oh" if $Exitcode;  # print "uh-oh" if $Exitcode;
   
 # ---------------------------------------------------- Description of functions  # ---------------------------------------------------- Description of functions
Line 121  delete @ENV{qw(IFS CDPATH ENV BASH_ENV)} Line 122  delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}
 # Do not print error messages.  # Do not print error messages.
 my $noprint=1;  my $noprint=1;
   
 #  Error file:  
   
 my $error_file; # This is either the error file name or undef.  
   
 print "In lcuseradd\n" unless $noprint;  print "In lcuseradd\n" unless $noprint;
   
 # ----------------------------- Make sure this process is running from user=www  # ----------------------------- Make sure this process is running from user=www
Line 166  if (@ARGV>=3) { Line 163  if (@ARGV>=3) {
     foreach (@input) {chomp;}      foreach (@input) {chomp;}
 }  }
   
 my ($username,$password1,$password2, $error_file)=@input;  my ($username,$domain,$password1,$password2, $error_file)=@input;
 print "Username = ".$username."\n" unless $noprint;  print "Username = ".$username."\n" unless $noprint;
 $username=~/^(\w+)$/;  $username=~/^(\w+)$/;
 print "Username after substitution - ".$username unless $noprint;  print "Username after substitution - ".$username unless $noprint;
 my $safeusername=$1;  my $safeusername=$1;
 print "Safe username = $safeusername \n" unless $noprint;  print "Safe username = $safeusername \n" unless $noprint;
   
   print "Domain = ".$domain."\n" unless $noprint;
   
 if (($username ne $safeusername) or ($safeusername!~/^[A-Za-z]/)) {  if (($username ne $safeusername) or ($safeusername!~/^[A-Za-z]/)) {
     print "Error. The user name specified $username $safeusername  has invalid characters.\n"      print "Error. The user name specified $username $safeusername  has invalid characters.\n"
  unless $noprint;   unless $noprint;
Line 320  if (!-e "/home/$safeusername") { Line 319  if (!-e "/home/$safeusername") {
     }      }
 }  }
   
 # ------------------------------ Make final modifications to the user directory  
 # -- Add a public_html file with a stand-in index.html file  
   
 if (-d "/home/$safeusername") {  
     system('/bin/chmod','-R','0660',"/home/$safeusername");  
     system('/bin/chmod','0710',"/home/$safeusername");  
     mkdir "/home/$safeusername/public_html",0755;  
     open OUT,">/home/$safeusername/public_html/index.html";  
     print OUT<<END;  
 <html>  
 <head>  
 <title>$safeusername</title>  
 </head>  
 <body>  
 <h1>Construction Space</h1>  
 <h3>$safeusername</h3>  
 </body>  
 </html>  
 END  
 close OUT;  
 }  
   
 #  
 #   In order to allow the loncapa daemons appropriate access  
 #   to public_html, Top level and public_html directories should  
 #   be owned by safeusername:safeusername as should the smaple index.html..  
 print "lcuseradd ownership\n" unless $noprint;  
 system('/bin/chown','-R',"$safeusername:$safeusername","/home/$safeusername"); # First set std ownership on everything.  
 &set_public_html_permissions("/home/$safeusername/public_html");  
 #  system('/bin/chown',"$safeusername:www","/home/$safeusername"); # Now adust top level...  
 #  system('/bin/chown','-R',"$safeusername:www","/home/$safeusername/public_html"); # And web dir.  
 # ---------------------------------------------------- Gracefull Apache Restart  # ---------------------------------------------------- Gracefull Apache Restart
   my $pidfile;
 if (-e '/var/run/httpd.pid') {  if (-e '/var/run/httpd.pid') {
       $pidfile = '/var/run/httpd.pid';
   } elsif (-e '/var/run/httpd2.pid') {   #Apache 2 on SuSE 10.1 and SLES10 
       $pidfile = '/var/run/httpd2.pid';
   } 
   
   if ($pidfile) {
     print "lcuseradd Apache restart\n" unless $noprint;      print "lcuseradd Apache restart\n" unless $noprint;
     open(PID,'/var/run/httpd.pid');      open(PID,"<$pidfile");
     my $pid=<PID>;      my $pid=<PID>;
     close(PID);      close(PID);
     my  $pid=~ /(\D+)/;      $pid=~ /(\D+)/;
     my $safepid = $1;      my $safepid = $1;
     if ($pid) {      if ($pid) {
  system('kill','-USR1',"$safepid");   system('kill','-USR1',"$safepid");
Line 376  sub enable_root_capability { Line 351  sub enable_root_capability {
     } else {      } else {
  # root capability is already enabled   # root capability is already enabled
     }      }
       if ($wwwid == $>) {
    print("Failed to become root\n") unless $noprint;
       } else {
    print("Became root\n") unless $noprint;
       }
     return $>;      return $>;
 }  }
   
Line 442  sub set_permission { Line 422  sub set_permission {
     print "\n" unless $noprint;      print "\n" unless $noprint;
   
 }  }
 #  
 #    Set up the correct permissions for all files in the   
 #    user's public htmldir. We just do a chmod -R 0660 ... for  
 #    the ordinary files.  The we use File::Find  
 #    to pop through the directory tree changing directories only  
 #    to 02770:  
 #  
 sub set_public_html_permissions {  
     my ($topdir) = @_;  
   
     #   Set the top level dir permissions (I'm not sure if find   
     #   will enumerate it specifically), correctly and all  
     #   files and dirs to the 'ordinary' file permissions:  
   
     system("chmod -R 0660 $topdir");  
     chmod(02770, $topdir);  
   
     #  Now use find to locate all directories under $topdir  
     #  and set their modes to 02770...  
     #  
     print "Find file\n " unless $noprint;  
     File::Find::find({"untaint"         => 1,  
       "untaint_pattern" => qr(/^(.*)$/),  
       "untaint_skip"    => 1,  
       "no_chdir"         => 1,  
       "wanted"          => \&set_permission }, "$topdir");  
   
   
 }  
   
 #-------------------------- Exit...  #-------------------------- Exit...
 #  #

Removed from v.1.38  
changed lines
  Added in v.1.43


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>