diff options
Diffstat (limited to 'usr/local/www/system_firmware_auto.php')
-rwxr-xr-x | usr/local/www/system_firmware_auto.php | 296 |
1 files changed, 0 insertions, 296 deletions
diff --git a/usr/local/www/system_firmware_auto.php b/usr/local/www/system_firmware_auto.php deleted file mode 100755 index e2970fa..0000000 --- a/usr/local/www/system_firmware_auto.php +++ /dev/null @@ -1,296 +0,0 @@ -<?php -/* $Id$ */ -/* - system_firmware_auto.php - Copyright (C) 2005 Scott Ullrich - Copyright (C) 2008 Scott Ullrich <sullrich@gmail.com> - Copyright (C) 2013-2015 Electric Sheep Fencing, LP - - Based originally on system_firmware.php - (C)2003-2004 Manuel Kasper - 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_BUILDER_BINARIES: /usr/bin/tar /usr/bin/nohup /bin/cat /sbin/sha256 - pfSense_MODULE: firmware -*/ - -##|+PRIV -##|*IDENT=page-system-firmware-checkforupdate -##|*NAME=System: Firmware: Check For Update page -##|*DESCR=Allow access to the 'System: Firmware: Check For Update' page. -##|*MATCH=system_firmware_auto.php* -##|-PRIV - -$nocsrf = true; - -require("guiconfig.inc"); -require_once("pfsense-utils.inc"); - -$curcfg = $config['system']['firmware']; - -if (isset($curcfg['alturl']['enable'])) { - $updater_url = "{$config['system']['firmware']['alturl']['firmwareurl']}"; -} else { - $updater_url = $g['update_url']; -} - -if ($_POST['backupbeforeupgrade']) { - touch("/tmp/perform_full_backup.txt"); -} - -$closehead = false; -$pgtitle = array(gettext("Diagnostics"), gettext("Firmware"), gettext("Auto Update")); -include("head.inc"); - -?> - -<meta http-equiv="Content-Type" content="text/html; charset=<?=system_get_language_codeset();?>" /> -<link href="gui.css" rel="stylesheet" type="text/css" /> -</head> - -<body link="#0000CC" vlink="#0000CC" alink="#0000CC"> - -<?php include("fbegin.inc"); ?> - -<form action="system_firmware_auto.php" method="post"> -<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="firmware auto-check"> - <tr> - <td> - <?php - $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); - ?> - </td> - </tr> - <tr> - <td class="tabcont"> - <table width="100%" border="0" cellpadding="6" cellspacing="0" summary="outer"> - <tr> - <td class="tabcont"> - <table width="100%" border="0" cellpadding="6" cellspacing="0" summary="inner"> - <tr> - <td align="center"> - <table style="height:15;colspacing:0" width="420" border="0" cellpadding="0" cellspacing="0" summary="images"> - <tr> - <td style="background:url('./themes/<?=$g['theme'];?>/images/misc/bar_left.gif')" height="15" width="5"> </td> - <td> - <table id="progholder" style="height:15;colspacing:0" width="410" border="0" cellpadding="0" cellspacing="0" summary=""> - <tr> - <td style="background:url('./themes/<?=$g['theme'];?>/images/misc/bar_gray.gif')" valign="top" align="left"> - <img src="./themes/<?=$g['theme'];?>/images/misc/bar_blue.gif" width="0" height="15" name="progressbar" id="progressbar" alt="" /> - </td> - </tr> - </table> - </td> - <td style="background:url('./themes/<?=$g['theme'];?>/images/misc/bar_right.gif')" height="15" width="5"></td> - </tr> - </table> - <br /> - <script type="text/javascript"> - //<![CDATA[ - window.onload=function() { - document.getElementById("status").wrap='hard'; - document.getElementById("output").wrap='hard'; - } - //]]> - </script> - <!-- status box --> - <textarea cols="90" rows="1" name="status" id="status"><?=gettext("Beginning firmware upgrade"); ?>.</textarea> - <br /> - <!-- command output box --> - <textarea cols="90" rows="25" name="output" id="output"></textarea> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> -</table> -</form> - -<?php include("fend.inc"); ?> - -<?php - -update_status(gettext("Downloading current 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"))); -} - -@unlink("/tmp/{$g['product_name']}_version"); -download_file_with_progress_bar("{$updater_url}/version{$nanosize}", "/tmp/{$g['product_name']}_version"); -$latest_version = str_replace("\n", "", @file_get_contents("/tmp/{$g['product_name']}_version")); -if (!$latest_version) { - update_output_window(gettext("Unable to check for updates.")); - require("fend.inc"); - exit; -} else { - $current_installed_buildtime = trim(file_get_contents("/etc/version.buildtime")); - $latest_version = trim(@file_get_contents("/tmp/{$g['product_name']}_version")); - $latest_version_pfsense = strtotime($latest_version); - if (!$latest_version) { - update_output_window(gettext("Unable to check for updates.")); - require("fend.inc"); - exit; - } else { - if (pfs_version_compare($current_installed_buildtime, $g['product_version'], $latest_version) == -1) { - update_status(gettext("Downloading updates") . "..."); - conf_mount_rw(); - if ($g['platform'] == "nanobsd") { - $update_filename = "latest{$nanosize}.img.gz"; - } else { - $update_filename = "latest.tgz"; - } - $status = download_file_with_progress_bar("{$updater_url}/{$update_filename}", "{$g['upload_path']}/latest.tgz", "read_body_firmware"); - $status = download_file_with_progress_bar("{$updater_url}/{$update_filename}.sha256", "{$g['upload_path']}/latest.tgz.sha256"); - conf_mount_ro(); - update_output_window("{$g['product_name']} " . gettext("download complete.")); - } else { - update_output_window(gettext("You are on the latest version.")); - require("fend.inc"); - exit; - } - } -} - -/* launch external upgrade helper */ -$external_upgrade_helper_text = "/etc/rc.firmware "; - -if ($g['platform'] == "nanobsd") { - $external_upgrade_helper_text .= "pfSenseNanoBSDupgrade "; -} else { - $external_upgrade_helper_text .= "pfSenseupgrade "; -} - -$external_upgrade_helper_text .= "{$g['upload_path']}/latest.tgz"; - -$downloaded_latest_tgz_sha256 = str_replace("\n", "", `/sbin/sha256 -q {$g['upload_path']}/latest.tgz`); -$upgrade_latest_tgz_sha256 = str_replace("\n", "", `/bin/cat {$g['upload_path']}/latest.tgz.sha256 | awk '{ print $4 }'`); - -$sigchk = 0; - -if (!isset($curcfg['alturl']['enable'])) { - $sigchk = verify_digital_signature("{$g['upload_path']}/latest.tgz"); -} - -$exitstatus = 0; -if ($sigchk == 1) { - $sig_warning = gettext("The digital signature on this image is invalid."); - $exitstatus = 1; -} else if ($sigchk == 2) { - $sig_warning = gettext("This image is not digitally signed."); - if (!isset($config['system']['firmware']['allowinvalidsig'])) { - $exitstatus = 1; - } -} else if (($sigchk >= 3)) { - $sig_warning = gettext("There has been an error verifying the signature on this image."); - $exitstatus = 1; -} - -if ($exitstatus) { - update_status($sig_warning); - update_output_window(gettext("Update cannot continue. You can disable this check on the Updater Settings tab.")); - require("fend.inc"); - exit; -} else if ($sigchk == 2) { - update_status("Upgrade in progress..."); - update_output_window("\n" . gettext("Upgrade Image does not contain a signature but the system has been configured to allow unsigned images. One moment please...") . "\n"); -} - -if (!verify_gzip_file("{$g['upload_path']}/latest.tgz")) { - update_status(gettext("The image file is corrupt.")); - update_output_window(gettext("Update cannot continue")); - if (file_exists("{$g['upload_path']}/latest.tgz")) { - conf_mount_rw(); - unlink("{$g['upload_path']}/latest.tgz"); - conf_mount_ro(); - } - require("fend.inc"); - exit; -} - -if ($downloaded_latest_tgz_sha256 <> $upgrade_latest_tgz_sha256) { - update_status(gettext("Downloading complete but sha256 does not match.")); - update_output_window(gettext("Auto upgrade aborted.") . " \n\n" . gettext("Downloaded SHA256") . ": " . $downloaded_latest_tgz_sha256 . "\n\n" . gettext("Needed SHA256") . ": " . $upgrade_latest_tgz_sha256); -} else { - update_output_window($g['product_name'] . " " . gettext("is now upgrading.") . "\\n\\n" . gettext("The firewall will reboot once the operation is completed.")); - echo "\n<script type=\"text/javascript\">"; - echo "\n//<![CDATA["; - echo "\ndocument.progressbar.style.visibility='hidden';"; - echo "\n//]]>"; - echo "\n</script>"; - mwexec_bg($external_upgrade_helper_text); -} - -/* - Helper functions -*/ - -function read_body_firmware($ch, $string) { - global $g, $fout, $file_size, $downloaded, $counter, $version, $latest_version; - $length = strlen($string); - $downloaded += intval($length); - $downloadProgress = round(100 * (1 - $downloaded / $file_size), 0); - $downloadProgress = 100 - $downloadProgress; - $a = $file_size; - $b = $downloaded; - $c = $downloadProgress; - $text = " " . gettext("Auto Update Download Status") . "\\n"; - $text .= "----------------------------------------------------\\n"; - $text .= " " . gettext("Current Version") . " : {$g['product_version']}\\n"; - $text .= " " . gettext("Latest Version") . " : {$latest_version}\\n"; - $text .= " " . gettext("File size") . " : {$a}\\n"; - $text .= " " . gettext("Downloaded") . " : {$b}\\n"; - $text .= " " . gettext("Percent") . " : {$c}%\\n"; - $text .= "----------------------------------------------------\\n"; - $counter++; - if ($counter > 150) { - update_output_window($text); - update_progress_bar($downloadProgress); - $counter = 0; - } - fwrite($fout, $string); - return $length; -} - -?> - -</body> -</html> |