--- loncom/cgi/listdomconfig.pl 2011/10/21 20:23:36 1.1 +++ loncom/cgi/listdomconfig.pl 2016/08/01 15:19:05 1.2 @@ -1,7 +1,7 @@ #!/usr/bin/perl $|=1; # Domain Configuration Dump -# $Id: listdomconfig.pl,v 1.1 2011/10/21 20:23:36 raeburn Exp $ +# $Id: listdomconfig.pl,v 1.2 2016/08/01 15:19:05 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -95,12 +95,29 @@ sub main { } &LONCAPA::loncgi::check_cookie_and_load_env(); &Apache::lonlocal::get_language_handle(); + my (%gets,$format); + &LONCAPA::loncgi::cgi_getitems($ENV{'QUERY_STRING'},\%gets,['format','primary']); + if (ref($gets{'format'}) eq 'ARRAY') { + $format = $gets{'format'}->[0]; + } if ($allowed ne '') { my @okdoms; unless ($allowed == 1) { @okdoms = split(/\&/,$allowed); } - my @hosts = &Apache::lonnet::current_machine_ids(); + my @hosts; + if (ref($gets{'primary'}) eq 'ARRAY') { + my @posshosts = &Apache::lonnet::current_machine_ids(); + foreach my $prim (@{$gets{'primary'}}) { + if (grep(/^\Q$prim\E$/,@posshosts)) { + unless (grep(/^\Q$prim\E$/,@hosts)) { + push(@hosts,$prim); + } + } + } + } else { + @hosts = &Apache::lonnet::current_machine_ids(); + } my $numshown = 0; my $numnonprim = 0; foreach my $lonhost (@hosts) { @@ -110,9 +127,11 @@ sub main { } my $prim_id = &Apache::lonnet::domain($dom,'primary'); if (($prim_id ne '') && (grep(/^\Q$prim_id\E$/,@hosts))) { - my $domdesc = &Apache::lonnet::domain($dom); - print &mt('Domain configuration for [_1]',"$domdesc ($dom)")."\n\n"; - &show_config($dom); + unless ($format eq 'raw') { + my $domdesc = &Apache::lonnet::domain($dom); + print &mt('Domain configuration for [_1]',"$domdesc ($dom)")."\n\n"; + } + &show_config($dom,$format); print "\n"; $numshown ++; } else { @@ -121,13 +140,19 @@ sub main { } if (!$numshown) { if ($numnonprim) { - print &mt('This server is not a primary library server')."\n"; + unless ($format eq 'raw') { + print &mt('This server is not a primary library server')."\n"; + } } else { - print &mt("You do not have access rights to view domain configuration for domain(s) hosted on this server.")."\n"; + unless ($format eq 'raw') { + print &mt("You do not have access rights to view domain configuration for domain(s) hosted on this server.")."\n"; + } } } } else { - &LONCAPA::lonauthcgi::unauthorized_msg('domconf'); + unless ($format eq 'raw') { + &LONCAPA::lonauthcgi::unauthorized_msg('domconf'); + } } } @@ -151,21 +176,30 @@ Description: Displays plain text of doma ############################################# sub show_config { - my ($dom) = @_; + my ($dom,$format) = @_; my $lonusersdir = $Apache::lonnet::perlvar{'lonUsersDir'}; my $fname = $lonusersdir.'/'.$dom.'/configuration.db'; my $dbref=&LONCAPA::locking_hash_tie($fname,&GDBM_READER()); if (ref($dbref) eq 'HASH') { + my $output; foreach my $key (sort(keys(%{$dbref}))) { my $value = $dbref->{$key}; - if ($value =~ s/^__FROZEN__//) { - $value = thaw(&unescape($value)); + if ($format eq 'raw') { + $output .= "$key=$value".'&'; + } else { + if ($value =~ s/^__FROZEN__//) { + $value = thaw(&unescape($value)); + } + $key = &unescape($key); + $value = &unescape($value) if (!ref($value)); + print "$key = ".(ref($value)?Dumper($value):$value)."\n"; } - $key = &unescape($key); - $value = &unescape($value) if (!ref($value)); - print "$key = ".(ref($value)?Dumper($value):$value)."\n"; } &LONCAPA::locking_hash_untie($dbref); + if ($format eq 'raw') { + $output .=~ s/\&$//; + print $output; + } } return; }