Project

General

Profile

Download (7.03 KB) Statistics
| Branch: | Tag: | Revision:
1 3dc6bb60 Scott Ullrich
<?php
2
/* $Id$ */
3
/*
4 da55e467 Scott Ullrich
	system_firmware.php
5 21602de0 Scott Ullrich
	Copyright (C) 2008 Scott Ullrich <sullrich@gmail.com>
6
	All rights reserved.
7 939e4a91 jim-p
8 21602de0 Scott Ullrich
	originally part of m0n0wall (http://m0n0.ch/wall)
9 da55e467 Scott Ullrich
	Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
10
	All rights reserved.
11
12
	Redistribution and use in source and binary forms, with or without
13
	modification, are permitted provided that the following conditions are met:
14
15
	1. Redistributions of source code must retain the above copyright notice,
16
	   this list of conditions and the following disclaimer.
17 3dc6bb60 Scott Ullrich
18 da55e467 Scott Ullrich
	2. Redistributions in binary form must reproduce the above copyright
19
	   notice, this list of conditions and the following disclaimer in the
20
	   documentation and/or other materials provided with the distribution.
21 9b7d7aa9 Scott Ullrich
22 da55e467 Scott Ullrich
	THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
23
	INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24
	AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
	AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
26
	OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27
	SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28
	INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29
	CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30
	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
	POSSIBILITY OF SUCH DAMAGE.
32
*/
33 1d333258 Scott Ullrich
/*
34
	pfSense_MODULE:	firmware
35
*/
36 da55e467 Scott Ullrich
37 6b07c15a Matthew Grooms
##|+PRIV
38
##|*IDENT=page-system-firmware-autoupdate
39
##|*NAME=System: Firmware: Auto Update page
40
##|*DESCR=Allow access to the 'System: Firmware: Auto Update' page.
41
##|*MATCH=system_firmware_check.php*
42
##|-PRIV
43
44 da55e467 Scott Ullrich
$d_isfwfile = 1;
45
require("guiconfig.inc");
46 773c99bc Ermal
require_once("pfsense-utils.inc");
47 3dc6bb60 Scott Ullrich
48 da55e467 Scott Ullrich
$curcfg = $config['system']['firmware'];
49 a53e451b Carlos Eduardo Ramos
$pgtitle=array(gettext("System"), gettext("Firmware"), gettext("Auto Update"));
50 52380979 Scott Ullrich
include("head.inc");
51
52 3dc6bb60 Scott Ullrich
?>
53 da55e467 Scott Ullrich
54 74f446e8 Bill Marquette
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
55 da55e467 Scott Ullrich
56 74f446e8 Bill Marquette
<?php include("fbegin.inc"); ?>
57 da55e467 Scott Ullrich
58
<form action="system_firmware_auto.php" method="post">
59 e8df541c Colin Fleming
<table width="100%" border="0" cellpadding="0" cellspacing="0" summary="firmware check">
60 da55e467 Scott Ullrich
	<tr>
61
		<td>
62 4b805dbc Renato Botelho
		<?php
63
			$tab_array = array();
64
			$tab_array[] = array(gettext("Manual Update"), false, "system_firmware.php");
65
			$tab_array[] = array(gettext("Auto Update"), true, "system_firmware_check.php");
66
			$tab_array[] = array(gettext("Updater Settings"), false, "system_firmware_settings.php");
67
			if($g['hidedownloadbackup'] == false)
68
				$tab_array[] = array(gettext("Restore Full Backup"), false, "system_firmware_restorefullbackup.php");
69
			display_top_tabs($tab_array);
70
		?>
71 da55e467 Scott Ullrich
		</td>
72
	</tr>
73
	<tr>
74 4b805dbc Renato Botelho
		<td class="tabcont">
75 e8df541c Colin Fleming
			<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="">
76 4b805dbc Renato Botelho
				<tr>
77 e8df541c Colin Fleming
					<td align="center">
78 4b805dbc Renato Botelho
						<!-- progress bar -->
79 e8df541c Colin Fleming
						<table style="height:15;colspacing:0" width="420" border="0" cellpadding="0" cellspacing="0" summary="images">
80 da55e467 Scott Ullrich
81
							<tr>
82 09f26fb7 Renato Botelho
								<td style="background:url('./themes/<?=$g['theme'];?>/images/misc/bar_left.gif')" height="15" width="5"></td>
83 da55e467 Scott Ullrich
								<td>
84 e8df541c Colin Fleming
									<table id="progholder" style="height:15;colspacing:0" width="410" border="0" cellpadding="0" cellspacing="0" summary="">
85 09f26fb7 Renato Botelho
										<tr><td style="background:url('./themes/<?=$g['theme'];?>/images/misc/bar_gray.gif')" valign="top" align="left">
86
										<img src="./themes/<?=$g['theme'];?>/images/misc/bar_blue.gif" width="0" height="15" name="progressbar" id="progressbar" alt="" />
87 e8df541c Colin Fleming
										</td></tr>
88 4b805dbc Renato Botelho
									</table>
89
								</td>
90 09f26fb7 Renato Botelho
								<td style="background:url('./themes/<?=$g['theme'];?>/images/misc/bar_right.gif')" height="15" width="5"></td>
91 4b805dbc Renato Botelho
							</tr>
92
						</table>
93 e8df541c Colin Fleming
						<br />
94 4b805dbc Renato Botelho
						<!-- command output box -->
95 e8df541c Colin Fleming
						<textarea style="border:1;bordercolordark:#000000;bordercolorlight:#000000" cols="90" rows="9" name="output" id="output" wrap="hard"></textarea>
96
						<div id="backupdiv" style="visibility:hidden">
97 9beebb5e Renato Botelho
							<?php if ($g['hidebackupbeforeupgrade'] === false): ?>
98 e8df541c Colin Fleming
							<br/><input type="checkbox" name="backupbeforeupgrade" id="backupbeforeupgrade" /><?=gettext("Perform full backup prior to upgrade");?>
99 9beebb5e Renato Botelho
							<?php endif; ?>
100 4b805dbc Renato Botelho
						</div>
101 e8df541c Colin Fleming
						<input id='invokeupgrade' style='visibility:hidden' type="submit" value="<?=gettext("Invoke Auto Upgrade"); ?>" />
102 4b805dbc Renato Botelho
					</td>
103
				</tr>
104
			</table>
105
		</td>
106 da55e467 Scott Ullrich
	</tr>
107
</table>
108
109
<p>
110
111 0935ad4d Holger Bauer
<?php
112 da55e467 Scott Ullrich
113
/* Define necessary variables. */
114
if(isset($curcfg['alturl']['enable']))
115
	$updater_url = "{$config['system']['firmware']['alturl']['firmwareurl']}";
116 939e4a91 jim-p
else
117 ef794b01 Scott Ullrich
	$updater_url = $g['update_url'];
118 da55e467 Scott Ullrich
$needs_system_upgrade = false;
119 a53e451b Carlos Eduardo Ramos
$static_text .= gettext("Downloading new version information...");
120 414053da jim-p
121
$nanosize = "";
122
if ($g['platform'] == "nanobsd") {
123 0d7715eb Renato Botelho
	if (file_exists("/etc/nano_use_vga.txt"))
124
		$nanosize = "-nanobsd-vga-";
125
	else
126
		$nanosize = "-nanobsd-";
127
128
	$nanosize .= strtolower(trim(file_get_contents("/etc/nanosize.txt")));
129 414053da jim-p
}
130
131 4ed69f33 jim-p
if(download_file_with_progress_bar("{$updater_url}/version{$nanosize}", "/tmp/{$g['product_name']}_version", 'read_body', 5, 5) === true)
132 d164643a jim-p
	$remote_version = trim(@file_get_contents("/tmp/{$g['product_name']}_version"));
133 a53e451b Carlos Eduardo Ramos
$static_text .= gettext("done") . "\\n";
134 a76c1c45 jim-p
if (!$remote_version) {
135 a53e451b Carlos Eduardo Ramos
	$static_text .= gettext("Unable to check for updates.") . "\\n";
136 93b8266e jim-p
	if(isset($curcfg['alturl']['enable']))
137 a53e451b Carlos Eduardo Ramos
		$static_text .= gettext("Could not contact custom update server.") . "\\n";
138 93b8266e jim-p
	else
139 ddc55e12 Erik Fonnesbeck
		$static_text .= sprintf(gettext('Could not contact %1$s update server %2$s%3$s'), $g['product_name'], $updater_url, "\\n");
140 93b8266e jim-p
} else {
141 a53e451b Carlos Eduardo Ramos
	$static_text .= gettext("Obtaining current version information...");
142 773c99bc Ermal
	update_output_window($static_text);
143 a76c1c45 jim-p
144
	$current_installed_buildtime = trim(file_get_contents("/etc/version.buildtime"));
145
	$current_installed_version = trim(file_get_contents("/etc/version"));
146
147
	$static_text .= "done\\n";
148 773c99bc Ermal
	update_output_window($static_text);
149 a76c1c45 jim-p
150
	if (pfs_version_compare($current_installed_buildtime, $current_installed_version, $remote_version) == -1) {
151 93b8266e jim-p
		$needs_system_upgrade = true;
152 939e4a91 jim-p
	} else {
153 a53e451b Carlos Eduardo Ramos
		$static_text .= "\\n" . gettext("You are on the latest version.") . "\\n";
154 939e4a91 jim-p
	}
155 773c99bc Ermal
}
156 a76c1c45 jim-p
157 773c99bc Ermal
update_output_window($static_text);
158
if ($needs_system_upgrade == false) {
159 e8df541c Colin Fleming
	echo "</p>";
160
	echo "</form>";
161 773c99bc Ermal
	require("fend.inc");
162 e8df541c Colin Fleming
	echo "</body>";
163
	echo "</html>";
164 773c99bc Ermal
	exit;
165 1f6b9deb Colin Smith
}
166 da55e467 Scott Ullrich
167 e8df541c Colin Fleming
echo "\n<script type=\"text/javascript\">\n";
168
echo "//<![CDATA[\n";
169
echo "jQuery('#invokeupgrade').css('visibility','visible');\n";
170
echo "//]]>\n";
171
echo "</script>\n";
172
echo "\n<script type=\"text/javascript\">\n";
173
echo "//<![CDATA[\n";
174
echo "jQuery('#backupdiv').css('visibility','visible');\n";
175
echo "//]]>\n";
176
echo "</script>\n";
177 a30afe0e Scott Ullrich
178 a53e451b Carlos Eduardo Ramos
$txt  = gettext("A new version is now available") . "\\n\\n";
179 79eaddf4 Renato Botelho
$txt .= gettext("Current version") .": ". $current_installed_version . "\\n";
180 414053da jim-p
if ($g['platform'] == "nanobsd") {
181
	$txt .= "  " . gettext("NanoBSD Size") . " : " . trim(file_get_contents("/etc/nanosize.txt")) . "\\n";
182
}
183 79eaddf4 Renato Botelho
$txt .= "       " . gettext("Built On") .": ".  $current_installed_buildtime . "\\n";
184 acbab51a Renato Botelho
$txt .= "    " . gettext("New version") .": ".  htmlspecialchars($remote_version, ENT_QUOTES | ENT_HTML401). "\\n\\n";
185 79eaddf4 Renato Botelho
$txt .= "  " . gettext("Update source") .": ".  $updater_url . "\\n";
186 773c99bc Ermal
update_output_window($txt);
187
?>
188 e8df541c Colin Fleming
</p>
189 da55e467 Scott Ullrich
</form>
190
<?php include("fend.inc"); ?>
191
</body>
192 22abaf42 Bill Marquette
</html>