diff options
Diffstat (limited to 'src/usr/local/www/widgets/widgets/system_information.widget.php')
-rw-r--r-- | src/usr/local/www/widgets/widgets/system_information.widget.php | 322 |
1 files changed, 322 insertions, 0 deletions
diff --git a/src/usr/local/www/widgets/widgets/system_information.widget.php b/src/usr/local/www/widgets/widgets/system_information.widget.php new file mode 100644 index 0000000..231f2ee --- /dev/null +++ b/src/usr/local/www/widgets/widgets/system_information.widget.php @@ -0,0 +1,322 @@ +<?php +/* + system_information.widget.php + Copyright (C) 2013-2015 Electric Sheep Fencing, LP + Copyright 2007 Scott Dale + Part of pfSense widgets (https://www.pfsense.org) + originally based on m0n0wall (http://m0n0.ch/wall) + + Copyright (C) 2004-2005 T. Lechat <dev@lechat.org>, Manuel Kasper <mk@neon1.net> + and Jonathan Watt <jwatt@jwatt.org>. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +require_once("functions.inc"); +require_once("guiconfig.inc"); +require_once('notices.inc'); +include_once("includes/functions.inc.php"); + +if ($_REQUEST['getupdatestatus']) { + if (isset($config['system']['firmware']['disablecheck'])) { + exit; + } + if (isset($config['system']['firmware']['alturl']['enable'])) { + $updater_url = "{$config['system']['firmware']['alturl']['firmwareurl']}"; + } else { + $updater_url = $g['update_url']; + } + + $nanosize = ""; + if ($g['platform'] == "nanobsd") { + if (file_exists("/etc/nano_use_vga.txt")) { + $nanosize = "-nanobsd-vga-"; + } else { + $nanosize = "-nanobsd-"; + } + $nanosize .= strtolower(trim(file_get_contents("/etc/nanosize.txt"))); + } + + @unlink("/tmp/{$g['product_name']}_version"); + if (download_file_with_progress_bar("{$updater_url}/version{$nanosize}", "/tmp/{$g['product_name']}_version", 'read_body', 5, 5) === true) { + $remote_version = trim(@file_get_contents("/tmp/{$g['product_name']}_version")); + } + + if (empty($remote_version)) { + echo "<br /><br />Unable to check for updates."; + } else { + $current_installed_buildtime = trim(file_get_contents("/etc/version.buildtime")); + + if (!$remote_version) { + echo "<br /><br />Unable to check for updates."; + } else { + $needs_system_upgrade = false; + if (pfs_version_compare($current_installed_buildtime, $g['product_version'], $remote_version) == -1) { + echo "<br /><span class=\"red\" id=\"updatealert\"><b>Update available. </b></span><a href=\"/system_firmware_check.php\">Click Here</a> to view update."; + echo "\n<script type=\"text/javascript\">\n"; + echo "//<![CDATA[\n"; + echo "jQuery('#updatealert').effect('pulsate',{times: 30},10000);\n"; + echo "//]]>\n"; + echo "</script>\n"; + } else { + echo "<br />You are on the latest version."; + } + } + } + exit; +} + +$curcfg = $config['system']['firmware']; + +$filesystems = get_mounted_filesystems(); + +?> +<script type="text/javascript"> +//<![CDATA[ + jQuery(function() { + jQuery("#statePB").progressbar( { value: <?php echo get_pfstate(true); ?> } ); + jQuery("#mbufPB").progressbar( { value: <?php echo get_mbuf(true); ?> } ); + jQuery("#cpuPB").progressbar( { value:false } ); + jQuery("#memUsagePB").progressbar( { value: <?php echo mem_usage(); ?> } ); + +<?PHP $d = 0; ?> +<?PHP foreach ($filesystems as $fs): ?> + jQuery("#diskUsagePB<?php echo $d++; ?>").progressbar( { value: <?php echo $fs['percent_used']; ?> } ); +<?PHP endforeach; ?> + + <?php if ($showswap == true): ?> + jQuery("#swapUsagePB").progressbar( { value: <?php echo swap_usage(); ?> } ); + <?php endif; ?> + <?php if (get_temp() != ""): ?> + jQuery("#tempPB").progressbar( { value: <?php echo get_temp(); ?> } ); + <?php endif; ?> + }); +//]]> +</script> + +<table width="100%" border="0" cellspacing="0" cellpadding="0" summary="system information"> + <tbody> + <tr> + <td width="25%" class="vncellt"><?=gettext("Name");?></td> + <td width="75%" class="listr"><?php echo $config['system']['hostname'] . "." . $config['system']['domain']; ?></td> + </tr> + <tr> + <td width="25%" valign="top" class="vncellt"><?=gettext("Version");?></td> + <td width="75%" class="listr"> + <strong><?=$g['product_version']?></strong> + (<?php echo php_uname("m"); ?>) + <br /> + built on <?php readfile("/etc/version.buildtime"); ?> + <?php if (!$g['hideuname']): ?> + <br /> + <div id="uname"><a href="#" onclick='swapuname(); return false;'><?php echo php_uname("s") . " " . php_uname("r"); ?></a></div> + <?php endif; ?> + <?php if (!isset($config['system']['firmware']['disablecheck'])): ?> + <div id='updatestatus'><br /><?php echo gettext("Obtaining update status"); ?> ...</div> + <?php endif; ?> + </td> + </tr> + <?php if (!$g['hideplatform']): ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Platform");?></td> + <td width="75%" class="listr"> + <?=htmlspecialchars($g['platform']);?> + <?php if (($g['platform'] == "nanobsd") && (file_exists("/etc/nanosize.txt"))) { + echo " (" . htmlspecialchars(trim(file_get_contents("/etc/nanosize.txt"))) . ")"; + } ?> + </td> + </tr> + <?php endif; ?> + <?php if ($g['platform'] == "nanobsd"): ?> + <? + global $SLICE, $OLDSLICE, $TOFLASH, $COMPLETE_PATH, $COMPLETE_BOOT_PATH; + global $GLABEL_SLICE, $UFS_ID, $OLD_UFS_ID, $BOOTFLASH; + global $BOOT_DEVICE, $REAL_BOOT_DEVICE, $BOOT_DRIVE, $ACTIVE_SLICE; + nanobsd_detect_slice_info(); + $rw = is_writable("/") ? "(rw)" : "(ro)"; + ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("NanoBSD Boot Slice");?></td> + <td width="75%" class="listr"> + <?=htmlspecialchars(nanobsd_friendly_slice_name($BOOT_DEVICE));?> / <?=htmlspecialchars($BOOTFLASH);?> <?php echo $rw; ?> + <?php if ($BOOTFLASH != $ACTIVE_SLICE): ?> + <br /><br />Next Boot:<br /> + <?=htmlspecialchars(nanobsd_friendly_slice_name($GLABEL_SLICE));?> / <?=htmlspecialchars($ACTIVE_SLICE);?> + <?php endif; ?> + </td> + </tr> + <?php endif; ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("CPU Type");?></td> + <td width="75%" class="listr"> + <?php + echo (htmlspecialchars(get_single_sysctl("hw.model"))); + ?> + <div id="cpufreq"><?= get_cpufreq(); ?></div> + <?php + $cpucount = get_cpu_count(); + if ($cpucount > 1): ?> + <div id="cpucount"> + <?= htmlspecialchars($cpucount) ?> CPUs: <?= htmlspecialchars(get_cpu_count(true)); ?></div> + <?php endif; ?> + </td> + </tr> + <?php if ($hwcrypto): ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Hardware crypto");?></td> + <td width="75%" class="listr"><?=htmlspecialchars($hwcrypto);?></td> + </tr> + <?php endif; ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Uptime");?></td> + <td width="75%" class="listr" id="uptime"><?= htmlspecialchars(get_uptime()); ?></td> + </tr> + <tr> + <td width="25%" class="vncellt"><?=gettext("Current date/time");?></td> + <td width="75%" class="listr"> + <div id="datetime"><?= date("D M j G:i:s T Y"); ?></div> + </td> + </tr> + <tr> + <td width="30%" class="vncellt"><?=gettext("DNS server(s)");?></td> + <td width="70%" class="listr"> + <?php + $dns_servers = get_dns_servers(); + foreach ($dns_servers as $dns) { + echo "{$dns}<br />"; + } + ?> + </td> + </tr> + <?php if ($config['revision']): ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Last config change");?></td> + <td width="75%" class="listr"><?= htmlspecialchars(date("D M j G:i:s T Y", intval($config['revision']['time'])));?></td> + </tr> + <?php endif; ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("State table size");?></td> + <td width="75%" class="listr"> + <?php + $pfstatetext = get_pfstate(); + $pfstateusage = get_pfstate(true); + ?> + <div id="statePB"></div> + <span id="pfstateusagemeter"><?= $pfstateusage.'%'; ?></span> (<span id="pfstate"><?= htmlspecialchars($pfstatetext); ?></span>) + <br /> + <a href="diag_dump_states.php"><?=gettext("Show states");?></a> + </td> + </tr> + <tr> + <td width="25%" class="vncellt"><?=gettext("MBUF Usage");?></td> + <td width="75%" class="listr"> + <?php + $mbufstext = get_mbuf(); + $mbufusage = get_mbuf(true); + ?> + <div id="mbufPB"></div> + <span id="mbufusagemeter"><?= $mbufusage.'%'; ?></span> (<span id="mbuf"><?= $mbufstext ?></span>) + </td> + </tr> + <?php if (get_temp() != ""): ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Temperature");?></td> + <td width="75%" class="listr"> + <?php $TempMeter = $temp = get_temp(); ?> + <div id="tempPB"></div> + <span id="tempmeter"><?= $temp."°C"; ?></span> + </td> + </tr> + <?php endif; ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Load average");?></td> + <td width="75%" class="listr"> + <div id="load_average" title="Last 1, 5 and 15 minutes"><?= get_load_average(); ?></div> + </td> + </tr> + <tr> + <td width="25%" class="vncellt"><?=gettext("CPU usage");?></td> + <td width="75%" class="listr"> + <div id="cpuPB"></div> + <span id="cpumeter">(Updating in 10 seconds)</span> + </td> + </tr> + <tr> + <td width="25%" class="vncellt"><?=gettext("Memory usage");?></td> + <td width="75%" class="listr"> + <?php $memUsage = mem_usage(); ?> + <div id="memUsagePB"></div> + <span id="memusagemeter"><?= $memUsage.'%'; ?></span> of <?= sprintf("%.0f", get_single_sysctl('hw.physmem') / (1024*1024)) ?> MB + </td> + </tr> + <?php if ($showswap == true): ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("SWAP usage");?></td> + <td width="75%" class="listr"> + <?php $swapusage = swap_usage(); ?> + <div id="swapUsagePB"></div> + <span id="swapusagemeter"><?= $swapusage.'%'; ?></span> of <?= sprintf("%.0f", `/usr/sbin/swapinfo -m | /usr/bin/grep -v Device | /usr/bin/awk '{ print $2;}'`) ?> MB + </td> + </tr> + <?php endif; ?> + <tr> + <td width="25%" class="vncellt"><?=gettext("Disk usage");?></td> + <td width="75%" class="listr"> + <?php $d = 0; ?> + <?php foreach ($filesystems as $fs): ?> + <div id="diskUsagePB<?php echo $d; ?>"></div> + <?php if (substr(basename($fs['device']), 0, 2) == "md") $fs['type'] .= " in RAM"; ?> + <?php echo "{$fs['mountpoint']} ({$fs['type']})";?>: <span id="diskusagemeter<?php echo $d++ ?>"><?= $fs['percent_used'].'%'; ?></span> of <?PHP echo $fs['total_size'];?> + <br /> + <?php endforeach; ?> + </td> + </tr> + </tbody> +</table> +<script type="text/javascript"> +//<![CDATA[ + function swapuname() { + jQuery('#uname').html("<?php echo php_uname("a"); ?>"); + } + <?php if (!isset($config['system']['firmware']['disablecheck'])): ?> + function getstatus() { + scroll(0,0); + var url = "/widgets/widgets/system_information.widget.php"; + var pars = 'getupdatestatus=yes'; + jQuery.ajax( + url, + { + type: 'get', + data: pars, + complete: activitycallback + }); + } + function activitycallback(transport) { + // .html() method process all script tags contained in responseText, + // to avoid this we set the innerHTML property + jQuery('#updatestatus').prop('innerHTML',transport.responseText); + } + setTimeout('getstatus()', 4000); + <?php endif; ?> +//]]> +</script> |