Diff for /loncom/build/make_domain_coordinator.pl between versions 1.9 and 1.10

version 1.9, 2003/02/03 18:03:52 version 1.10, 2006/08/11 20:09:02
Line 33  make_domain_coordinator.pl - Make a doma Line 33  make_domain_coordinator.pl - Make a doma
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # YEAR=2002  
 #  
 ###  ###
   
 =pod  =pod
Line 91  Set roles.hist and roles.db Line 89  Set roles.hist and roles.db
   
 # ---------------------------------------------------- Configure general values  # ---------------------------------------------------- Configure general values
   
 my %perlvar; # Holds network-wide and machine-specific configuration values.  use lib '/home/httpd/lib/perl/';
 # We only need one configuration value however, lonUsersDir.  Rather than  use LONCAPA;
 # read this out of loncapa.conf, I am just going to hard-code this for now.  
 $perlvar{'lonUsersDir'}='/home/httpd/lonUsers';  
   
 =pod  =pod
   
Line 179  if (-d "/home/$username") { Line 175  if (-d "/home/$username") {
     die ('**** ERROR **** '.$username.' is already a linux operating system '.      die ('**** ERROR **** '.$username.' is already a linux operating system '.
  'user.'."\n".$caveat);   'user.'."\n".$caveat);
 }  }
 my $udpath=propath($domain,$username);  my $udpath=&propath($domain,$username);
 if (-d $udpath) {  if (-d $udpath) {
     die ('**** ERROR **** '.$username.' is already defined as a LON-CAPA '.      die ('**** ERROR **** '.$username.' is already defined as a LON-CAPA '.
  'user.'."\n".$caveat);   'user.'."\n".$caveat);
Line 323  close(OUT); Line 319  close(OUT);
 =cut  =cut
   
 use GDBM_File; # A simplistic key-value pairing database.  use GDBM_File; # A simplistic key-value pairing database.
 my %hash;  
   
 tie(%hash,'GDBM_File',"$udpath/roles.db",  
     &GDBM_WRCREAT,0640); # Interface with GDBM database thru a hash variable.  
   
 $hash{'/'.$domain.'/_dc'}='dc'; # Set the domain coordinator role.  my $rolesref=&LONCAPA::locking_hash_tie("$udpath/roles.db",&GDBM_WRCREAT());
   if (!$rolesref) {
       die('unable to tie roles db: '."$udpath/roles.db");
   }
   $rolesref->{'/'.$domain.'/_dc'}='dc'; # Set the domain coordinator role.
 open(OUT, ">$udpath/roles.hist"); # roles.hist is the synchronous plain text.  open(OUT, ">$udpath/roles.hist"); # roles.hist is the synchronous plain text.
 map {  foreach my $key (keys(%{$rolesref})) {
     print(OUT $_.' : '.$hash{$_}."\n");      print(OUT $key.' : '.$rolesref->{$key}."\n");
 } keys %hash;  }
 close(OUT);  close(OUT);
 untie(%hash); # Finish interfacing with GDBM database.  &LONCAPA::locking_hash_untie($rolesref);
   
   
 `chown www:www $udpath/roles.hist`; # Must be writeable by httpd process.  `chown www:www $udpath/roles.hist`; # Must be writeable by httpd process.
 `chown www:www $udpath/roles.db`; # Must be writeable by httpd process.  `chown www:www $udpath/roles.db`; # Must be writeable by httpd process.
Line 354  my $hostname=`hostname`; chomp($hostname Line 351  my $hostname=`hostname`; chomp($hostname
 print("http://$hostname/adm/createuser will allow you to further define".  print("http://$hostname/adm/createuser will allow you to further define".
       " this user.\n"); # Output a suggested URL.        " this user.\n"); # Output a suggested URL.
   
 # ================================================================= SUBROUTINES  
 # Subroutine propath: take in domain and username, and generate filesystem path  
 sub propath {  
     my ($udom,$uname)=@_; # The lonDefDomain, and the domain coord. username.  
     $udom =~ s/\W//g; # Taint removal.  
     $uname =~ s/\W//g; # Taint removal.  
     my $subdir = $uname.'__';  
     $subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/; # The path must have three subdirs.  
     my $proname = "$perlvar{'lonUsersDir'}/$udom/$subdir/$uname"; # Total path.  
     return $proname; # Return the total user directory filesystem path.  
 }  
   
 =pod  =pod
   
 =head1 AUTHOR  =head1 AUTHOR

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


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