summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xcontrib/package/luci-addons/dist/sbin/luci-flash4
-rw-r--r--i18n/english/luasrc/i18n/admin-core.en.lua2
-rw-r--r--i18n/english/luasrc/i18n/admin-core.en.xml2
-rw-r--r--i18n/german/luasrc/i18n/admin-core.de.lua2
-rw-r--r--i18n/german/luasrc/i18n/admin-core.de.xml2
-rw-r--r--libs/sys/luasrc/sys.lua26
-rw-r--r--modules/admin-full/luasrc/controller/admin/system.lua9
-rw-r--r--modules/admin-full/luasrc/view/admin_system/upgrade.htm18
-rw-r--r--modules/admin-mini/luasrc/controller/mini/system.lua9
-rw-r--r--modules/admin-mini/luasrc/view/mini/upgrade.htm18
10 files changed, 47 insertions, 45 deletions
diff --git a/contrib/package/luci-addons/dist/sbin/luci-flash b/contrib/package/luci-addons/dist/sbin/luci-flash
index 79bc834b45..07434b5073 100755
--- a/contrib/package/luci-addons/dist/sbin/luci-flash
+++ b/contrib/package/luci-addons/dist/sbin/luci-flash
@@ -85,9 +85,5 @@ done
[ -n "$sysupgrade_init_conffiles" ] && do_save_conffiles
run_hooks "" $sysupgrade_pre_upgrade
-ask_bool() {
- false
-}
-
v "Switching to ramdisk..."
run_ramfs '. /etc/functions.sh; include /lib/upgrade; do_upgrade'
diff --git a/i18n/english/luasrc/i18n/admin-core.en.lua b/i18n/english/luasrc/i18n/admin-core.en.lua
index 88d6249c6a..c260b59b4b 100644
--- a/i18n/english/luasrc/i18n/admin-core.en.lua
+++ b/i18n/english/luasrc/i18n/admin-core.en.lua
@@ -70,7 +70,7 @@ a_s_flash_flashed = 'Firmware successfully flashed. Rebooting device...'
a_s_flash_flasherr = 'Failed to flash'
a_s_flash_fwimage = 'Firmwareimage'
a_s_flash_received = 'Image received. About to start flashing process. DO NOT POWER OFF THE DEVICE!'
-a_s_flash_inprogress = 'Writing firmware...'
+a_s_flash_inprogress = 'Now writing firmware. Depending on your hardware this can take up to 20 minutes or more. Please check your device from time to time to see whether the writing process has completed.'
a_s_flash_fwupgrade = 'Flash Firmware'
a_s_flash_keepcfg = 'Keep configuration files'
a_s_flash_notimplemented = 'Sorry, this function is not (yet) available for your platform.'
diff --git a/i18n/english/luasrc/i18n/admin-core.en.xml b/i18n/english/luasrc/i18n/admin-core.en.xml
index c161a948cc..322185d97b 100644
--- a/i18n/english/luasrc/i18n/admin-core.en.xml
+++ b/i18n/english/luasrc/i18n/admin-core.en.xml
@@ -74,7 +74,7 @@
<i18n:msg xml:id="a_s_flash_flasherr">Failed to flash</i18n:msg>
<i18n:msg xml:id="a_s_flash_fwimage">Firmwareimage</i18n:msg>
<i18n:msg xml:id="a_s_flash_received">Image received. About to start flashing process. DO NOT POWER OFF THE DEVICE!</i18n:msg>
-<i18n:msg xml:id="a_s_flash_inprogress">Writing firmware...</i18n:msg>
+<i18n:msg xml:id="a_s_flash_inprogress">Now writing firmware. Depending on your hardware this can take up to 20 minutes or more. Please check your device from time to time to see whether the writing process has completed.</i18n:msg>
<i18n:msg xml:id="a_s_flash_fwupgrade">Flash Firmware</i18n:msg>
<i18n:msg xml:id="a_s_flash_keepcfg">Keep configuration files</i18n:msg>
<i18n:msg xml:id="a_s_flash_notimplemented">Sorry, this function is not (yet) available for your platform.</i18n:msg>
diff --git a/i18n/german/luasrc/i18n/admin-core.de.lua b/i18n/german/luasrc/i18n/admin-core.de.lua
index 30258fbffe..5221b9a390 100644
--- a/i18n/german/luasrc/i18n/admin-core.de.lua
+++ b/i18n/german/luasrc/i18n/admin-core.de.lua
@@ -40,7 +40,7 @@ a_s_flash_flashed = 'Flashvorgang erfolgreich. Router startet neu...'
a_s_flash_flasherr = 'Flashvorgang fehlgeschlagen'
a_s_flash_fwimage = 'Firmwareimage'
a_s_flash_received = 'Abbild empfangen. Starte Flashvorgang. SCHALTEN SIE DAS GERÄT NICHT AUS!'
-a_s_flash_inprogress = 'Schreibe Firmware...'
+a_s_flash_inprogress = 'Die Firmware wird nun geschrieben. Abhängig von der Hardware kann dieser Prozess bis zu 20 Minuten und länger dauern. Bitte prüfen sie das Gerät von Zeit zu Zeit, um zu sehen, ob der Schreibvorgang beendet ist.'
a_s_flash_fwupgrade = 'Firmware aktualisieren'
a_s_flash_keepcfg = 'Konfigurationsdateien übernehmen'
a_s_flash_notimplemented = 'Diese Funktion steht leider (noch) nicht zur Verfügung.'
diff --git a/i18n/german/luasrc/i18n/admin-core.de.xml b/i18n/german/luasrc/i18n/admin-core.de.xml
index 3a821c3fdb..f963d03597 100644
--- a/i18n/german/luasrc/i18n/admin-core.de.xml
+++ b/i18n/german/luasrc/i18n/admin-core.de.xml
@@ -44,7 +44,7 @@
<i18n:msg xml:id="a_s_flash_flasherr">Flashvorgang fehlgeschlagen</i18n:msg>
<i18n:msg xml:id="a_s_flash_fwimage">Firmwareimage</i18n:msg>
<i18n:msg xml:id="a_s_flash_received">Abbild empfangen. Starte Flashvorgang. SCHALTEN SIE DAS GERÄT NICHT AUS!</i18n:msg>
-<i18n:msg xml:id="a_s_flash_inprogress">Schreibe Firmware...</i18n:msg>
+<i18n:msg xml:id="a_s_flash_inprogress">Die Firmware wird nun geschrieben. Abhängig von der Hardware kann dieser Prozess bis zu 20 Minuten und länger dauern. Bitte prüfen sie das Gerät von Zeit zu Zeit, um zu sehen, ob der Schreibvorgang beendet ist.</i18n:msg>
<i18n:msg xml:id="a_s_flash_fwupgrade">Firmware aktualisieren</i18n:msg>
<i18n:msg xml:id="a_s_flash_keepcfg">Konfigurationsdateien übernehmen</i18n:msg>
<i18n:msg xml:id="a_s_flash_notimplemented">Diese Funktion steht leider (noch) nicht zur Verfügung.</i18n:msg>
diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua
index e27e1c4e8a..9b68a25e6f 100644
--- a/libs/sys/luasrc/sys.lua
+++ b/libs/sys/luasrc/sys.lua
@@ -60,15 +60,35 @@ exec = luci.util.exec
--- Invoke the luci-flash executable to write an image to the flash memory.
-- @param image Local path or URL to image file
-- @param kpattern Pattern of files to keep over flash process
--- @return Return value of os.execute()
+-- @return boolean indicating status
+-- @return error message if any
function flash(image, kpattern)
local cmd = "luci-flash "
if kpattern then
cmd = cmd .. "-k '" .. kpattern:gsub("'", "") .. "' "
end
- cmd = cmd .. "'" .. image:gsub("'", "") .. "' >/dev/null 2>&1"
+ cmd = cmd .. "'" .. image:gsub("'", "") .. "' 2>/dev/null"
- return os.execute(cmd)
+ local fp = io.popen(cmd)
+ local line = fp:read()
+
+ if line == "Invalid image type" then
+ fp:close()
+ return false, line
+ else
+ line = fp:read()
+ if line == "Performing system upgrade" then
+ return true
+ end
+
+ line = fp:read()
+ if line == "Performing system upgrade" then
+ return true
+ end
+
+ fp:close()
+ return false, line
+ end
end
--- Retrieve information about currently mounted file systems.
diff --git a/modules/admin-full/luasrc/controller/admin/system.lua b/modules/admin-full/luasrc/controller/admin/system.lua
index 5d64336e03..55087a0177 100644
--- a/modules/admin-full/luasrc/controller/admin/system.lua
+++ b/modules/admin-full/luasrc/controller/admin/system.lua
@@ -182,7 +182,7 @@ end
function action_upgrade()
require("luci.model.uci")
- local ret
+ local ret, err
local plat = luci.fs.mtime("/lib/upgrade/platform.sh")
local tmpfile = "/tmp/firmware.img"
local broadcom = os.execute('grep brcm_ /lib/upgrade/platform.sh >/dev/null 2>&1') == 0
@@ -208,12 +208,11 @@ function action_upgrade()
local keepcfg = keep_avail and luci.http.formvalue("keepcfg")
if plat and fname then
- ret = function()
- return luci.sys.flash(tmpfile, keepcfg and _keep_pattern())
- end
+ ret, err = luci.sys.flash(tmpfile, keepcfg and _keep_pattern())
end
- luci.template.render("admin_system/upgrade", {sysupgrade=plat, ret=ret, keep_avail=keep_avail})
+ luci.template.render("admin_system/upgrade", {sysupgrade=plat,
+ ret=ret, err=err, keep_avail=keep_avail})
end
function _keep_pattern()
diff --git a/modules/admin-full/luasrc/view/admin_system/upgrade.htm b/modules/admin-full/luasrc/view/admin_system/upgrade.htm
index a3d97d6497..40f3ec9844 100644
--- a/modules/admin-full/luasrc/view/admin_system/upgrade.htm
+++ b/modules/admin-full/luasrc/view/admin_system/upgrade.htm
@@ -17,7 +17,7 @@ $Id$
<h2><%:a_s_flash%></h2>
<p><%:a_s_flash_upgrade1%></p>
<br />
-<% if sysupgrade and not ret then %>
+<% if sysupgrade and ret == nil then %>
<form method="post" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
<div class="left"><%:a_s_flash_fwimage%>:</div>
<div>
@@ -33,20 +33,14 @@ $Id$
<input type="submit" value="<%:a_s_flash_fwupgrade%>" />
</div>
</form>
-<% elseif ret then %>
- <p><%:a_s_flash_received%></p>
- <p><%:a_s_flash_inprogress%></p>
-
-<!-- <%=string.rep(" ", 2048)%> -->
- <% %>
- <% local ret = ret()
- if ret == 0 then %>
-<div class="ok"><%:a_s_flash_flashed%></div>
+<% elseif ret ~= nil then %>
+ <% if ret then %>
+<p><%:a_s_flash_received%></p>
+<p><%:a_s_flash_inprogress%></p>
<% else %>
-<div class="error"><%:a_s_flash_flasherr%>! (<%:code%> <%=ret%>)</div>
+<div class="error"><%:a_s_flash_flasherr%>! (<%=err%>)</div>
<% end %>
<% else %>
<div class="error"><%:a_s_flash_notimplemented%></div>
<% end %>
<%+footer%>
-<% if ret == 0 then luci.sys.reboot() end %>
diff --git a/modules/admin-mini/luasrc/controller/mini/system.lua b/modules/admin-mini/luasrc/controller/mini/system.lua
index 6d16ef8650..d68283cc62 100644
--- a/modules/admin-mini/luasrc/controller/mini/system.lua
+++ b/modules/admin-mini/luasrc/controller/mini/system.lua
@@ -79,7 +79,7 @@ end
function action_upgrade()
require("luci.model.uci")
- local ret = nil
+ local ret, err
local plat = luci.fs.mtime("/lib/upgrade/platform.sh")
local tmpfile = "/tmp/firmware.img"
local broadcom = os.execute('grep brcm_ /lib/upgrade/platform.sh >/dev/null 2>&1') == 0
@@ -105,12 +105,11 @@ function action_upgrade()
local keepcfg = keep_avail and luci.http.formvalue("keepcfg")
if plat and fname then
- ret = function()
- return luci.sys.flash(tmpfile, keepcfg and _keep_pattern())
- end
+ ret, err = luci.sys.flash(tmpfile, keepcfg and _keep_pattern())
end
- luci.template.render("mini/upgrade", {sysupgrade=plat, ret=ret, keep_avail=keep_avail})
+ luci.template.render("admin_system/upgrade", {sysupgrade=plat,
+ ret=ret, err=err, keep_avail=keep_avail})
end
function _keep_pattern()
diff --git a/modules/admin-mini/luasrc/view/mini/upgrade.htm b/modules/admin-mini/luasrc/view/mini/upgrade.htm
index a3d97d6497..40f3ec9844 100644
--- a/modules/admin-mini/luasrc/view/mini/upgrade.htm
+++ b/modules/admin-mini/luasrc/view/mini/upgrade.htm
@@ -17,7 +17,7 @@ $Id$
<h2><%:a_s_flash%></h2>
<p><%:a_s_flash_upgrade1%></p>
<br />
-<% if sysupgrade and not ret then %>
+<% if sysupgrade and ret == nil then %>
<form method="post" action="<%=REQUEST_URI%>" enctype="multipart/form-data">
<div class="left"><%:a_s_flash_fwimage%>:</div>
<div>
@@ -33,20 +33,14 @@ $Id$
<input type="submit" value="<%:a_s_flash_fwupgrade%>" />
</div>
</form>
-<% elseif ret then %>
- <p><%:a_s_flash_received%></p>
- <p><%:a_s_flash_inprogress%></p>
-
-<!-- <%=string.rep(" ", 2048)%> -->
- <% %>
- <% local ret = ret()
- if ret == 0 then %>
-<div class="ok"><%:a_s_flash_flashed%></div>
+<% elseif ret ~= nil then %>
+ <% if ret then %>
+<p><%:a_s_flash_received%></p>
+<p><%:a_s_flash_inprogress%></p>
<% else %>
-<div class="error"><%:a_s_flash_flasherr%>! (<%:code%> <%=ret%>)</div>
+<div class="error"><%:a_s_flash_flasherr%>! (<%=err%>)</div>
<% end %>
<% else %>
<div class="error"><%:a_s_flash_notimplemented%></div>
<% end %>
<%+footer%>
-<% if ret == 0 then luci.sys.reboot() end %>