[LON-CAPA-cvs] cvs: loncom /build make_domain_coordinator.pl

albertel lon-capa-cvs@mail.lon-capa.org
Fri, 11 Aug 2006 20:09:05 -0000


albertel		Fri Aug 11 16:09:05 2006 EDT

  Modified files:              
    /loncom/build	make_domain_coordinator.pl 
  Log:
  - making use of the new common subroutine library
  
  
Index: loncom/build/make_domain_coordinator.pl
diff -u loncom/build/make_domain_coordinator.pl:1.9 loncom/build/make_domain_coordinator.pl:1.10
--- loncom/build/make_domain_coordinator.pl:1.9	Mon Feb  3 13:03:52 2003
+++ loncom/build/make_domain_coordinator.pl	Fri Aug 11 16:09:02 2006
@@ -11,7 +11,7 @@
 # The LearningOnline Network
 # make_domain_coordinator.pl - Make a domain coordinator on a system
 #
-# $Id: make_domain_coordinator.pl,v 1.9 2003/02/03 18:03:52 harris41 Exp $
+# $Id: make_domain_coordinator.pl,v 1.10 2006/08/11 20:09:02 albertel Exp $
 #
 # This file is part of the LearningOnline Network with CAPA (LON-CAPA).
 #
@@ -33,8 +33,6 @@
 #
 # http://www.lon-capa.org/
 #
-# YEAR=2002
-#
 ###
 
 =pod
@@ -91,10 +89,8 @@
 
 # ---------------------------------------------------- Configure general values
 
-my %perlvar; # Holds network-wide and machine-specific configuration values.
-# We only need one configuration value however, lonUsersDir.  Rather than
-# read this out of loncapa.conf, I am just going to hard-code this for now.
-$perlvar{'lonUsersDir'}='/home/httpd/lonUsers';
+use lib '/home/httpd/lib/perl/';
+use LONCAPA;
 
 =pod
 
@@ -179,7 +175,7 @@
     die ('**** ERROR **** '.$username.' is already a linux operating system '.
 	 'user.'."\n".$caveat);
 }
-my $udpath=propath($domain,$username);
+my $udpath=&propath($domain,$username);
 if (-d $udpath) {
     die ('**** ERROR **** '.$username.' is already defined as a LON-CAPA '.
 	 'user.'."\n".$caveat);
@@ -323,18 +319,19 @@
 =cut
 
 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.
-map {
-    print(OUT $_.' : '.$hash{$_}."\n");
-} keys %hash;
+foreach my $key (keys(%{$rolesref})) {
+    print(OUT $key.' : '.$rolesref->{$key}."\n");
+}
 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.db`; # Must be writeable by httpd process.
@@ -354,18 +351,6 @@
 print("http://$hostname/adm/createuser will allow you to further define".
       " 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
 
 =head1 AUTHOR