Diff for /loncom/Attic/lchtmldir between versions 1.1 and 1.9

version 1.1, 2002/04/27 12:01:50 version 1.9, 2004/10/18 10:56:50
Line 115  if($DEBUG) { Line 115  if($DEBUG) {
   
 }  }
   
 if( $authentication ne "unix"     &&  if( $authentication ne "unix:"     &&
     $authentication ne "internal" &&      $authentication ne "internal:" &&
     $authentication ne "krb4"     &&      $authentication !~ /^krb(4|5):(.*)/ &&
     $authentication ne "localauth") {      $authentication ne "localauth:") {
     if($DEBUG) {      if($DEBUG) {
  print("Invalid authentication parameter: ".$authentication."\n");   print("Invalid authentication parameter: ".$authentication."\n");
  print("Should be one of: unix, internal, krb4, localauth\n");   print("Should be one of: unix, internal, krb4, localauth\n");
Line 167  if(($dirtry1 ne $dir) or ($dirtry2 ne $d Line 167  if(($dirtry1 ne $dir) or ($dirtry2 ne $d
   
 # As root, create the directory.  # As root, create the directory.
   
 my $fulldir = $dirtry1."/public_html";  my $homedir = $dirtry1;
   my $fulldir = $homedir."/public_html";
   
 if($DEBUG) {  if($DEBUG) {
     print("Full directory path is: $fulldir \n");      print("Full directory path is: $fulldir \n");
 }  }
Line 175  if(!( -e $dirtry1)) { Line 177  if(!( -e $dirtry1)) {
     if($DEBUG) {      if($DEBUG) {
  print("User's home directory $dirtry1 does not exist\n");   print("User's home directory $dirtry1 does not exist\n");
     }      }
     exit 6;      if ($authentication eq "unix:") {
           exit 6;
       }
 }  }
 &EnableRoot;  &EnableRoot;
   
 &System("/bin/mkdir $fulldir")   unless (-e $fulldir);  &System("/bin/mkdir -p $fulldir")   unless (-e $fulldir);
     unless(-e $fulldir."/index.html") {      unless(-e $fulldir."/index.html") {
  open OUT,">".$fulldir."/index.html";   open OUT,">".$fulldir."/index.html";
  print OUT<<END;   print OUT<<END;
Line 187  if(!( -e $dirtry1)) { Line 191  if(!( -e $dirtry1)) {
  <head>   <head>
  <title>$safeuser</title>   <title>$safeuser</title>
         </head>          </head>
         <body>          <body bgcolor="#ccffdd">
         <h1>$safeuser</h1>          <h1>$safeuser Construction Space</h1>
             <h2>
               The Learning<i>Online</i> Network with Computer-Assisted Personalized Approach
             </h2>
           <p>            <p>
             Learning Online Network  This is your construction space within LON-CAPA, where you would construct resources which are meant to be
   used across courses and institutions.
           </p>            </p>
           <p>            <p>
             This area provides for:  Material within this area can only be seen and edited by $safeuser and designated co-authors. To make
   it available to students and other instructors, the material needs to be published.
           </p>            </p>
           <ul>  
              <li>resource construction</li>  
              <li>resource publication</li>  
              <li>record-keeping</li>  
           </ul>  
         </body>          </body>
        </html>         </html>
 END  END
     close OUT;      close OUT;
     }      }
   
 &System("/bin/chmod  02775  $fulldir");  &System("/bin/chmod  02775  $fulldir");
 &System("/bin/chmod  0775  $fulldir"."/index.html");  &System("/bin/chmod  0775  $fulldir"."/index.html");
   
   
 # Based on the authentiation mode, set the ownership of the directory.  # Based on the authentiation mode, set the ownership of the directory.
   
 if($authentication eq "unix") { # Unix mode authentication...  if($authentication eq "unix:") { # Unix mode authentication...
           &System("/bin/chown -R   $safeuser".":".$safeuser." ".$fulldir);
          &JoinGroup($safeuser);
     &System("/bin/chown -R   $username".":".$username." ".$fulldir);  } else {
     &JoinGroup($username);      # Internal, Kerberos, and Local authentication are for users
       # who do not have unix accounts on the system.  Therefore we
       # will give ownership of their public_html directories to www:www
 }      # If the user is an internal auth user, the rest of the directory tree
 elsif ($authentication eq "internal") { # Internal authentication.      # gets owned by root.  This chown is needed in case what's really happening
       # is that a file system user is being demoted to internal user...
   
     &System("/bin/chown -R www:www  $fulldir");      if($authentication eq "internal:") {
 }   &System("/bin/chown -R root:root ".$homedir);
 elsif ($authentication eq "krb4") { # Kerberos version 4 authentication  
     &System("/bin/chwon -R $username".':'.$username." ".$fulldir);  
     &JoinGroup($username);  
 }  
 elsif ($authentication eq "localauth") { # Local authentiation  
     &System("/bin/chown -R  $username".':'.$username."  $fulldir");  
 }  
 else {  
     if($DEBUG) {  
  print("Authentication not legal".$authentication);  
     }      }
     &DisableRoot;      &System("/bin/chown -R www:www  ".$fulldir);
     exit 5;  
   
 }  }
 &DisableRoot;  &DisableRoot;
   
Line 261  sub EnableRoot { Line 255  sub EnableRoot {
  # root capability is already enabled   # root capability is already enabled
     }      }
     if($DEBUG) {      if($DEBUG) {
  print("Enable Root - id =  $> \n");   print("Enable Root - id =  $> $<\n");
     }      }
     return $>;        return $>;  
 }  }
Line 283  sub JoinGroup { Line 277  sub JoinGroup {
     my $usergroup = shift;      my $usergroup = shift;
   
     my $groups = `/usr/bin/groups www`;      my $groups = `/usr/bin/groups www`;
       # untaint
       my ($safegroups)=($groups=~/:\s+([\s\w]+)/);
       $groups=$safegroups;
     chomp $groups; $groups=~s/^\S+\s+\:\s+//;      chomp $groups; $groups=~s/^\S+\s+\:\s+//;
     my @grouplist=split(/\s+/,$groups);      my @grouplist=split(/\s+/,$groups);
     my @ugrouplist=grep {!/www|$usergroup/} @grouplist;      my @ugrouplist=grep {!/www|$usergroup/} @grouplist;
Line 300  sub JoinGroup { Line 297  sub JoinGroup {
   
   
 sub System {  sub System {
     my $command = shift;      my ($command,@args) = @_;
     if($DEBUG) {      if($DEBUG) {
  print("system: $command \n");   print("system: $command with args ".join(' ',@args)."\n");
     }      }
     system($command);      system($command,@args);
 }  }
   
   

Removed from v.1.1  
changed lines
  Added in v.1.9


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