Revision 90053cde
Added by Hamish Coleman over 18 years ago
- ID 90053cdef72eeadc4b5454ebe2e25414a3384661
| mrtg.cgi | ||
|---|---|---|
| sub print_menu_table($$) {
 | ||
| 	my ($lists,$style) = @_;
 | ||
|  | ||
| 	my $target;
 | ||
| 	if ($style eq 'wide') {
 | ||
| 		$target="_self";
 | ||
| 	} else {
 | ||
| 		$target="list";
 | ||
| 	}
 | ||
|  | ||
| 	print "\n<table border=2 cellpadding=2 cellspacing=0 style=\"margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;\">\n";
 | ||
|  | ||
| 	if ($style eq 'wide') {
 | ||
| ... | ... | |
| 		}
 | ||
| 		print " <td valign=top>\n";
 | ||
| 		for my $j (sort keys %{$lists->{$i}}) {
 | ||
| 			print "  ".a({-href=>"?list=$i,$j"},"$j")."<br>\n";
 | ||
| 			print "  ".a({-href=>"?page=list&list=$i,$j",-target=>$target},"$j")."<br>\n";
 | ||
| 		}
 | ||
| 		print " </td>\n";
 | ||
|  | ||
| ... | ... | |
| 	if (!defined $list) {
 | ||
| 		return undef;
 | ||
| 	}
 | ||
| 	if (!defined $lists) {
 | ||
| 		return undef;
 | ||
| 	}
 | ||
| 	my @wantlist = split /,/,$list;
 | ||
|  | ||
| 	my @list = @{$lists->{$wantlist[0]}->{$wantlist[1]}};
 | ||
| 	my $selfurl.='list='.param('list').'&';
 | ||
|  | ||
| 	if ($graph ne 'day') {
 | ||
| 		$selfurl.='graph='.$graph.'&';
 | ||
| 	}
 | ||
|  | ||
| 	for my $router_num (0..$#list){
 | ||
| 		my $router = $list[$router_num];
 | ||
| ... | ... | |
| 		$ysize = $router->{ysize};
 | ||
| 		$xsize = $router->{xsize};
 | ||
|  | ||
| 		print a({-href=>$router->{name}.".html"},
 | ||
| 		print a({-href=>$router->{name}.".html",-target=>"list"},
 | ||
| 			img{
 | ||
| 				-src=>$router->{name}."-$graph.".$router->{imagetype},
 | ||
| 				-height=>"$ysize",
 | ||
| ... | ... | |
| 		);
 | ||
| 		print hr,"\n";
 | ||
| 	}
 | ||
| 	return 1;
 | ||
| }
 | ||
|  | ||
| sub print_graph_chooser($$) {
 | ||
| 	my ($this_graph,$selfurl) = @_;
 | ||
|  | ||
| 	$selfurl .= 'page=list&';
 | ||
|  | ||
| 	if ($this_graph eq 'day') {
 | ||
| 		print 'Daily';
 | ||
| 	} else {
 | ||
| 		print a({-href=>$selfurl.'graph=day&'}, 'Daily');
 | ||
| 		print a({-href=>$selfurl.'graph=day&',-target=>'_self'}, 'Daily');
 | ||
| 	}
 | ||
| 	print ' ';
 | ||
| 	if ($this_graph eq 'week') {
 | ||
| 		print 'Weekly';
 | ||
| 	} else {
 | ||
| 		print a({-href=>$selfurl.'graph=week&'}, 'Weekly')
 | ||
| 		print a({-href=>$selfurl.'graph=week&',-target=>'_self'}, 'Weekly')
 | ||
| 	}
 | ||
| 	print ' ';
 | ||
| 	if ($this_graph eq 'month') {
 | ||
| 		print 'Monthly';
 | ||
| 	} else {
 | ||
| 		print a({-href=>$selfurl.'graph=month&'}, 'Monthly')
 | ||
| 		print a({-href=>$selfurl.'graph=month&',-target=>'_self'}, 'Monthly')
 | ||
| 	}
 | ||
| 	print ' ';
 | ||
| 	if ($this_graph eq 'year') {
 | ||
| 		print 'Yearly';
 | ||
| 	} else {
 | ||
| 		print a({-href=>$selfurl.'graph=year&'}, 'Yearly')
 | ||
| 		print a({-href=>$selfurl.'graph=year&',-target=>'_self'}, 'Yearly')
 | ||
| 	}
 | ||
| 	print ' ';
 | ||
|  | ||
| 	print ' ';
 | ||
| 	print a({-href=>'?'}, 'Change List'),
 | ||
| 		' ',
 | ||
| 		'(Current List is ',param('list'),")\n";
 | ||
| 		'(This List is ',param('list'),")\n";
 | ||
| }
 | ||
|  | ||
| my @tests = init_tests(@config_files);
 | ||
| my $lists = init_lists(@tests);
 | ||
|  | ||
| #use Data::Dumper;
 | ||
| #print Dumper(\@tests);
 | ||
| #print Dumper(\$lists);
 | ||
|  | ||
| # FIXME - globals
 | ||
| # Time the next update to occur a little while after the next interval completes
 | ||
| my $interval = 300; # 5 min update interval
 | ||
| my $guardband = 15; # updates occur this many seconds after predicted gif completion
 | ||
| my $refresh = $interval + $guardband + $gifdone - time; # predict how long until next update
 | ||
| $refresh = $interval if $refresh <= $guardband;
 | ||
| my $expires = gmtime (time + $interval * 2 + $guardband);
 | ||
|  | ||
| #selfurl is ready to append args to.
 | ||
| my $selfurl = '?';
 | ||
| my $page = param('page') || 'none';
 | ||
| my $this_host = hostname;
 | ||
|  | ||
| print header, start_html(-TITLE=>"$this_host MRTG Index (V$VERSION)", -BGCOLOR=>'#e6e6e6'),
 | ||
|     "\n";
 | ||
|  | ||
| # FIXME - use something that doesnt make "&" into "&" in the <a> tags
 | ||
| # 	you mean, like, a form?.  well, duh!
 | ||
|  | ||
| my @wantlist = split /,/,param('list');
 | ||
|  | ||
| if (!@wantlist) {
 | ||
| my @tests;
 | ||
| my $lists;
 | ||
|  | ||
| if($page eq 'frame') {
 | ||
| 	print "Content-type: text/html\n\n";
 | ||
| 	print "<html><head><title>$this_host MRTG Index (V$VERSION)</title></head>\n";
 | ||
| 	print '<frameset cols="200,*">'; # FIXME onresize if navigator.family==nn4
 | ||
| 	print '<frame src="?page=menu" name=menu>';
 | ||
| 	print '<frame src="?page=list&list=OTHER,OTHER" name=list>';
 | ||
| 	print "</frameset>\n";
 | ||
| 	print "</html>\n";
 | ||
|  | ||
| } elsif($page eq 'none') {
 | ||
| 	print header,
 | ||
| 		start_html(-TITLE=>"$this_host MRTG Index (V$VERSION)", -BGCOLOR=>'#e6e6e6'),
 | ||
| 		"\n";
 | ||
|  | ||
| 	@tests = init_tests(@config_files);
 | ||
| 	$lists = init_lists(@tests);
 | ||
| 	print table(
 | ||
| 		{-width=>"100\%"},
 | ||
| 		TR(td("Select which list to show"))
 | ||
| 	);
 | ||
| 	print_menu_table($lists,'wide');
 | ||
| } elsif (!defined $lists->{$wantlist[0]}->{$wantlist[1]}) {
 | ||
| 	#FIXME
 | ||
| 	print table({-width=>"100\%"}, TR(td("That list is unavailable")));
 | ||
| } elsif(defined param('test')) {
 | ||
| 	print_list($lists,'day',param('list'));
 | ||
| } else {
 | ||
| 	my $graph = param('graph') || 'day';
 | ||
| 	print "\n","Direct questions and feedback to ",
 | ||
| 		a({-href=>"mailto:hamish\@zot.org"}, "Hamish"),
 | ||
| 		" (Version $VERSION)",
 | ||
| 		end_html;
 | ||
|  | ||
| } elsif($page eq 'list') {
 | ||
| 	print header,
 | ||
| 		start_html(-TITLE=>"$this_host MRTG Index (V$VERSION)", -BGCOLOR=>'#e6e6e6'),
 | ||
| 		"\n";
 | ||
|  | ||
| 	@tests = init_tests(@config_files);
 | ||
| 	$lists = init_lists(@tests);
 | ||
|  | ||
| 	# Time the next update to occur a little while after the next interval completes
 | ||
| 	my $interval = 300; # 5 min update interval
 | ||
| 	my $guardband = 15; # updates occur this many seconds after predicted gif completion
 | ||
| 	my $refresh = $interval + $guardband + $gifdone - time; # predict how long until next update
 | ||
| 	$refresh = $interval if $refresh <= $guardband;
 | ||
| 	my $expires = gmtime (time + $interval * 2 + $guardband);
 | ||
|  | ||
| 	$selfurl.='list='.param('list').'&';
 | ||
| 	my $graph = param('graph') || 'day';
 | ||
| 	my $selfurl ='?list='.param('list').'&';
 | ||
|  | ||
| 	print
 | ||
| 		"<meta http-equiv=\"expires\" content=\"$expires GMT\">\n",
 | ||
| 		"<meta http-equiv=\"refresh\" content=$refresh>\n";
 | ||
| 	print_graph_chooser($graph,$selfurl);
 | ||
| 	print "<br/>";
 | ||
| 	print_list($lists,$graph,param('list')||'none');
 | ||
| 	print end_html;
 | ||
| } elsif($page eq 'menu') {
 | ||
| 	print header,
 | ||
| 		start_html(-TITLE=>"$this_host MRTG Index (V$VERSION)", -BGCOLOR=>'#e6e6e6'),
 | ||
| 		"\n";
 | ||
|  | ||
| 	@tests = init_tests(@config_files);
 | ||
| 	$lists = init_lists(@tests);
 | ||
| 	print_menu_table($lists,'high');
 | ||
| 	print end_html;
 | ||
| } elsif($page eq 'noframe') {
 | ||
| 	print header,
 | ||
| 		start_html(-TITLE=>"$this_host MRTG Index (V$VERSION)", -BGCOLOR=>'#e6e6e6'),
 | ||
| 		"\n";
 | ||
|  | ||
| 	@tests = init_tests(@config_files);
 | ||
| 	$lists = init_lists(@tests);
 | ||
|  | ||
| 	# FIXME - duplicated time calculations from above
 | ||
| 	# Time the next update to occur a little while after the next interval completes
 | ||
| 	my $interval = 300; # 5 min update interval
 | ||
| 	my $guardband = 15; # updates occur this many seconds after predicted gif completion
 | ||
| 	my $refresh = $interval + $guardband + $gifdone - time; # predict how long until next update
 | ||
| 	$refresh = $interval if $refresh <= $guardband;
 | ||
| 	my $expires = gmtime (time + $interval * 2 + $guardband);
 | ||
|  | ||
| 	print "<table cellpadding=2 cellspacing=0>\n",
 | ||
| 		"<tr><td colspan=2>";
 | ||
| 	my $graph = param('graph') || 'day';
 | ||
|  | ||
| 	print_graph_chooser($graph,$selfurl);
 | ||
| 	my $selfurl.='list='.param('list').'&';
 | ||
|  | ||
| 	print "</tr><tr><td valign=top>";
 | ||
| 	print
 | ||
| 		"<meta http-equiv=\"expires\" content=\"$expires GMT\">\n",
 | ||
| 		"<meta http-equiv=\"refresh\" content=$refresh>\n";
 | ||
|  | ||
| 	print "<table cellpadding=2 cellspacing=0>\n";
 | ||
|  | ||
| 	print "<tr><td valign=top>";
 | ||
| 	print_menu_table($lists,'high');
 | ||
| 	print "</td><td valign=top>\n";
 | ||
|  | ||
| 	print "<td valign=top>\n";
 | ||
| 	print_graph_chooser($graph,$selfurl);
 | ||
| 	print "<br/>";
 | ||
| 	print_list($lists,$graph,param('list'));
 | ||
|  | ||
| 	print "</table>\n";
 | ||
| 	print end_html;
 | ||
|  | ||
| }
 | ||
|  | ||
| if ($warnings) {
 | ||
| 	print "<pre>\n", "$warnings", "</pre>\n";
 | ||
| }
 | ||
|  | ||
| print "\n","Direct questions and feedback to ",
 | ||
| 	a({-href=>"mailto:hamish\@zot.org"}, "Hamish"),
 | ||
| 	" (Version $VERSION)",
 | ||
| 	end_html;
 | ||
|  | ||
Also available in: Unified diff
First pass at frameset interface