Example #1
0
function boost_display_run_status()
{
    global $refresh, $config, $refresh_interval, $boost_utilities_interval, $boost_refresh_interval, $boost_max_runtime;
    /* ================= input validation ================= */
    input_validate_input_number(get_request_var_request('refresh'));
    /* ==================================================== */
    load_current_session_value('refresh', 'sess_boost_utilities_refresh', '30');
    $refresh['seconds'] = $_REQUEST['refresh'];
    $refresh['page'] = 'utilities.php?action=view_boost_status';
    $last_run_time = read_config_option('boost_last_run_time', TRUE);
    $next_run_time = read_config_option('boost_next_run_time', TRUE);
    $rrd_updates = read_config_option('boost_rrd_update_enable', TRUE);
    $boost_server = read_config_option('boost_server_enable', TRUE);
    $boost_cache = read_config_option('boost_png_cache_enable', TRUE);
    $max_records = read_config_option('boost_rrd_update_max_records', TRUE);
    $max_runtime = read_config_option('boost_rrd_update_max_runtime', TRUE);
    $update_interval = read_config_option('boost_rrd_update_interval', TRUE);
    $peak_memory = read_config_option('boost_peak_memory', TRUE);
    $detail_stats = read_config_option('stats_detail_boost', TRUE);
    html_start_box('<strong>Boost Status</strong>', '100%', '', '3', 'center', '');
    ?>
	<script type="text/javascript">
	<!--
	function applyStatsRefresh(objForm) {
		strURL = '?action=view_boost_status&refresh=' + objForm.refresh[objForm.refresh.selectedIndex].value;
		document.location = strURL;
	}
	-->
	</script>
	<tr class='even'>
		<form name="form_boost_utilities_stats" method="post">
		<td>
			<table cellpadding="2" cellspacing="0" border="0">
				<tr>
					<td style="white-space:nowrap;">
						Refresh Interval
					</td>
					<td>
						<select name="refresh" onChange="applyStatsRefresh(document.form_boost_utilities_stats)">
						<?php 
    foreach ($boost_utilities_interval as $key => $interval) {
        print '<option value="' . $key . '"';
        if ($_REQUEST['refresh'] == $key) {
            print ' selected';
        }
        print '>' . $interval . '</option>';
    }
    ?>
					</td>
					<td>
						<input type="submit" value="Refresh">
					</td>
				</tr>
			</table>
		</td>
		</form>
	</tr>
	<?php 
    html_end_box(TRUE);
    html_start_box('', '100%', '', '3', 'center', '');
    /* get the boost table status */
    $boost_table_status = db_fetch_assoc("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=SCHEMA()\n\t\t\t\t\t\tAND (table_name LIKE 'poller_output_boost_arch_%' OR table_name LIKE 'poller_output_boost')");
    $pending_records = 0;
    $arch_records = 0;
    $data_length = 0;
    $engine = '';
    $max_data_length = 0;
    foreach ($boost_table_status as $table) {
        if ($table['TABLE_NAME'] == 'poller_output_boost') {
            $pending_records += $table['TABLE_ROWS'];
        } else {
            $arch_records += $table['TABLE_ROWS'];
        }
        $data_length += $table['DATA_LENGTH'];
        $data_length -= $table['DATA_FREE'];
        $engine = $table['ENGINE'];
        $max_data_length = $table['MAX_DATA_LENGTH'];
    }
    $total_records = $pending_records + $arch_records;
    $avg_row_length = $total_records ? intval($data_length / $total_records) : 0;
    $total_data_sources = db_fetch_cell('SELECT COUNT(*) FROM poller_item');
    $boost_status = read_config_option('boost_poller_status', TRUE);
    if (strlen($boost_status)) {
        $boost_status_array = explode(':', $boost_status);
        $boost_status_date = $boost_status_array[1];
        if (substr_count($boost_status_array[0], 'complete')) {
            $boost_status_text = 'Idle';
        } elseif (substr_count($boost_status_array[0], 'running')) {
            $boost_status_text = 'Running';
        } elseif (substr_count($boost_status_array[0], 'overrun')) {
            $boost_status_text = 'Overrun Warning';
        } elseif (substr_count($boost_status_array[0], 'timeout')) {
            $boost_status_text = 'Timed Out';
        } else {
            $boost_status_text = 'Other';
        }
    } else {
        $boost_status_text = 'Never Run';
        $boost_status_date = '';
    }
    $stats_boost = read_config_option('stats_boost', TRUE);
    if (strlen($stats_boost)) {
        $stats_boost_array = explode(' ', $stats_boost);
        $stats_duration = explode(':', $stats_boost_array[0]);
        $boost_last_run_duration = $stats_duration[1];
        $stats_rrds = explode(':', $stats_boost_array[1]);
        $boost_rrds_updated = $stats_rrds[1];
    } else {
        $boost_last_run_duration = '';
        $boost_rrds_updated = '';
    }
    /* get cache directory size/contents */
    $cache_directory = read_config_option('boost_png_cache_directory', TRUE);
    $directory_contents = array();
    if (is_dir($cache_directory)) {
        if ($handle = @opendir($cache_directory)) {
            /* This is the correct way to loop over the directory. */
            while (FALSE !== ($file = readdir($handle))) {
                $directory_contents[] = $file;
            }
            closedir($handle);
            /* get size of directory */
            $directory_size = 0;
            $cache_files = 0;
            if (sizeof($directory_contents)) {
                /* goto the cache directory */
                chdir($cache_directory);
                /* check and fry as applicable */
                foreach ($directory_contents as $file) {
                    /* only remove jpeg's and png's */
                    if (substr_count(strtolower($file), '.png') || substr_count(strtolower($file), '.jpg')) {
                        $cache_files++;
                        $directory_size += filesize($file);
                    }
                }
            }
            $directory_size = boost_file_size_display($directory_size);
            $cache_files = $cache_files . ' Files';
        } else {
            $directory_size = '<strong>WARNING:</strong> Can not open directory';
            $cache_files = '<strong>WARNING:</strong> Unknown';
        }
    } else {
        $directory_size = '<strong>WARNING:</strong> Directory Does NOT Exist!!';
        $cache_files = '<strong>WARNING:</strong> N/A';
    }
    $i = 0;
    /* boost status display */
    html_header(array('Current Boost Status'), 2);
    form_alternate_row();
    print '<td><strong>Boost On Demand Updating:</strong></td><td><strong>' . ($rrd_updates == '' ? 'Disabled' : $boost_status_text) . '</strong></td>';
    form_alternate_row();
    print '<td><strong>Total Data Sources:</strong></td><td>' . $total_data_sources . '</td>';
    if ($total_records > 0) {
        form_alternate_row();
        print '<td><strong>Pending Boost Records:</strong></td><td>' . $pending_records . '</td>';
        form_alternate_row();
        print '<td><strong>Archived Boost Records:</strong></td><td>' . $arch_records . '</td>';
        form_alternate_row();
        print '<td><strong>Total Boost Records:</strong></td><td>' . $total_records . '</td>';
    }
    /* boost status display */
    html_header(array('Boost Storage Statistics'), 2);
    /* describe the table format */
    form_alternate_row();
    print '<td><strong>Database Engine:</strong></td><td>' . $engine . '</td>';
    /* tell the user how big the table is */
    form_alternate_row();
    print '<td><strong>Current Boost Tables Size:</strong></td><td>' . boost_file_size_display($data_length, 2) . '</td>';
    /* tell the user about the average size/record */
    form_alternate_row();
    print '<td><strong>Avg Bytes/Record:</strong></td><td>' . boost_file_size_display($avg_row_length) . '</td>';
    /* tell the user about the average size/record */
    $output_length = read_config_option('boost_max_output_length');
    if (strlen($output_length)) {
        $parts = explode(':', $output_length);
        if (time() - 1200 > $parts[0]) {
            $refresh = TRUE;
        } else {
            $refresh = FALSE;
        }
    } else {
        $refresh = TRUE;
    }
    if ($refresh) {
        if (strcmp($engine, 'MEMORY') == 0) {
            $max_length = db_fetch_cell('SELECT MAX(LENGTH(output)) FROM poller_output_boost');
        } else {
            $max_length = '0';
        }
        db_execute("REPLACE INTO settings (name, value) VALUES ('boost_max_output_length', '" . time() . ':' . $max_length . "')");
    } else {
        $max_length = $parts[1];
    }
    if ($max_length != 0) {
        form_alternate_row();
        print '<td><strong>Max Record Length:</strong></td><td>' . $max_length . ' Bytes</td>';
    }
    /* tell the user about the "Maximum Size" this table can be */
    form_alternate_row();
    if (strcmp($engine, 'MEMORY')) {
        $max_table_allowed = 'Unlimited';
        $max_table_records = 'Unlimited';
    } else {
        $max_table_allowed = boost_file_size_display($max_data_length, 2);
        $max_table_records = $avg_row_length ? round($max_data_length / $avg_row_length, 0) : 0;
    }
    print '<td><strong>Max Allowed Boost Table Size:</strong></td><td>' . $max_table_allowed . '</td>';
    /* tell the user about the estimated records that "could" be held in memory */
    form_alternate_row();
    print '<td><strong>Estimated Maximum Records:</strong></td><td>' . $max_table_records . ' Records</td>';
    /* boost last runtime display */
    html_header(array('Runtime Statistics'), 2);
    form_alternate_row();
    print '<td width=200><strong>Last Start Time:</strong></td><td>' . $last_run_time . '</td>';
    form_alternate_row();
    print '<td width=200><strong>Last Run Duration:</strong></td><td>';
    print ($boost_last_run_duration > 60 ? (int) ($boost_last_run_duration / 60) . ' minutes ' : '') . $boost_last_run_duration % 60 . ' seconds';
    if ($rrd_updates != '') {
        print ' (' . round(100 * $boost_last_run_duration / $update_interval / 60) . '% of update frequency)';
    }
    print '</td>';
    form_alternate_row();
    print '<td width=200><strong>RRD Updates:</strong></td><td>' . $boost_rrds_updated . '</td>';
    form_alternate_row();
    print '<td width=200><strong>Peak Poller Memory:</strong></td><td>' . (read_config_option('boost_peak_memory') != '' ? round(read_config_option('boost_peak_memory') / 1024 / 1024, 2) . ' MBytes' : 'N/A') . '</td>';
    form_alternate_row();
    print '<td width=200><strong>Detailed Runtime Timers:</strong></td><td>' . ($detail_stats != '' ? $detail_stats : 'N/A') . '</td>';
    form_alternate_row();
    print '<td width=200><strong>Max Poller Memory Allowed:</strong></td><td>' . (read_config_option('boost_poller_mem_limit') != '' ? read_config_option('boost_poller_mem_limit') . ' MBytes' : 'N/A') . '</td>';
    /* boost runtime display */
    html_header(array('Run Time Configuration'), 2);
    form_alternate_row();
    print '<td width=200><strong>Update Frequency:</strong></td><td><strong>' . ($rrd_updates == '' ? 'N/A' : $boost_refresh_interval[$update_interval]) . '</strong></td>';
    form_alternate_row();
    print '<td width=200><strong>Next Start Time:</strong></td><td>' . $next_run_time . '</td>';
    form_alternate_row();
    print '<td width=200><strong>Maximum Records:</strong></td><td>' . $max_records . ' Records</td>';
    form_alternate_row();
    print '<td width=200><strong>Maximum Allowed Runtime:</strong></td><td>' . $boost_max_runtime[$max_runtime] . '</td>';
    /* boost runtime display */
    html_header(array('Boost Server Details'), 2);
    form_alternate_row();
    print '<td><strong>Server Config Status:</strong></td><td><strong>' . ($boost_server == '' ? 'Disabled' : 'Enabled') . '</strong></td>';
    form_alternate_row();
    print '<td><strong>Multiprocess Server:</td><td>' . (read_config_option('boost_server_multiprocess', TRUE) == '1' ? 'Multiple Process' : 'Single Process') . '</strong></td>';
    form_alternate_row();
    print '<td><strong>Update Timeout:</td><td>' . read_config_option('boost_server_timeout', TRUE) . ' Seconds</strong></td>';
    form_alternate_row();
    print '<td><strong>Server/Port:</td><td>' . read_config_option('boost_server_hostname', TRUE) . '@' . read_config_option('boost_server_listen_port', TRUE) . '</strong></td>';
    form_alternate_row();
    print '<td><strong>Authorized Update Web Servers:</td><td>' . read_config_option('boost_server_clients', TRUE) . '</strong></td>';
    if (strlen(read_config_option('boost_path_rrdupdate')) && read_config_option('boost_server_multiprocess') == 1) {
        form_alternate_row();
        print '<td><strong>RRDtool Binary Used:</td><td>' . read_config_option('boost_path_rrdupdate') . '</strong></td>';
    } else {
        form_alternate_row();
        print '<td><strong>RRDtool Binary Used:</td><td>' . read_config_option('path_rrdtool') . '</strong></td>';
    }
    /* boost caching */
    html_header(array('Image Caching'), 2);
    form_alternate_row();
    print '<td><strong>Image Caching Status:</strong></td><td><strong>' . ($boost_cache == '' ? 'Disabled' : 'Enabled') . '</strong></td>';
    form_alternate_row();
    print '<td><strong>Cache Directory:</strong></td><td>' . $cache_directory . '</td>';
    form_alternate_row();
    print '<td><strong>Cached Files:</strong></td><td>' . $cache_files . '</td>';
    form_alternate_row();
    print '<td><strong>Cached Files Size:</strong></td><td>' . $directory_size . '</td>';
    html_end_box(TRUE);
}
Example #2
0
function boost_display_run_status()
{
    global $colors, $config, $refresh_interval, $boost_utilities_interval, $boost_refresh_interval, $boost_max_runtime;
    $last_run_time = read_config_option("boost_last_run_time", TRUE);
    $next_run_time = read_config_option("boost_next_run_time", TRUE);
    $rrd_updates = read_config_option("boost_rrd_update_enable", TRUE);
    $boost_server = read_config_option("boost_server_enable", TRUE);
    $boost_cache = read_config_option("boost_png_cache_enable", TRUE);
    $max_records = read_config_option("boost_rrd_update_max_records", TRUE);
    $max_runtime = read_config_option("boost_rrd_update_max_runtime", TRUE);
    $update_interval = read_config_option("boost_rrd_update_interval", TRUE);
    $peak_memory = read_config_option('boost_peak_memory', TRUE);
    $detail_stats = read_config_option('stats_detail_boost', TRUE);
    html_start_box("<strong>Boost Status</strong>", "100%", $colors["header"], "1", "center", "");
    ?>
	<script type="text/javascript">
	<!--
	function applyStatsRefresh(objForm) {
		strURL = '?action=view_boost_status&refresh=' + objForm.refresh[objForm.refresh.selectedIndex].value;
		document.location = strURL;
	}
	-->
	</script>
	<tr bgcolor="<?php 
    print $colors["panel"];
    ?>
">
		<form name="form_boost_utilities_stats" method="post">
		<td>
			<table cellpadding="1" cellspacing="0">
				<tr>
					<td width="120" style="white-space:nowrap;">
						&nbsp;Refresh Interval:
					</td>
					<td width="1">
						<select name="refresh" onChange="applyStatsRefresh(document.form_boost_utilities_stats)">
						<?php 
    foreach ($boost_utilities_interval as $key => $interval) {
        print '<option value="' . $key . '"';
        if ($_REQUEST["refresh"] == $key) {
            print " selected";
        }
        print ">" . $interval . "</option>";
    }
    ?>
					</td>
					<td>
						&nbsp;<input type="submit" value="Refresh">
					</td>
				</tr>
			</table>
		</td>
		</form>
	</tr>
	<?php 
    html_end_box(TRUE);
    html_start_box("", "100%", $colors["header"], "1", "center", "");
    /* get the boost table status */
    $boost_table_status = db_fetch_assoc("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=SCHEMA()\r\n\t\t\t\t\t\tAND (table_name LIKE 'poller_output_boost_arch_%' OR table_name LIKE 'poller_output_boost')");
    $pending_records = 0;
    $arch_records = 0;
    $data_length = 0;
    $engine = "";
    $max_data_length = 0;
    foreach ($boost_table_status as $table) {
        if ($table["TABLE_NAME"] == "poller_output_boost") {
            $pending_records += $table["TABLE_ROWS"];
        } else {
            $arch_records += $table["TABLE_ROWS"];
        }
        $data_length += $table["DATA_LENGTH"];
        $data_length -= $table["DATA_FREE"];
        $engine = $table["ENGINE"];
        $max_data_length = $table["MAX_DATA_LENGTH"];
    }
    $total_records = $pending_records + $arch_records;
    $avg_row_length = intval($data_length / $total_records);
    $total_data_sources = db_fetch_cell("SELECT COUNT(*) FROM poller_item");
    $boost_status = read_config_option("boost_poller_status", TRUE);
    if (strlen($boost_status)) {
        $boost_status_array = explode(":", $boost_status);
        $boost_status_date = $boost_status_array[1];
        if (substr_count($boost_status_array[0], "complete")) {
            $boost_status_text = "Idle";
        } elseif (substr_count($boost_status_array[0], "running")) {
            $boost_status_text = "Running";
        } elseif (substr_count($boost_status_array[0], "overrun")) {
            $boost_status_text = "Overrun Warning";
        } elseif (substr_count($boost_status_array[0], "timeout")) {
            $boost_status_text = "Timed Out";
        } else {
            $boost_status_text = "Other";
        }
    } else {
        $boost_status_text = "Never Run";
        $boost_status_date = "";
    }
    $stats_boost = read_config_option("stats_boost", TRUE);
    if (strlen($stats_boost)) {
        $stats_boost_array = explode(" ", $stats_boost);
        $stats_duration = explode(":", $stats_boost_array[0]);
        $boost_last_run_duration = $stats_duration[1];
        $stats_rrds = explode(":", $stats_boost_array[1]);
        $boost_rrds_updated = $stats_rrds[1];
    } else {
        $boost_last_run_duration = "";
        $boost_rrds_updated = "";
    }
    /* get cache directory size/contents */
    $cache_directory = read_config_option("boost_png_cache_directory", TRUE);
    $directory_contents = array();
    if (is_dir($cache_directory)) {
        if ($handle = @opendir($cache_directory)) {
            /* This is the correct way to loop over the directory. */
            while (FALSE !== ($file = readdir($handle))) {
                $directory_contents[] = $file;
            }
            closedir($handle);
            /* get size of directory */
            $directory_size = 0;
            $cache_files = 0;
            if (sizeof($directory_contents)) {
                /* goto the cache directory */
                chdir($cache_directory);
                /* check and fry as applicable */
                foreach ($directory_contents as $file) {
                    /* only remove jpeg's and png's */
                    if (substr_count(strtolower($file), ".png") || substr_count(strtolower($file), ".jpg")) {
                        $cache_files++;
                        $directory_size += filesize($file);
                    }
                }
            }
            $directory_size = boost_file_size_display($directory_size);
            $cache_files = $cache_files . " Files";
        } else {
            $directory_size = "<strong>WARNING:</strong> Can not open directory";
            $cache_files = "<strong>WARNING:</strong> Unknown";
        }
    } else {
        $directory_size = "<strong>WARNING:</strong> Directory Does NOT Exist!!";
        $cache_files = "<strong>WARNING:</strong> N/A";
    }
    $i = 0;
    /* boost status display */
    html_header(array("Current Boost Status"), 2);
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Boost On Demand Updating:</strong></td><td><strong>" . ($rrd_updates == "" ? "Disabled" : $boost_status_text) . "</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Total Data Sources:</strong></td><td>" . $total_data_sources . "</td>";
    if ($total_records > 0) {
        form_alternate_row_color($colors["alternate"], $colors["light"], $i);
        $i++;
        print "<td><strong>Pending Boost Records:</strong></td><td>" . $pending_records . "</td>";
        form_alternate_row_color($colors["alternate"], $colors["light"], $i);
        $i++;
        print "<td><strong>Archived Boost Records:</strong></td><td>" . $arch_records . "</td>";
        form_alternate_row_color($colors["alternate"], $colors["light"], $i);
        $i++;
        print "<td><strong>Total Boost Records:</strong></td><td>" . $total_records . "</td>";
    }
    /* boost status display */
    html_header(array("Boost Storage Statistics"), 2);
    /* describe the table format */
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Database Engine:</strong></td><td>" . $engine . "</td>";
    /* tell the user how big the table is */
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Current Boost Tables Size:</strong></td><td>" . boost_file_size_display($data_length, 2) . "</td>";
    /* tell the user about the average size/record */
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Avg Bytes/Record:</strong></td><td>" . boost_file_size_display($avg_row_length) . "</td>";
    /* tell the user about the average size/record */
    $output_length = read_config_option("boost_max_output_length");
    if (strlen($output_length)) {
        $parts = explode(":", $output_length);
        if (time() - 1200 > $parts[0]) {
            $refresh = TRUE;
        } else {
            $refresh = FALSE;
        }
    } else {
        $refresh = TRUE;
    }
    if ($refresh) {
        if (strcmp($engine, "MEMORY") == 0) {
            $max_length = db_fetch_cell("SELECT MAX(LENGTH(output)) FROM poller_output_boost");
        } else {
            $max_length = "0";
        }
        db_execute("REPLACE INTO settings (name,value) VALUES ('boost_max_output_length', '" . time() . ":" . $max_length . "')");
    } else {
        $max_length = $parts[1];
    }
    if ($max_length != 0) {
        form_alternate_row_color($colors["alternate"], $colors["light"], $i);
        $i++;
        print "<td><strong>Max Record Length:</strong></td><td>" . $max_length . " Bytes</td>";
    }
    /* tell the user about the "Maximum Size" this table can be */
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    if (strcmp($engine, "MEMORY")) {
        $max_table_allowed = "Unlimited";
        $max_table_records = "Unlimited";
    } else {
        $max_table_allowed = boost_file_size_display($max_data_length, 2);
        $max_table_records = round($max_data_length / $avg_row_length, 0);
    }
    print "<td><strong>Max Allowed Boost Table Size:</strong></td><td>" . $max_table_allowed . "</td>";
    /* tell the user about the estimated records that "could" be held in memory */
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Estimated Maximum Records:</strong></td><td>" . $max_table_records . " Records</td>";
    /* boost last runtime display */
    html_header(array("Runtime Statistics"), 2);
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Last Start Time:</strong></td><td>" . $last_run_time . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Last Run Duration:</strong></td><td>";
    print ($boost_last_run_duration > 60 ? (int) ($boost_last_run_duration / 60) . " minutes " : "") . $boost_last_run_duration % 60 . " seconds";
    if ($rrd_updates != "") {
        print " (" . round(100 * $boost_last_run_duration / $update_interval / 60) . "% of update frequency)";
    }
    print "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>RRD Updates:</strong></td><td>" . $boost_rrds_updated . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Peak Poller Memory:</strong></td><td>" . (read_config_option('boost_peak_memory') != '' ? round(read_config_option('boost_peak_memory') / 1024 / 1024, 2) . " MBytes" : "N/A") . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Detailed Runtime Timers:</strong></td><td>" . ($detail_stats != '' ? $detail_stats : "N/A") . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Max Poller Memory Allowed:</strong></td><td>" . (read_config_option('boost_poller_mem_limit') != '' ? read_config_option('boost_poller_mem_limit') . " MBytes" : "N/A") . "</td>";
    /* boost runtime display */
    html_header(array("Run Time Configuration"), 2);
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Update Frequency:</strong></td><td><strong>" . ($rrd_updates == "" ? "N/A" : $boost_refresh_interval[$update_interval]) . "</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Next Start Time:</strong></td><td>" . $next_run_time . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Maximum Records:</strong></td><td>" . $max_records . " Records</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td width=200><strong>Maximum Allowed Runtime:</strong></td><td>" . $boost_max_runtime[$max_runtime] . "</td>";
    /* boost runtime display */
    html_header(array("Boost Server Details"), 2);
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Server Config Status:</strong></td><td><strong>" . ($boost_server == "" ? "Disabled" : "Enabled") . "</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Multiprocess Server:</td><td>" . (read_config_option("boost_server_multiprocess", TRUE) == "1" ? "Multiple Process" : "Single Process") . "</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Update Timeout:</td><td>" . read_config_option("boost_server_timeout", TRUE) . " Seconds</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Server/Port:</td><td>" . read_config_option("boost_server_hostname", TRUE) . "@" . read_config_option("boost_server_listen_port", TRUE) . "</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Authorized Update Web Servers:</td><td>" . read_config_option("boost_server_clients", TRUE) . "</strong></td>";
    if (strlen(read_config_option("boost_path_rrdupdate")) && read_config_option("boost_server_multiprocess") == 1) {
        form_alternate_row_color($colors["alternate"], $colors["light"], $i);
        $i++;
        print "<td><strong>RRDtool Binary Used:</td><td>" . read_config_option("boost_path_rrdupdate") . "</strong></td>";
    } else {
        form_alternate_row_color($colors["alternate"], $colors["light"], $i);
        $i++;
        print "<td><strong>RRDtool Binary Used:</td><td>" . read_config_option("path_rrdtool") . "</strong></td>";
    }
    /* boost caching */
    html_header(array("Image Caching"), 2);
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Image Caching Status:</strong></td><td><strong>" . ($boost_cache == "" ? "Disabled" : "Enabled") . "</strong></td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Cache Directory:</strong></td><td>" . $cache_directory . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Cached Files:</strong></td><td>" . $cache_files . "</td>";
    form_alternate_row_color($colors["alternate"], $colors["light"], $i);
    $i++;
    print "<td><strong>Cached Files Size:</strong></td><td>" . $directory_size . "</td>";
    html_end_box(TRUE);
}