#!/usr/local/bin/perl # edit_host.cgi # Show details of a managed host, and all the packages on it require './cluster-software-lib.pl'; &foreign_require("servers", "servers-lib.pl"); &ReadParse(); &header($text{'host_title'}, ""); print "
\n"; @hosts = &list_software_hosts(); ($host) = grep { $_->{'id'} eq $in{'id'} } @hosts; $server = &foreign_call("servers", "get_server", $in{'id'}); @packages = @{$host->{'packages'}}; # Show host details print "
\n"; print "\n"; print "\n"; print "\n"; print "
$text{'host_header'}
\n"; print "\n"; if ($server->{'id'}) { printf "\n", $server->{'id'}, $server->{'desc'} ? "$server->{'desc'} ($server->{'host'}:$server->{'port'})" : "$server->{'host'}:$server->{'port'}"; } else { print "\n"; } if ($server->{'id'}) { print "\n"; } print "\n"; print "\n"; printf "\n", scalar(@packages); print "\n"; print "\n"; print "
$text{'host_name'}%s$text{'this_server'}$text{'host_type'} \n"; foreach $t (@servers::server_types) { print $t->[1] if ($t->[0] eq $server->{'type'}); } print "
$text{'host_count'}%d$text{'host_os'}$host->{'real_os_type'} $host->{'real_os_version'}
\n"; print "
\n"; # Show tree of packages $heir{""} = ""; foreach $c (sort { $a cmp $b } &unique(map { $_->{'class'} } @packages)) { if (!$c) { next; } @w = split(/\//, $c); $p = join('/', @w[0..$#w-1]); if (!defined($heir{$p})) { $pp = join('/', @w[0..$#w-2]); $heir{$pp} .= "$p\0"; } $heir{$p} .= "$c\0"; $hasclasses++; } # get the current open list open(HEIROPEN, "$module_config_directory/heiropen.$in{'id'}"); while() { chop; $heiropen{$_}++; } close(HEIROPEN); $heiropen{""}++; # traverse the heirarchy $spacer = " "x3; print "
\n"; print "

$text{'host_installed'}

\n"; print "\n"; &traverse("", 0); print "
\n"; if ($hasclasses) { print "$text{'host_close'} $spacer\n"; print "$text{'host_open'}

\n"; } print "


\n"; &footer("", $text{'index_return'}); sub traverse { local($s, $act, $i); print " ", $spacer x $_[1]; if ($_[0]) { print "\n"; $act = $heiropen{$_[0]} ? "close" : "open"; print ""; $_[0] =~ /([^\/]+)$/; print "  $1\n", } else { print " $text{'host_all'}\n"; } print "
\n"; if ($heiropen{$_[0]}) { # print sub-folders followed by packages foreach $i (@packages) { if ($i->{'class'} eq $_[0]) { print " ", $spacer x ($_[1]+1); print " \n"; print "{'name'}),"\">$i->{'name'}\n"; print "$i->{'desc'}\n"; print "\n"; } } foreach $s (&unique(split(/\0+/, $heir{$_[0]}))) { &traverse($s, $_[1]+1); } } }