[LON-CAPA-cvs] cvs: loncom /metadata_database searchcat.pl
matthew
lon-capa-cvs@mail.lon-capa.org
Mon, 21 Mar 2005 20:36:12 -0000
matthew Mon Mar 21 15:36:12 2005 EDT
Modified files:
/loncom/metadata_database searchcat.pl
Log:
use Apache::lonnet instead of LONCAPA::LonConfiguration
multi-domain support is now handled on the same code path as single domain support,
obiviating the need for a command line parameter.
No longer uses the nonexistant "mailto" command to send email about user id mismatches,,
instead uses 'mail' to complain.
Index: loncom/metadata_database/searchcat.pl
diff -u loncom/metadata_database/searchcat.pl:1.62 loncom/metadata_database/searchcat.pl:1.63
--- loncom/metadata_database/searchcat.pl:1.62 Thu Mar 10 22:25:18 2005
+++ loncom/metadata_database/searchcat.pl Mon Mar 21 15:36:11 2005
@@ -2,7 +2,7 @@
# The LearningOnline Network
# searchcat.pl "Search Catalog" batch script
#
-# $Id: searchcat.pl,v 1.62 2005/03/11 03:25:18 matthew Exp $
+# $Id: searchcat.pl,v 1.63 2005/03/21 20:36:11 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -68,7 +68,6 @@
use DBI;
use lib '/home/httpd/lib/perl/';
-use LONCAPA::Configuration;
use LONCAPA::lonmetadata;
use Getopt::Long;
@@ -77,20 +76,19 @@
use GDBM_File;
use POSIX qw(strftime mktime);
-use Sys::Hostname;
+use Apache::lonnet();
use File::Find;
#
# Set up configuration options
-my ($simulate,$oneuser,$help,$verbose,$logfile,$debug,$multidom);
+my ($simulate,$oneuser,$help,$verbose,$logfile,$debug);
GetOptions (
'help' => \$help,
'simulate' => \$simulate,
'only=s' => \$oneuser,
'verbose=s' => \$verbose,
'debug' => \$debug,
- 'multi_domain' => \$multidom,
);
if ($help) {
@@ -103,7 +101,6 @@
-only=user Only compute for the given user. Implies -simulate
-verbose=val Sets logging level, val must be a number
-debug Turns on debugging output
- -multi_domain Parse the hosts.tab file domain(s) to use.
ENDHELP
exit 0;
}
@@ -126,27 +123,21 @@
my $newname = 'newmetadata'.$$; # append pid to have unique temporary table
#
-# Read loncapa_apache.conf and loncapa.conf
-my $perlvarref=LONCAPA::Configuration::read_conf('loncapa.conf');
-my %perlvar=%{$perlvarref};
-undef $perlvarref;
-delete $perlvar{'lonReceipt'}; # remove since sensitive (really?) & not needed
-#
# Only run if machine is a library server
-exit if ($perlvar{'lonRole'} ne 'library');
+exit if ($Apache::lonnet::perlvar{'lonRole'} ne 'library');
#
# Make sure this process is running from user=www
my $wwwid=getpwnam('www');
if ($wwwid!=$<) {
- my $emailto="$perlvar{'lonAdmEMail'},$perlvar{'lonSysEMail'}";
- my $subj="LON: $perlvar{'lonHostID'} User ID mismatch";
+ my $emailto="$Apache::lonnet::perlvar{'lonAdmEMail'},$Apache::lonnet::perlvar{'lonSysEMail'}";
+ my $subj="LON: $Apache::lonnet::perlvar{'lonHostID'} User ID mismatch";
system("echo 'User ID mismatch. searchcat.pl must be run as user www.' |\
- mailto $emailto -s '$subj' > /dev/null");
+ mail -s '$subj' $emailto > /dev/null");
exit 1;
}
#
# Let people know we are running
-open(LOG,'>>'.$perlvar{'lonDaemons'}.'/logs/searchcat.log');
+open(LOG,'>>'.$Apache::lonnet::perlvar{'lonDaemons'}.'/logs/searchcat.log');
&log(0,'==== Searchcat Run '.localtime()."====");
@@ -158,7 +149,7 @@
#
# Connect to database
my $dbh;
-if (! ($dbh = DBI->connect("DBI:mysql:loncapa","www",$perlvar{'lonSqlAccess'},
+if (! ($dbh = DBI->connect("DBI:mysql:loncapa","www",$Apache::lonnet::perlvar{'lonSqlAccess'},
{ RaiseError =>0,PrintError=>0}))) {
&log(0,"Cannot connect to database!");
die "MySQL Error: Cannot connect to database!\n";
@@ -177,37 +168,15 @@
}
#
# find out which users we need to examine
-my @domains;
-if (defined($multidom)) {
- &log(1,'====multi domain setup====');
- # Peek into the hosts.tab and look for matches of our hostname
- my $host = hostname();
- &log(9,'hostname = "'.$host.'"');
- open(HOSTFILE,$perlvar{'lonTabDir'}.'/hosts.tab') ||
- die ("Unable to determine domain(s) of multi-domain server");
- my %domains;
- while (<HOSTFILE>) {
- next if (/^\#/);
- next if (!/:\Q$host\E/);
- &log(9,$_);
- $domains{(split(':',$_))[1]}++;
- }
- close HOSTFILE;
- @domains = sort(keys(%domains));
- &log(9,join(',',@domains));
- if (! scalar(@domains)) {
- die ("Unable to find any domains in the hosts.tab that match ".$host);
- }
-} else {
- push(@domains,$perlvar{'lonDefDomain'});
-}
+my @domains = sort(&Apache::lonnet::current_machine_domains());
+&log(9,'domains ="'.join('","',@domains).'"');
foreach my $dom (@domains) {
&log(9,'domain = '.$dom);
- opendir(RESOURCES,"$perlvar{'lonDocRoot'}/res/$dom");
+ opendir(RESOURCES,"$Apache::lonnet::perlvar{'lonDocRoot'}/res/$dom");
my @homeusers =
grep {
- &ishome("$perlvar{'lonDocRoot'}/res/$dom/$_");
+ &ishome("$Apache::lonnet::perlvar{'lonDocRoot'}/res/$dom/$_");
} grep {
!/^\.\.?$/;
} readdir(RESOURCES);
@@ -229,7 +198,7 @@
#wanted => \&print_filename,
#wanted => \&log_metadata,
wanted => \&process_meta_file,
- }, join('/',($perlvar{'lonDocRoot'},'res',$dom,$user)) );
+ }, join('/',($Apache::lonnet::perlvar{'lonDocRoot'},'res',$dom,$user)) );
}
}
#
@@ -426,7 +395,7 @@
if ($filename !~ /\.meta$/) {
$filename.='.meta';
}
- my $metastring=&getfile($perlvar{'lonDocRoot'}.'/res/'.$filename);
+ my $metastring=&getfile($Apache::lonnet::perlvar{'lonDocRoot'}.'/res/'.$filename);
return undef if (! defined($metastring));
my $parser=HTML::TokeParser->new(\$metastring);
my $token;
@@ -661,7 +630,7 @@
$uname=~s/\W//g;
my $subdir=$uname.'__';
$subdir =~ s/(.)(.)(.).*/$1\/$2\/$3/;
- my $proname="$perlvar{'lonUsersDir'}/$udom/$subdir/$uname";
+ my $proname="$Apache::lonnet::perlvar{'lonUsersDir'}/$udom/$subdir/$uname";
return $proname;
}
@@ -705,7 +674,7 @@
## Given a filename, returns a url for the filename.
sub declutter {
my $thisfn=shift;
- $thisfn=~s/^$perlvar{'lonDocRoot'}//;
+ $thisfn=~s/^$Apache::lonnet::perlvar{'lonDocRoot'}//;
$thisfn=~s/^\///;
$thisfn=~s/^res\///;
return $thisfn;