#!/usr/bin/perl # Show server or domain information use strict; use warnings; require 'old-blue-theme/blue-theme-lib.pl'; &ReadParse(); &load_theme_library(); our ($current_theme, %gconfig); our %text = &load_language($current_theme); my $bar_width = 300; # Get system info to show my @info = &list_combined_system_info(); my ($redir) = grep { $_->{'type'} eq 'redirect' } @info; if ($redir) { &redirect($redir->{'url'}); return; } my $prehead = defined(&WebminCore::theme_prehead) ? &capture_function_output(\&WebminCore::theme_prehead) : ""; &popup_header(undef, $prehead); print "
\n"; # Links appear at the top of the page my @links = grep { $_->{'type'} eq 'link' } @info; @info = grep { $_->{'type'} ne 'link' } @info; if (@links) { my @linkshtml = map { my $lnk = $_->{'link'}; $lnk = &get_webprefix().$lnk if ($lnk =~ /^\//); &ui_link($lnk, $_->{'desc'}, undef, $_->{'target'} eq 'new' ? 'target=_blank' : $_->{'target'} eq 'window' ? 'target=_top' : '') } @links; print "
\n"; print &ui_links_row(\@linkshtml); print "
\n"; } # Webmin logo if (&get_product_name() eq 'webmin') { print "

\n"; } # Show notifications first @info = sort { ($b->{'type'} eq 'warning') <=> ($a->{'type'} eq 'warning') } @info; foreach my $info (@info) { if ($info->{'type'} eq 'warning') { # An alert message print &ui_alert_box($info->{'warning'}, $info->{'level'} || 'warn'); } else { my $open = defined($info->{'open'}) ? $info->{'open'} : 1; print &ui_hidden_table_start($info->{'desc'}, "width=600", 2, $info->{'module'}.$info->{'id'}, $open); if ($info->{'type'} eq 'table') { # A table of various labels and values if ($info->{'header'}) { print &ui_table_row( undef, $info->{'header'}, 4); } foreach my $t (@{$info->{'table'}}) { my $chart = ""; if ($t->{'chart'}) { $chart = &make_bar_chart( $t->{'chart'}); $chart = "
".$chart; } print &ui_table_row($t->{'desc'}, $t->{'value'}.$chart); } } elsif ($info->{'type'} eq 'chart') { # A table of graphs my $ctable; if ($info->{'header'}) { $ctable .= $info->{'header'}."
\n"; } $ctable .= &ui_columns_start($info->{'titles'}); foreach my $t (@{$info->{'chart'}}) { $ctable .= &ui_columns_row([ $t->{'desc'}, &make_bar_chart($t->{'chart'}), $t->{'value'}, ]); } $ctable .= &ui_columns_end(); print &ui_table_row(undef, $ctable, 2); } elsif ($info->{'type'} eq 'html') { # A chunk of HTML print &ui_table_row(undef, $info->{'html'}, 2); } print &ui_hidden_table_end(); print "

\n"; } } print "

\n"; &popup_footer(); # bar_chart_three(total, used1, used2, used3) # Returns HTML for a bar chart of three values, stacked sub bar_chart_three { my ($total, $used1, $used2, $used3) = @_; return "" if (!$total); my $rv; my $w1 = int($bar_width*$used1/$total)+1; my $w2 = int($bar_width*$used2/$total); my $w3 = int($bar_width*$used3/$total); $rv .= sprintf "", $w1; $rv .= sprintf "", $w2; $rv .= sprintf "", $w3; $rv .= sprintf "", $bar_width - $w1 - $w2 - $w3; return $rv; } sub make_bar_chart { my ($c) = @_; my @c = @$c; if (@c == 2) { return &bar_chart_three( $c[0], $c[1], 0, $c[0]-$c[1]); } else { return &bar_chart_three( $c[0], $c[1], $c[2], $c[0]-$c[1]-$c[2]); } }