JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr#!/usr/bin/perl # Show server or domain information use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require "gray-theme/gray-theme-lib.pl"; require "gray-theme/theme.pl"; &ReadParse(); &load_theme_library(); our ($current_theme, %gconfig, %in); our %text = &load_language($current_theme); my $bar_width = 500; # Get system info to show my $sects = get_right_frame_sections(); my @info = &list_combined_system_info($sects, \%in); # Redirect if needed 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); # Links appear at the top of the page my @links = grep { $_->{'type'} eq 'link' } @info; @info = grep { $_->{'type'} ne 'link' } @info; unshift(@links, { 'link' => 'edit_right.cgi', 'desc' => $text{'right_edit'} }); my @linkshtml = map { my $lnk = $_->{'link'}; $lnk = &get_webprefix().$lnk if (&get_webprefix() && $lnk =~ /^\//); &ui_link($lnk, $_->{'desc'}, undef, !$_->{'target'} ? '' : $_->{'target'} eq 'new' ? 'target=_blank' : $_->{'target'} eq 'window' ? 'target=_top' : '') } @links; print "
\n"; print &ui_links_row(\@linkshtml); print "
\n"; print &ui_switch_theme_javascript(); if (foreign_available("server-manager")) { print ''; } elsif (foreign_available("virtual-server")) { print ''; } else { if (get_product_name() eq 'webmin') { print ''; } elsif (get_product_name() eq 'usermin') { print ''; } } # Show notifications first @info = sort { ($b->{'type'} eq 'warning') <=> ($a->{'type'} eq 'warning') } @info; foreach my $info (@info) { if ($info->{'type'} eq 'warning') { my $w; if (ref($info->{'warning'}) eq 'HASH') { $w = $info->{'warning'}->{'alert'}; } else { $w = &ui_alert_box($info->{'warning'}, $info->{'level'} || 'warn'); } if ($info->{'desc'}) { print &ui_table_start($info->{'desc'}, "width=100%"); print &ui_table_row(undef, $w, 4); print &ui_table_end(); } else { print $w; } } else { my $open = defined($info->{'open'}) ? $info->{'open'} : 1; print &ui_hidden_table_start($info->{'desc'}, "width=100%", 4, $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, $t->{'wide'} || $t->{'chart'} ? 3 : 1); } } 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, 4); } elsif ($info->{'type'} eq 'html') { # A chunk of HTML print &ui_table_row(undef, $info->{'html'}, 4); } print &ui_hidden_table_end(); } } 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) = @_; $used1 ||= 0; $used2 ||= 0; $used3 ||= 0; 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; $c[1] ||= 0; $c[2] ||= 0; 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]); } }