--- loncom/lonnet/perl/lonnet.pm 2007/03/03 02:16:10 1.844 +++ loncom/lonnet/perl/lonnet.pm 2007/03/08 01:54:50 1.845 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.844 2007/03/03 02:16:10 albertel Exp $ +# $Id: lonnet.pm,v 1.845 2007/03/08 01:54:50 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -36,7 +36,7 @@ use HTTP::Date; # use Date::Parse; use vars qw(%perlvar %badServerCache %iphost %spareid - %libserv %pr %prp $memcache %packagetab + %pr %prp $memcache %packagetab %courselogs %accesshash %userrolehash %domainrolehash $processmarker $dumpcount %coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseinstcodebuf %courseownerbuf %coursetypebuf %domaindescription %domain_auth_def %domain_auth_arg_def @@ -2133,9 +2133,14 @@ sub courseiddump { my ($domfilter,$descfilter,$sincefilter,$instcodefilter,$ownerfilter,$coursefilter,$hostidflag,$hostidref,$typefilter,$regexp_ok)=@_; my %returnhash=(); unless ($domfilter) { $domfilter=''; } - foreach my $tryserver (keys %libserv) { - if ( ($hostidflag == 1 && grep/^$tryserver$/,@{$hostidref}) || (!defined($hostidflag)) ) { - if ((!$domfilter) || (&host_domain($tryserver) eq $domfilter)) { + my %libserv = &all_library(); + foreach my $tryserver (keys(%libserv)) { + if ( ( $hostidflag == 1 + && grep(/^\Q$tryserver\E$/,@{$hostidref}) ) + || (!defined($hostidflag)) ) { + + if ($domfilter eq '' + || (&host_domain($tryserver) eq $domfilter)) { foreach my $line ( split(/\&/,&reply('courseiddump:'.&host_domain($tryserver).':'. $sincefilter.':'.&escape($descfilter).':'. @@ -4170,6 +4175,7 @@ sub definerole { sub metadata_query { my ($query,$custom,$customshow,$server_array)=@_; my %rhash; + my %libserv = &all_library(); my @server_list = (defined($server_array) ? @$server_array : keys(%libserv) ); for my $server (@server_list) { @@ -5038,7 +5044,7 @@ sub createcourse { } # ------------------------------------------------ Check supplied server name $course_server = $env{'user.homeserver'} if (! defined($course_server)); - if (! exists($libserv{$course_server})) { + if (! &is_library($course_server)) { return 'error:bad server name '.$course_server; } # ------------------------------------------------------------- Make the course @@ -7593,6 +7599,7 @@ BEGIN { { my %hostname; my %hostdom; + my %libserv; open(my $config,"<$perlvar{'lonTabDir'}/hosts.tab"); while (my $configline=<$config>) { @@ -7614,9 +7621,19 @@ BEGIN { my ($lonid) = @_; return $hostname{$lonid}; } + sub all_hostnames { return %hostname; } + + sub is_library { + return exists($libserv{$_[0]}); + } + + sub all_library { + return %libserv; + } + sub get_servers { my ($domain,$type) = @_; my %possible_hosts = ($type eq 'library') ? %libserv @@ -7637,6 +7654,7 @@ BEGIN { } return %result; } + sub host_domain { my ($lonid) = @_; return $hostdom{$lonid};