mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-14 00:24:40 +00:00
Even more updates on upgrade checking.. now with configurable timeout
This commit is contained in:
parent
cdf99701c9
commit
e6eb5c60f6
@ -33,7 +33,7 @@
|
||||
# repository: error|ok
|
||||
# last_ckeck: <date_time_stamp>
|
||||
# updates: <#num_of_updates>
|
||||
# core_version: current|<new core version>
|
||||
# core_version: unknown|<current core version>
|
||||
# download_size: none|<size_of_total_downloads>
|
||||
# extra_space_required: none|<size_of_total_extra_space_required>
|
||||
# new_packages: array with { name: <package_name>, version: <package_version> }
|
||||
@ -55,6 +55,8 @@ required_space="none"
|
||||
download_size="none"
|
||||
itemcount=0
|
||||
linecount=0
|
||||
timer=0
|
||||
timeout=30 # Wait for a maximum number of seconds to determine connection issues
|
||||
|
||||
# File location variables
|
||||
package_json_output="/tmp/pkg_status.json"
|
||||
@ -62,101 +64,138 @@ tmp_pkg_output_file="/tmp/packages.output"
|
||||
tmp_pkg_update_file="/tmp/pkg_updates.output"
|
||||
|
||||
# Check if pkg is already runnig
|
||||
pkg_running=`ps | grep "pkg " | grep -v "grep"`
|
||||
pkg_running=`ps -x | grep "pkg " | grep -v "grep"`
|
||||
if [ "$pkg_running" == "" ]; then
|
||||
# start pkg update
|
||||
pkg update -f > $tmp_pkg_update_file 2>&1 &
|
||||
pid=$!
|
||||
# wait for defined number of seconds for connection
|
||||
sleep 8
|
||||
# check if pkg is done, if not we have a connection issue
|
||||
pkg_running=`ps | grep $pid | grep -v "grep"`
|
||||
if [ "$pkg_running" == "" ]; then
|
||||
pkg update -f > $tmp_pkg_update_file &
|
||||
pkg_running="started" # Set running state to arbitrary value
|
||||
timer=$timeout # Reset our timer
|
||||
|
||||
# Timeout loop for pkg update -f
|
||||
while [ "$pkg_running" != "" ] && [ $timer -ne 0 ];
|
||||
do
|
||||
sleep 1 # wait for 1 second
|
||||
pkg_running=`ps -x | grep "pkg " | grep -v "grep"`
|
||||
timer=`echo $timer - 1 | bc`
|
||||
done
|
||||
|
||||
## check if timeout is not reached
|
||||
if [ $timer -gt 0 ] ; then
|
||||
# Connection is ok
|
||||
connection="ok"
|
||||
repo_ok=`cat $tmp_pkg_update_file | grep 'Unable to update repository'`
|
||||
if [ "$repo_ok" == "" ]; then
|
||||
# Repository can be used for updates
|
||||
repository="ok"
|
||||
# Now check if there are upgrades
|
||||
pkg upgrade -n > $tmp_pkg_output_file
|
||||
updates=`cat $tmp_pkg_output_file | grep 'The following' | awk -F '[ ]' '{print $3}'`
|
||||
if [ "$updates" == "" ]; then
|
||||
# There are no updates
|
||||
updates="0"
|
||||
else
|
||||
core_version=`cat $tmp_pkg_output_file | grep 'opnsense:' | awk -F '[ ]' '{print $4}'` # Not really needed but usefull for fast version check
|
||||
required_space=`cat $tmp_pkg_output_file | grep 'The process will require' | awk -F '[ ]' '{print $5$6}'`
|
||||
if [ "$required_space" == "" ]; then
|
||||
required_space="none"
|
||||
fi
|
||||
download_size=`cat $tmp_pkg_output_file | grep 'to be downloaded' | awk -F '[ ]' '{print $1$2}'`
|
||||
if [ "$download_size" == "" ]; then
|
||||
download_size="none"
|
||||
fi
|
||||
# First check if there are new packages that need to be installed
|
||||
for i in $(cat $tmp_pkg_output_file); do
|
||||
if [ "$itemcount" -gt "$linecount" ]; then
|
||||
if [ `echo $linecount + 2 | bc` -eq "$itemcount" ]; then
|
||||
if [ "`echo $i | grep ':'`" == "" ]; then
|
||||
itemcount=0 # This is not a valid item so reset item count
|
||||
else
|
||||
#echo "name:$i"
|
||||
if [ "$packages_new" == "" ]; then
|
||||
packages_new=$packages_new"{\"name\":\"$i\"," # If it is the first item then we do not want a seperator
|
||||
else
|
||||
packages_new=$packages_new", {\"name\":\"$i\","
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ `echo $linecount + 1 | bc` -eq "$itemcount" ]; then
|
||||
packages_new=$packages_new"\"version\":\"$i\"}"
|
||||
itemcount=`echo $itemcount + 2 | bc` # Get ready for next item
|
||||
fi
|
||||
fi
|
||||
linecount=`echo $linecount + 1 | bc`
|
||||
if [ "$i" == "INSTALLED:" ]; then
|
||||
itemcount=`echo $linecount + 2 | bc`
|
||||
fi
|
||||
done
|
||||
# Now check if there are upgrades
|
||||
pkg upgrade -n > $tmp_pkg_output_file &
|
||||
# Reset timer before getting upgrade info
|
||||
timer=$timeout # Reset our timer
|
||||
pkg_running="started" # Set running state to arbitrary value
|
||||
|
||||
# Now check if there are upgrades to install
|
||||
for i in $(cat $tmp_pkg_output_file); do
|
||||
if [ "$itemcount" -gt "$linecount" ]; then
|
||||
if [ `echo $linecount + 4 | bc` -eq "$itemcount" ]; then
|
||||
if [ "`echo $i | grep ':'`" == "" ]; then
|
||||
itemcount=0 # This is not a valid item so reset item count
|
||||
else
|
||||
if [ "$packages_upgraded" == "" ]; then
|
||||
packages_upgraded=$packages_upgraded"{\"name\":\"$i\"," # If it is the first item then we do not want a seperator
|
||||
# Timeout loop for pkg upgrade -n
|
||||
while [ "$pkg_running" != "" ] && [ $timer -ne 0 ];
|
||||
do
|
||||
sleep 1 # wait for 1 second
|
||||
#pkg_running=`ps | grep 'pkg update -f' | grep -v 'grep' | tail -n 1 | awk -F '[ ]' '{print $1}'`
|
||||
pkg_running=`ps -x | grep "pkg " | grep -v "grep"`
|
||||
timer=`echo $timer - 1 | bc`
|
||||
done
|
||||
|
||||
## check if timeout is not reached
|
||||
if [ $timer -gt 0 ] ; then
|
||||
# Check for additional repository errors
|
||||
repo_ok=`cat $tmp_pkg_output_file | grep 'Unable to update repository'`
|
||||
if [ "$repo_ok" == "" ]; then
|
||||
# Repository can be used for updates
|
||||
repository="ok"
|
||||
updates=`cat $tmp_pkg_output_file | grep 'The following' | awk -F '[ ]' '{print $3}'`
|
||||
if [ "$updates" == "" ]; then
|
||||
# There are no updates
|
||||
updates="0"
|
||||
else
|
||||
core_version=`pkg info opnsense | grep 'Version' | awk -F '[:]' '{print $2}'` # Changed to reflect current installed core version
|
||||
required_space=`cat $tmp_pkg_output_file | grep 'The process will require' | awk -F '[ ]' '{print $5$6}'`
|
||||
if [ "$required_space" == "" ]; then
|
||||
required_space="none"
|
||||
fi
|
||||
download_size=`cat $tmp_pkg_output_file | grep 'to be downloaded' | awk -F '[ ]' '{print $1$2}'`
|
||||
if [ "$download_size" == "" ]; then
|
||||
download_size="none"
|
||||
fi
|
||||
# First check if there are new packages that need to be installed
|
||||
for i in $(cat $tmp_pkg_output_file); do
|
||||
if [ "$itemcount" -gt "$linecount" ]; then
|
||||
if [ `echo $linecount + 2 | bc` -eq "$itemcount" ]; then
|
||||
if [ "`echo $i | grep ':'`" == "" ]; then
|
||||
itemcount=0 # This is not a valid item so reset item count
|
||||
else
|
||||
packages_upgraded=$packages_upgraded", {\"name\":\"$i\","
|
||||
#echo "name:$i"
|
||||
if [ "$packages_new" == "" ]; then
|
||||
packages_new=$packages_new"{\"name\":\"$i\"," # If it is the first item then we do not want a seperator
|
||||
else
|
||||
packages_new=$packages_new", {\"name\":\"$i\","
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ `echo $linecount + 1 | bc` -eq "$itemcount" ]; then
|
||||
packages_new=$packages_new"\"version\":\"$i\"}"
|
||||
itemcount=`echo $itemcount + 2 | bc` # Get ready for next item
|
||||
fi
|
||||
fi
|
||||
if [ `echo $linecount + 3 | bc` -eq "$itemcount" ]; then
|
||||
packages_upgraded=$packages_upgraded"\"current_version\":\"$i\","
|
||||
linecount=`echo $linecount + 1 | bc`
|
||||
if [ "$i" == "INSTALLED:" ]; then
|
||||
itemcount=`echo $linecount + 2 | bc`
|
||||
fi
|
||||
if [ `echo $linecount + 1 | bc` -eq "$itemcount" ]; then
|
||||
packages_upgraded=$packages_upgraded"\"new_version\":\"$i\"}"
|
||||
itemcount=`echo $itemcount + 4 | bc` # Get ready for next item
|
||||
done
|
||||
|
||||
# Now check if there are upgrades to install
|
||||
for i in $(cat $tmp_pkg_output_file); do
|
||||
if [ "$itemcount" -gt "$linecount" ]; then
|
||||
if [ `echo $linecount + 4 | bc` -eq "$itemcount" ]; then
|
||||
if [ "`echo $i | grep ':'`" == "" ]; then
|
||||
itemcount=0 # This is not a valid item so reset item count
|
||||
else
|
||||
if [ "$packages_upgraded" == "" ]; then
|
||||
packages_upgraded=$packages_upgraded"{\"name\":\"$i\"," # If it is the first item then we do not want a seperator
|
||||
else
|
||||
packages_upgraded=$packages_upgraded", {\"name\":\"$i\","
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [ `echo $linecount + 3 | bc` -eq "$itemcount" ]; then
|
||||
packages_upgraded=$packages_upgraded"\"current_version\":\"$i\","
|
||||
fi
|
||||
if [ `echo $linecount + 1 | bc` -eq "$itemcount" ]; then
|
||||
packages_upgraded=$packages_upgraded"\"new_version\":\"$i\"}"
|
||||
itemcount=`echo $itemcount + 4 | bc` # Get ready for next item
|
||||
fi
|
||||
fi
|
||||
linecount=`echo $linecount + 1 | bc`
|
||||
if [ "$i" == "UPGRADED:" ]; then
|
||||
itemcount=`echo $linecount + 4 | bc`
|
||||
fi
|
||||
done
|
||||
if [ "$core_version" == "" ]; then
|
||||
core_version="unknown"
|
||||
fi
|
||||
linecount=`echo $linecount + 1 | bc`
|
||||
if [ "$i" == "UPGRADED:" ]; then
|
||||
itemcount=`echo $linecount + 4 | bc`
|
||||
fi
|
||||
done
|
||||
if [ "$core_version" == "" ]; then
|
||||
core_version="current"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# We have an connection issue and could not reach the pkg repository in timely fashion
|
||||
# Kill all running pkg instances
|
||||
pkg_running=`ps -x | grep "pkg " | grep -v "grep"`
|
||||
if [ "$pkg_running" != "" ]; then
|
||||
killall pkg
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# We have an connection issue and could not reach the pkg repository in timely fashion
|
||||
killall pkg
|
||||
# Kill all running pkg instances
|
||||
pkg_running=`ps -x | grep "pkg " | grep -v "grep"`
|
||||
if [ "$pkg_running" != "" ]; then
|
||||
killall pkg
|
||||
fi
|
||||
fi
|
||||
# Get date/timestamp
|
||||
last_check=`date`
|
||||
# Write our json structure to disk
|
||||
echo "{\"connection\":\"$connection\",\"repository\":\"$repository\",\"last_check\":\"$last_check\",\"updates\":\"$updates\",\"core_version\":\"$core_version\",\"download_size\":\"$download_size\",\"extra_space_required\":\"$required_space\",\"new_packages\":[$packages_new],\"upgrade_packages\":[$packages_upgraded]}" > $package_json_output
|
||||
else
|
||||
# pkg is already running, quitting
|
||||
|
||||
@ -1,102 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2014 Deciso B.V.
|
||||
# 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.
|
||||
|
||||
|
||||
# USAGE:
|
||||
# Add this file to a CRON job to check for pakcage updates regularly
|
||||
#
|
||||
# It generates different files to reflect repository/packages state
|
||||
# /tmp/pkg_updates.output -> Output of pkg update
|
||||
# /tmp/pkg_connection_issue -> Empty file to signal a connection issue
|
||||
# /tmp/pkg_repository.error -> Empty file to signal a repository error
|
||||
# /tmp/pkg_upgrades.output -> Output of pkg upgrade -n
|
||||
# /tmp/pkg_updates.available -> File with content the number of upgrades or new installs
|
||||
# /tmp/pkg_core_update.available -> File with content the new OPNsense version number
|
||||
# /tmp/pkg_last.check -> Write date of last check to file
|
||||
|
||||
|
||||
pkg_running=""
|
||||
# Check if pkg is already runnig
|
||||
pkg_running=`ps | grep "pkg " | grep -v "grep"`
|
||||
if [ "$pkg_running" == "" ]; then
|
||||
# start pkg update
|
||||
pkg update -f > /tmp/pkg_updates.output 2>&1 &
|
||||
pid=$!
|
||||
# wait for defined number of seconds for connection
|
||||
sleep 8
|
||||
# write date time stamp to disk
|
||||
echo `date` > /tmp/pkg_last.check
|
||||
# check if pkg is done, if not we have a connection issue
|
||||
pkg_running=`ps | grep $pid | grep -v "grep"`
|
||||
if [ "$pkg_running" == "" ]; then
|
||||
# Connection is ok
|
||||
# Lets cleanup old connection errors
|
||||
if [ -f /tmp/pkg_connection_issue ]; then
|
||||
rm /tmp/pkg_connection_issue
|
||||
fi
|
||||
repo_ok=`cat /tmp/pkg_updates.output | grep 'Unable to update repository'`
|
||||
if [ "$repo_ok" == "" ]; then
|
||||
# Repository can be used for updates
|
||||
# Check if earlier attemps left repository error file
|
||||
if [ -f /tmp/pkg_repository.error ]; then
|
||||
# Remove previous error file
|
||||
rm /tmp/pkg_repository.error
|
||||
fi
|
||||
# Now check if there are upgrades
|
||||
pkg upgrade -n > /tmp/pkg_upgrades.output
|
||||
updates=`cat /tmp/pkg_upgrades.output | grep 'The following' | awk -F '[ ]' '{print $3}'`
|
||||
if [ "$updates" == "" ]; then
|
||||
# There are no updates
|
||||
# Lets remove any leftover update files
|
||||
if [ -f /tmp/pkg_updates.available ]; then
|
||||
rm /tmp/pkg_updates.available
|
||||
fi
|
||||
else
|
||||
echo $updates > /tmp/pkg_updates.available
|
||||
opnsense_core_update=`cat /tmp/pkg_upgrades.output | grep 'opnsense:' | awk -F '[ ]' '{print $4}'`
|
||||
if [ "$opnsense_core_update" == "" ]; then
|
||||
# There is no update
|
||||
# Lets cleanup leftovers
|
||||
if [ -f /tmp/pkg_core_update.available] ]; then
|
||||
rm /tmp/pkg_core_update.available
|
||||
fi
|
||||
else
|
||||
echo $opnse_core_update > /tmp/pkg_core_update.available
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# There is an issue with the repository
|
||||
# lets let other process know
|
||||
touch /tmp/pkg_repository.error
|
||||
fi
|
||||
else
|
||||
# We have an connection issue and can reach the pkg repository in timely fashion
|
||||
touch /tmp/pkg_connection_issue
|
||||
killall pkg
|
||||
fi
|
||||
else
|
||||
# pkg is already running, quitting
|
||||
fi
|
||||
@ -55,7 +55,7 @@ if($_REQUEST['getupdatestatus']) {
|
||||
$pkg_status = json_decode($json,true);
|
||||
|
||||
if ($pkg_status["updates"]=="0") {
|
||||
echo "Last check at (".$pkg_status["last_check"]."), you where up to date";
|
||||
echo "Last check at (".$pkg_status["last_check"]."), you were up to date";
|
||||
} else {
|
||||
echo "<span class='text-danger'>A total of ".$pkg_status["updates"]." update(s) are available.</span>";
|
||||
}
|
||||
|
||||
@ -1,361 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
$Id$
|
||||
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");
|
||||
require_once("script/load_phalcon.php");
|
||||
|
||||
/* Check for updates on /tmp/pkg_* files, generated by */
|
||||
$file_connection="/tmp/pkg_connection_issue";
|
||||
$file_repository="/tmp/pkg_repository.error";
|
||||
$file_updates="/tmp/pkg_updates.available";
|
||||
$file_newcore_version="/tmp/pkg_core_update.available";
|
||||
$file_last_check="/tmp/pkg_last.check";
|
||||
$update_text="(update in 10 seconds)";
|
||||
|
||||
|
||||
if($_POST['action'] == 'call_this') {
|
||||
/* Setup Shell variables */
|
||||
$shell_output = array();
|
||||
$shell = new Core\Shell();
|
||||
// execute shell command and collect (only valid) info into named array
|
||||
if ($shell->exec("/usr/local/opnsense/scripts/pkg_updates.sh&",false,false,$shell_output) == 0 )
|
||||
{
|
||||
// Aplication done
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if($_REQUEST['getupdatestatus']) {
|
||||
if (file_exists($file_connection)) {
|
||||
/* There is an connection issue, repository can not be reached */
|
||||
$update_text="<div class='text-danger'>Connection error</div><a href='' onclick='checkupdate()'>Click to retry now</a>";
|
||||
} elseif (file_exists($file_repository)) {
|
||||
/* The repository is not corect */
|
||||
$update_text="<div class='text-danger'>Repository error</div><a href='' onclick='checkupdate()'>Click to retry now</a>";
|
||||
} elseif (file_exists($file_updates)) {
|
||||
/* There are updates available */
|
||||
$updates=file_get_contents($file_updates);
|
||||
$update_text="<div class='text-info'>There are <b>".$updates."</b> update(s) available</div><a href='/system_firmware.php'> Click to update </a>";
|
||||
} elseif (file_exists($file_last_check)) {
|
||||
$last_check=file_get_contents($file_last_check);
|
||||
$update_text="<div class='text-info'>No updates found (checked once a day) </div><div class='text-info'>last time on: ".$last_check."</div><a href='' onclick='checkupdate()'>Click to check now</a>" ;
|
||||
} else {
|
||||
$update_text="<div class='text-info'>Daily cron has not yet run</div><a href='' onclick='checkupdate()'>Click here to try now</a>";
|
||||
}
|
||||
echo $update_text;
|
||||
exit;
|
||||
}
|
||||
|
||||
$curcfg = $config['system']['firmware'];
|
||||
|
||||
$filesystems = get_mounted_filesystems();
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
//<![CDATA[
|
||||
jQuery(function() {
|
||||
jQuery("#statePB").css( { width: '<?php echo get_pfstate(true); ?>%' } );
|
||||
jQuery("#mbufPB").css( { width: '<?php echo get_mbuf(true); ?>%' } );
|
||||
jQuery("#cpuPB").css( { width:0 } );
|
||||
jQuery("#memUsagePB").css( { width: '<?php echo mem_usage(); ?>%' } );
|
||||
|
||||
<?PHP $d = 0; ?>
|
||||
<?PHP foreach ($filesystems as $fs): ?>
|
||||
jQuery("#diskUsagePB<?php echo $d++; ?>").css( { width: '<?php echo $fs['percent_used']; ?>%' } );
|
||||
<?PHP endforeach; ?>
|
||||
|
||||
<?php if($showswap == true): ?>
|
||||
jQuery("#swapUsagePB").css( { width: '<?php echo swap_usage(); ?>%' } );
|
||||
<?php endif; ?>
|
||||
<?php if (get_temp() != ""): ?>
|
||||
jQuery("#tempPB").css( { width: '<?php echo get_temp(); ?>%' } );
|
||||
<?php endif; ?>
|
||||
});
|
||||
//]]>
|
||||
</script>
|
||||
|
||||
<table class="table table-striped">
|
||||
<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><?php readfile("/usr/local/etc/version"); ?></strong>
|
||||
(<?php echo php_uname("m"); ?>)
|
||||
<?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; ?>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<?php if(!isset($config['system']['firmware']['disablecheck'])): ?>
|
||||
<tr>
|
||||
<td>
|
||||
Updates
|
||||
</td>
|
||||
<td>
|
||||
<div id='updatestatus'><?php echo $update_text; ?></div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<?php endif; ?>
|
||||
<tr>
|
||||
<td width="25%" class="vncellt"><?=gettext("Platform");?></td>
|
||||
<td width="75%" class="listr">
|
||||
<?=htmlspecialchars($g['platform'] == 'pfSense' ? 'OPNsense' : $g['platform']); /* Platform should not be used as product name */?>
|
||||
<?php if (($g['platform'] == "nanobsd") && (file_exists("/etc/nanosize.txt"))) {
|
||||
echo " (" . htmlspecialchars(trim(file_get_contents("/etc/nanosize.txt"))) . ")";
|
||||
} ?>
|
||||
</td>
|
||||
</tr>
|
||||
<?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 class="progress">
|
||||
<div id="statePB" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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 class="progress">
|
||||
<div id="mbufPB" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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 class="progress">
|
||||
<div id="tempPB" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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 class="progress">
|
||||
<div id="cpuPB" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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 class="progress">
|
||||
<div id="memUsagePB" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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 class="progress">
|
||||
<div id="swapUsagePB" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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 class="progress">
|
||||
<div id="diskUsagePB<?php echo $d; ?>" class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
|
||||
<span class="sr-only"></span>
|
||||
</div>
|
||||
</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"); ?>");
|
||||
}
|
||||
function checkupdate() {
|
||||
jQuery.ajax({
|
||||
type: "POST",
|
||||
url: '/widgets/widgets/system_information.widget.php',
|
||||
data:{action:'call_this'},
|
||||
success:function(html) {
|
||||
alert(html);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
<?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()', 10000); // Update after 10 seconds
|
||||
<?php endif; ?>
|
||||
//]]>
|
||||
</script>
|
||||
Loading…
x
Reference in New Issue
Block a user