[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