<%# Copyright 2008 Steven Barth <steven@midlink.org> Copyright 2008-2015 Jo-Philipp Wich <jow@openwrt.org> Licensed to the public under the Apache License 2.0. -%> <%+header%> <h2 name="content"><%:Flash operations%></h2> <ul class="cbi-tabmenu"> <li class="cbi-tab"><a href="#"><%:Actions%></a></li> <li class="cbi-tab-disabled"><a href="<%=url('admin/system/flashops/backupfiles')%>"><%:Configuration%></a></li> </ul> <div class="cbi-section"> <h3><%:Backup%></h3> <div class="cbi-section-descr"><%:Click "Generate archive" to download a tar archive of the current configuration files.%></div> <div class="cbi-section-node"> <form class="inline" method="post" action="<%=url('admin/system/flashops/backup')%>"> <input type="hidden" name="token" value="<%=token%>" /> <div class="cbi-value<% if not reset_avail then %> cbi-value-last<% end %>"> <label class="cbi-value-title" for="image"><%:Download backup%></label> <div class="cbi-value-field"> <input class="cbi-button cbi-button-action important" type="submit" name="backup" value="<%:Generate archive%>" /> </div> </div> </form> </div> <h3><%:Restore%></h3> <div class="cbi-section-descr"><%:To restore configuration files, you can upload a previously generated backup archive here. To reset the firmware to its initial state, click "Perform reset" (only possible with squashfs images).%></div> <div class="cbi-section-node"> <% if reset_avail then %> <form class="inline" method="post" action="<%=url('admin/system/flashops/reset')%>"> <input type="hidden" name="token" value="<%=token%>" /> <div class="cbi-value cbi-value-last"> <label class="cbi-value-title"><%:Reset to defaults%></label> <div class="cbi-value-field"> <input onclick="return confirm('<%:Really reset all changes?%>')" class="cbi-button cbi-button-reset" type="submit" name="reset" value="<%:Perform reset%>" /> </div> </div> </form> <% end %> <form class="inline" method="post" action="<%=url('admin/system/flashops/restore')%>" enctype="multipart/form-data"> <div class="cbi-value cbi-value-last"> <label class="cbi-value-title" for="archive"><%:Restore backup%></label> <div class="cbi-value-field"> <input type="hidden" name="token" value="<%=token%>" /> <input type="file" name="archive" id="archive" /> <input type="submit" class="cbi-button cbi-button-action important" name="restore" value="<%:Upload archive...%>" /> <% if reset_avail then %> <div class="cbi-value-description"><%:Custom files (certificates, scripts) may remain on the system. To prevent this, perform a factory-reset first.%></div> <% end %> </div> </div> </form> <% if backup_invalid then %> <div class="cbi-section-error"><%:The backup archive does not appear to be a valid gzip file.%></div> <% end %> </div> <% local mtds = require("luci.sys").mtds(); if #mtds > 0 then -%> <h3><%:Save mtdblock contents%></h3> <div class="cbi-section-descr"><%:Click "Save mtdblock" to download specified mtdblock file. (NOTE: THIS FEATURE IS FOR PROFESSIONALS! )%></div> <div class="cbi-section-node"> <form class="inline" method="post" action="<%=url('admin/system/flashops/backupmtdblock')%>"> <input type="hidden" name="token" value="<%=token%>" /> <div class="cbi-value"> <label class="cbi-value-title" for="mtdblockname"><%:Choose mtdblock%></label> <div class="cbi-value-field"> <select class="cbi-input-select" data-update="change" name="mtdblockname" id="mtdblockname"> <% for i, key in ipairs(mtds) do if key and key.name ~= "rootfs_data" then -%> <option<%= attr("id", "mtdblockname-" .. key.name) .. attr("value", key.name .. '/'.. key.size .. '/' .. i - 1) .. attr("data-index", i) .. ifattr(key.name == "linux" or key.name == "firmware", "selected", "selected") %>><%=pcdata(key.name)%></option> <% end end -%> </select> </div> </div> <div class="cbi-value cbi-value-last<% if reset_avail then %> cbi-value-error<% end %>"> <label class="cbi-value-title" for="image"><%:Download mtdblock%></label> <div class="cbi-value-field"> <input type="submit" class="cbi-button cbi-button-action important" value="<%:Save mtdblock%>" /> </div> </div> </form> </div> <% end %> </div> <div class="cbi-section"> <h3><%:Flash new firmware image%></h3> <% if upgrade_avail then %> <form method="post" action="<%=url('admin/system/flashops/sysupgrade')%>" enctype="multipart/form-data"> <input type="hidden" name="token" value="<%=token%>" /> <div class="cbi-section-descr"><%:Upload a sysupgrade-compatible image here to replace the running firmware. Check "Keep settings" to retain the current configuration (requires a compatible firmware image).%></div> <div class="cbi-section-node"> <div class="cbi-value"> <label class="cbi-value-title" for="keep"><%:Keep settings%></label> <div class="cbi-value-field"> <input type="checkbox" name="keep" id="keep" checked="checked" /> </div> </div> <% if image_invalid then %> <div class="cbi-value"> <label class="cbi-value-title" for="force"><%:Force upgrade%></label> <div class="cbi-value-field"> <input type="checkbox" name="force" id="force" /> </div> <div class="cbi-section-error"> <%:The uploaded image file does not contain a supported format. Make sure that you choose the generic image format for your platform. %> <%:Select 'Force upgrade' to flash the image even if the image format check fails. Use only if you are sure that the firmware is correct and meant for your device! %> </div> </div> <% end %> <div class="cbi-value cbi-value-last<% if image_invalid then %> cbi-value-error<% end %>"> <label class="cbi-value-title" for="image"><%:Image%></label> <div class="cbi-value-field"> <input type="file" name="image" id="image" /> <input type="submit" class="cbi-button cbi-button-action important" value="<%:Flash image...%>" /> </div> </div> </div> </form> <% else %> <div class="cbi-section-descr"><%:Sorry, there is no sysupgrade support present; a new firmware image must be flashed manually. Please refer to the wiki for device specific install instructions.%></div> <% end %> </div> <%+footer%>