diff options
author | Renato Botelho <renato@netgate.com> | 2015-08-26 15:12:02 -0300 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2015-08-26 15:12:02 -0300 |
commit | 03b19a93f4d8d870507ee96121cee4acd748dd2a (patch) | |
tree | 71a34e9e7e73d13de21cb4ad831799fb10c30df4 /src/usr/local/www/system_firmware_check.php | |
parent | 7f410a121522c5d0e2660256ae50c1fde1df3645 (diff) | |
parent | 30ce58ac1ea27b758d5112cb5a3b190c9760f010 (diff) | |
download | pfsense-03b19a93f4d8d870507ee96121cee4acd748dd2a.zip pfsense-03b19a93f4d8d870507ee96121cee4acd748dd2a.tar.gz |
Merge branch 'master' into bootstrap
Diffstat (limited to 'src/usr/local/www/system_firmware_check.php')
-rw-r--r-- | src/usr/local/www/system_firmware_check.php | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/usr/local/www/system_firmware_check.php b/src/usr/local/www/system_firmware_check.php new file mode 100644 index 0000000..c2cc9a1 --- /dev/null +++ b/src/usr/local/www/system_firmware_check.php @@ -0,0 +1,181 @@ +<?php +/* $Id$ */ +/* + system_firmware_check.php + Copyright (C) 2008 Scott Ullrich <sullrich@gmail.com> + Copyright (C) 2013-2015 Electric Sheep Fencing, LP + All rights reserved. + + originally part of m0n0wall (http://m0n0.ch/wall) + Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. + 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. +*/ +/* + pfSense_MODULE: firmware +*/ + +##|+PRIV +##|*IDENT=page-system-firmware-autoupdate +##|*NAME=System: Firmware: Auto Update page +##|*DESCR=Allow access to the 'System: Firmware: Auto Update' page. +##|*MATCH=system_firmware_check.php* +##|-PRIV + +$d_isfwfile = 1; +require("guiconfig.inc"); +require_once("pfsense-utils.inc"); + +$curcfg = $config['system']['firmware']; +$pgtitle = array(gettext("System"), gettext("Firmware"), gettext("Auto Update")); +include("head.inc"); + +$tab_array = array(); +$tab_array[] = array(gettext("Manual Update"), false, "system_firmware.php"); +$tab_array[] = array(gettext("Auto Update"), true, "system_firmware_check.php"); +$tab_array[] = array(gettext("Updater Settings"), false, "system_firmware_settings.php"); +if($g['hidedownloadbackup'] == false) + $tab_array[] = array(gettext("Restore Full Backup"), false, "system_firmware_restorefullbackup.php"); +display_top_tabs($tab_array); +?> + +<form action="system_firmware_auto.php" method="post"> + <div id="statusheading" class="panel panel-default"> + <div class="panel-heading"><h2 class="panel-title"><?=gettext('Update progress')?></h2></div> + <div class="panel-body" name="output" id="output"></div> + </div> + + <div id="backupdiv" style="visibility:hidden"> + <?php if ($g['hidebackupbeforeupgrade'] === false): ?> + <br /><input type="checkbox" name="backupbeforeupgrade" id="backupbeforeupgrade" /><?=gettext("Perform full backup prior to upgrade")?> + <?php endif; ?> + </div> + <br /> + <input id='invokeupgrade' class="btn btn-warning" style='visibility:hidden' type="submit" value="<?=gettext("Invoke Auto Upgrade"); ?>" /> + +<?php + +/* Define necessary variables. */ +if (isset($curcfg['alturl']['enable'])) { + $updater_url = "{$config['system']['firmware']['alturl']['firmwareurl']}"; +} else { + $updater_url = $g['update_url']; +} +$needs_system_upgrade = false; +$static_text .= gettext("Downloading new version information..."); + +$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"))); +} + +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")); +} +$static_text .= gettext("done") . "\\n"; +if (!$remote_version) { + $static_text .= gettext("Unable to check for updates.") . "\\n"; + if (isset($curcfg['alturl']['enable'])) { + $static_text .= gettext("Could not contact custom update server.") . "\\n"; + } else { + $static_text .= sprintf(gettext('Could not contact %1$s update server %2$s%3$s'), $g['product_name'], $updater_url, "\\n"); + } +} else { + $static_text .= gettext("Obtaining current version information..."); + panel_text($static_text); + + $current_installed_buildtime = trim(file_get_contents("/etc/version.buildtime")); + + $static_text .= "done<br />"; + panel_text($static_text); + + if (pfs_version_compare($current_installed_buildtime, $g['product_version'], $remote_version) == -1) { + $needs_system_upgrade = true; + } else { + $static_text .= "<br />" . gettext("You are on the latest version.") . "<br />"; + panel_text($static_text); + panel_heading_class('success'); + } +} + +update_output_window($static_text); +if ($needs_system_upgrade == false) { + print("</form>"); + require("foot.inc"); + + exit; +} +?> +<script> + events.push(function(){ + $('#invokeupgrade').css('visibility','visible'); + $('#backupdiv').css('visibility','visible'); + }); +</script> +<?php + +$txt = gettext("A new version is now available") . "<br />"; +$txt .= gettext("Current version") .": ". $current_installed_version . "<br />"; +if ($g['platform'] == "nanobsd") { + $txt .= " " . gettext("NanoBSD Size") . " : " . trim(file_get_contents("/etc/nanosize.txt")) . "<br />"; +} +$txt .= " " . gettext("Built On") .": ". $current_installed_buildtime . "<br />"; +$txt .= " " . gettext("New version") .": ". htmlspecialchars($remote_version, ENT_QUOTES | ENT_HTML401). "<br /><br />"; +$txt .= " " . gettext("Update source") .": ". $updater_url . "<br />"; +panel_text($txt); +panel_heading_class('info'); +?> + +</form> +<?php + +// Update the class of the message panel so that it's color changes +// Use danger, success, info, warning, default etc +function panel_heading_class($newclass = 'default') { +?> + <script> + events.push(function(){ + $('#statusheading').removeClass().addClass('panel panel-' + '<?=$newclass?>'); + }); + </script> +<?php +} + +// Update the text in the panel-heading +function panel_text($text) { +?> + <script> + events.push(function(){ + $('#output').html('<?=$text?>'); + }); + </script> +<?php +} + +include("foot.inc"); |