summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base
diff options
context:
space:
mode:
Diffstat (limited to 'modules/luci-base')
-rw-r--r--modules/luci-base/luasrc/cbi.lua30
-rw-r--r--modules/luci-base/luasrc/http/protocol.lua15
-rw-r--r--modules/luci-base/luasrc/model/ipkg.lua47
-rw-r--r--modules/luci-base/luasrc/model/ipkg.luadoc17
-rw-r--r--modules/luci-base/luasrc/model/network.lua6
-rw-r--r--modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua12
-rw-r--r--modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua9
-rw-r--r--modules/luci-base/luasrc/tools/status.lua4
-rw-r--r--modules/luci-base/luasrc/view/cbi/error.htm19
-rw-r--r--modules/luci-base/luasrc/view/cbi/network_netlist.htm1
-rw-r--r--modules/luci-base/po/ca/base.po8
-rw-r--r--modules/luci-base/po/cs/base.po8
-rw-r--r--modules/luci-base/po/de/base.po8
-rw-r--r--modules/luci-base/po/el/base.po8
-rw-r--r--modules/luci-base/po/en/base.po8
-rw-r--r--modules/luci-base/po/es/base.po8
-rw-r--r--modules/luci-base/po/fr/base.po8
-rw-r--r--modules/luci-base/po/he/base.po8
-rw-r--r--modules/luci-base/po/hu/base.po8
-rw-r--r--modules/luci-base/po/it/base.po10
-rw-r--r--modules/luci-base/po/ja/base.po8
-rw-r--r--modules/luci-base/po/ms/base.po8
-rw-r--r--modules/luci-base/po/no/base.po8
-rw-r--r--modules/luci-base/po/pl/base.po8
-rw-r--r--modules/luci-base/po/pt-br/base.po8
-rw-r--r--modules/luci-base/po/pt/base.po8
-rw-r--r--modules/luci-base/po/ro/base.po8
-rw-r--r--modules/luci-base/po/ru/base.po8
-rw-r--r--modules/luci-base/po/sk/base.po8
-rw-r--r--modules/luci-base/po/sv/base.po8
-rw-r--r--modules/luci-base/po/tr/base.po8
-rw-r--r--modules/luci-base/po/uk/base.po8
-rw-r--r--modules/luci-base/po/vi/base.po8
-rw-r--r--modules/luci-base/po/zh-cn/base.po20
-rw-r--r--modules/luci-base/po/zh-tw/base.po8
-rw-r--r--modules/luci-base/root/lib/uci/upload/.placeholder (renamed from modules/luci-base/root/lib/uci/upload/.gitignore)0
36 files changed, 345 insertions, 29 deletions
diff --git a/modules/luci-base/luasrc/cbi.lua b/modules/luci-base/luasrc/cbi.lua
index 34de44a5f0..f3d4618b65 100644
--- a/modules/luci-base/luasrc/cbi.lua
+++ b/modules/luci-base/luasrc/cbi.lua
@@ -12,6 +12,7 @@ require("luci.http")
local fs = require("nixio.fs")
local uci = require("luci.model.uci")
local datatypes = require("luci.cbi.datatypes")
+local dispatcher = require("luci.dispatcher")
local class = util.class
local instanceof = util.instanceof
@@ -307,8 +308,30 @@ function Map.__init__(self, config, ...)
self.changed = false
- if not self.uci:load(self.config) then
- error("Unable to read UCI data: " .. self.config)
+ local path = "%s/%s" %{ self.uci:get_confdir(), self.config }
+ if fs.stat(path, "type") ~= "reg" then
+ fs.writefile(path, "")
+ end
+
+ local ok, err = self.uci:load(self.config)
+ if not ok then
+ local url = dispatcher.build_url(unpack(dispatcher.context.request))
+ local source = self:formvalue("cbi.source")
+ if type(source) == "string" then
+ fs.writefile(path, source:gsub("\r\n", "\n"))
+ ok, err = self.uci:load(self.config)
+ if ok then
+ luci.http.redirect(url)
+ end
+ end
+ self.save = false
+ end
+
+ if not ok then
+ self.template = "cbi/error"
+ self.error = err
+ self.source = fs.readfile(path) or ""
+ self.pageaction = false
end
end
@@ -1510,13 +1533,16 @@ function Flag.parse(self, section)
if fexists then
local fvalue = self:formvalue(section) and self.enabled or self.disabled
+ local cvalue = self:cfgvalue(section)
if fvalue ~= self.default or (not self.optional and not self.rmempty) then
self:write(section, fvalue)
else
self:remove(section)
end
+ if (fvalue ~= cvalue) then self.section.changed = true end
else
self:remove(section)
+ self.section.changed = true
end
end
diff --git a/modules/luci-base/luasrc/http/protocol.lua b/modules/luci-base/luasrc/http/protocol.lua
index 61d7b802fe..859272679f 100644
--- a/modules/luci-base/luasrc/http/protocol.lua
+++ b/modules/luci-base/luasrc/http/protocol.lua
@@ -559,14 +559,23 @@ function parse_message_body( src, msg, filecb )
-- If we have a file callback then feed it
if type(filecb) == "function" then
- sink = filecb
-
+ local meta = {
+ name = "raw",
+ encoding = msg.env.CONTENT_TYPE
+ }
+ sink = function( chunk )
+ if chunk then
+ return filecb(meta, chunk, false)
+ else
+ return filecb(meta, nil, true)
+ end
+ end
-- ... else append to .content
else
msg.content = ""
msg.content_length = 0
- sink = function( chunk, err )
+ sink = function( chunk )
if chunk then
if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then
msg.content = msg.content .. chunk
diff --git a/modules/luci-base/luasrc/model/ipkg.lua b/modules/luci-base/luasrc/model/ipkg.lua
index 587637272d..2e26bd7a16 100644
--- a/modules/luci-base/luasrc/model/ipkg.lua
+++ b/modules/luci-base/luasrc/model/ipkg.lua
@@ -122,7 +122,7 @@ function upgrade()
end
-- List helper
-function _list(action, pat, cb)
+local function _list(action, pat, cb)
local fd = io.popen(ipkg .. " " .. action ..
(pat and (" '%s'" % pat:gsub("'", "")) or ""))
@@ -189,3 +189,48 @@ function overlay_root()
return od
end
+
+function compare_versions(ver1, comp, ver2)
+ if not ver1 or not ver2
+ or not comp or not (#comp > 0) then
+ error("Invalid parameters")
+ return nil
+ end
+ -- correct compare string
+ if comp == "<>" or comp == "><" or comp == "!=" or comp == "~=" then comp = "~="
+ elseif comp == "<=" or comp == "<" or comp == "=<" then comp = "<="
+ elseif comp == ">=" or comp == ">" or comp == "=>" then comp = ">="
+ elseif comp == "=" or comp == "==" then comp = "=="
+ elseif comp == "<<" then comp = "<"
+ elseif comp == ">>" then comp = ">"
+ else
+ error("Invalid compare string")
+ return nil
+ end
+
+ local av1 = util.split(ver1, "[%.%-]", nil, true)
+ local av2 = util.split(ver2, "[%.%-]", nil, true)
+
+ local max = table.getn(av1)
+ if (table.getn(av1) < table.getn(av2)) then
+ max = table.getn(av2)
+ end
+
+ for i = 1, max, 1 do
+ local s1 = av1[i] or ""
+ local s2 = av2[i] or ""
+
+ -- first "not equal" found return true
+ if comp == "~=" and (s1 ~= s2) then return true end
+ -- first "lower" found return true
+ if (comp == "<" or comp == "<=") and (s1 < s2) then return true end
+ -- first "greater" found return true
+ if (comp == ">" or comp == ">=") and (s1 > s2) then return true end
+ -- not equal then return false
+ if (s1 ~= s2) then return false end
+ end
+
+ -- all equal and not compare greater or lower then true
+ return not (comp == "<" or comp == ">")
+end
+
diff --git a/modules/luci-base/luasrc/model/ipkg.luadoc b/modules/luci-base/luasrc/model/ipkg.luadoc
index cf0985f94a..0dbab7a68f 100644
--- a/modules/luci-base/luasrc/model/ipkg.luadoc
+++ b/modules/luci-base/luasrc/model/ipkg.luadoc
@@ -107,3 +107,20 @@ Determines the overlay root used by opkg.
@return String containing the directory path of the overlay root.
]]
+---[[
+lua version of opkg compare-versions
+
+@class function
+@name compare_versions
+@param ver1 string version 1
+@param ver2 string version 2
+@param comp string compare versions using
+ "<=" or "<" lower-equal
+ ">" or ">=" greater-equal
+ "=" equal
+ "<<" lower
+ ">>" greater
+ "~=" not equal
+@return Boolean indicating the status of the compare
+]]
+
diff --git a/modules/luci-base/luasrc/model/network.lua b/modules/luci-base/luasrc/model/network.lua
index b6e390e818..20e1032760 100644
--- a/modules/luci-base/luasrc/model/network.lua
+++ b/modules/luci-base/luasrc/model/network.lua
@@ -1421,7 +1421,7 @@ function wifinet.is_up(self)
end
function wifinet.active_mode(self)
- local m = _stror(self.iwinfo.mode, self.iwdata.mode) or "ap"
+ local m = _stror(self.iwdata.mode, self.iwinfo.mode) or "ap"
if m == "ap" then m = "Master"
elseif m == "sta" then m = "Client"
@@ -1438,11 +1438,11 @@ function wifinet.active_mode_i18n(self)
end
function wifinet.active_ssid(self)
- return _stror(self.iwinfo.ssid, self.iwdata.ssid)
+ return _stror(self.iwdata.ssid, self.iwinfo.ssid)
end
function wifinet.active_bssid(self)
- return _stror(self.iwinfo.bssid, self.iwdata.bssid) or "00:00:00:00:00:00"
+ return _stror(self.iwdata.bssid, self.iwinfo.bssid) or "00:00:00:00:00:00"
end
function wifinet.active_encryption(self)
diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
index 148bdcbfc5..b109c712ec 100644
--- a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
+++ b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua
@@ -15,7 +15,7 @@ TZ = {
{ 'Africa/Blantyre', 'CAT-2' },
{ 'Africa/Brazzaville', 'WAT-1' },
{ 'Africa/Bujumbura', 'CAT-2' },
- { 'Africa/Cairo', 'EET-2EEST,M4.5.4/24,M9.5.4/24' },
+ { 'Africa/Cairo', 'EET-2' },
{ 'Africa/Casablanca', 'WET0WEST,M3.5.0,M10.5.0/3' },
{ 'Africa/Ceuta', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Africa/Conakry', 'GMT0' },
@@ -55,7 +55,7 @@ TZ = {
{ 'Africa/Tripoli', 'EET-2' },
{ 'Africa/Tunis', 'CET-1' },
{ 'Africa/Windhoek', 'WAT-1WAST,M9.1.0,M4.1.0' },
- { 'America/Adak', 'HAST10HADT,M3.2.0,M11.1.0' },
+ { 'America/Adak', 'HST10HDT,M3.2.0,M11.1.0' },
{ 'America/Anchorage', 'AKST9AKDT,M3.2.0,M11.1.0' },
{ 'America/Anguilla', 'AST4' },
{ 'America/Antigua', 'AST4' },
@@ -89,7 +89,7 @@ TZ = {
{ 'America/Cancun', 'EST5' },
{ 'America/Caracas', 'VET4:30' },
{ 'America/Cayenne', 'GFT3' },
- { 'America/Cayman', 'EST5' },
+ { 'America/Cayman', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' },
{ 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' },
{ 'America/Costa Rica', 'CST6' },
@@ -151,7 +151,7 @@ TZ = {
{ 'America/Miquelon', 'PMST3PMDT,M3.2.0,M11.1.0' },
{ 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' },
{ 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' },
- { 'America/Montevideo', 'UYT3UYST,M10.1.0,M3.2.0' },
+ { 'America/Montevideo', 'UYT3' },
{ 'America/Montserrat', 'AST4' },
{ 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' },
{ 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' },
@@ -266,7 +266,7 @@ TZ = {
{ 'Asia/Oral', 'ORAT-5' },
{ 'Asia/Phnom Penh', 'ICT-7' },
{ 'Asia/Pontianak', 'WIB-7' },
- { 'Asia/Pyongyang', 'KST-9' },
+ { 'Asia/Pyongyang', 'KST-8:30' },
{ 'Asia/Qatar', 'AST-3' },
{ 'Asia/Qyzylorda', 'QYZT-6' },
{ 'Asia/Rangoon', 'MMT-6:30' },
@@ -322,7 +322,7 @@ TZ = {
{ 'Europe/Bucharest', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
{ 'Europe/Budapest', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Busingen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
- { 'Europe/Chisinau', 'EET-2EEST,M3.5.0/3,M10.5.0/4' },
+ { 'Europe/Chisinau', 'EET-2EEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Copenhagen', 'CET-1CEST,M3.5.0,M10.5.0/3' },
{ 'Europe/Dublin', 'GMT0IST,M3.5.0/1,M10.5.0' },
{ 'Europe/Gibraltar', 'CET-1CEST,M3.5.0,M10.5.0/3' },
diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
index fe3f860977..f156f3663a 100644
--- a/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
+++ b/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua
@@ -9,11 +9,10 @@ OFFSET = {
wat = 3600, -- WAT
cat = 7200, -- CAT
eet = 7200, -- EET
- eest = 10800, -- EEST
wet = 0, -- WET
sast = 7200, -- SAST
- hast = -36000, -- HAST
- hadt = -32400, -- HADT
+ hst = -36000, -- HST
+ hdt = -32400, -- HDT
akst = -32400, -- AKST
akdt = -28800, -- AKDT
ast = -14400, -- AST
@@ -42,7 +41,6 @@ OFFSET = {
pmst = -10800, -- PMST
pmdt = -7200, -- PMDT
uyt = -10800, -- UYT
- uyst = -7200, -- UYST
fnt = -7200, -- FNT
srt = -10800, -- SRT
clt = -10800, -- CLT
@@ -96,7 +94,7 @@ OFFSET = {
novt = 21600, -- NOVT
omst = 21600, -- OMST
orat = 18000, -- ORAT
- kst = 32400, -- KST
+ kst = 30600, -- KST
qyzt = 21600, -- QYZT
mmt = 23400, -- MMT
sakt = 36000, -- SAKT
@@ -147,7 +145,6 @@ OFFSET = {
galt = -21600, -- GALT
gamt = -32400, -- GAMT
sbt = 39600, -- SBT
- hst = -36000, -- HST
lint = 50400, -- LINT
kost = 39600, -- KOST
mht = 43200, -- MHT
diff --git a/modules/luci-base/luasrc/tools/status.lua b/modules/luci-base/luasrc/tools/status.lua
index 6e588fe71d..0dd092c6df 100644
--- a/modules/luci-base/luasrc/tools/status.lua
+++ b/modules/luci-base/luasrc/tools/status.lua
@@ -120,7 +120,9 @@ function wifi_networks()
assoclist = net:assoclist(),
country = net:country(),
txpower = net:txpower(),
- txpoweroff = net:txpower_offset()
+ txpoweroff = net:txpower_offset(),
+ disabled = (dev:get("disabled") == "1" or
+ net:get("disabled") == "1")
}
end
diff --git a/modules/luci-base/luasrc/view/cbi/error.htm b/modules/luci-base/luasrc/view/cbi/error.htm
new file mode 100644
index 0000000000..2acb96924e
--- /dev/null
+++ b/modules/luci-base/luasrc/view/cbi/error.htm
@@ -0,0 +1,19 @@
+<div class="cbi-map" id="cbi-<%=self.config%>">
+ <% if self.title and #self.title > 0 then %><h2><a id="content" name="content"><%=self.title%></a></h2><% end %>
+ <% if self.description and #self.description > 0 then %><div class="cbi-map-descr"><%=self.description%></div><% end %>
+
+ <p class="alert-message danger">
+ <%: The configuration file could not be loaded due to the following error: %><br />
+ <code><%=pcdata(self.error)%></code>
+ </p>
+
+ <textarea name="cbi.source" style="width:100%; margin-bottom:1em" rows="<%=math.max(self.source:cmatch("\n"), 10)%>"><%=pcdata(self.source)%></textarea>
+
+ <p class="alert-message">
+ <%: Edit the raw configuration data above to fix any error and hit "Save" to reload the page. %>
+ </p>
+
+ <div class="cbi-page-actions">
+ <input class="cbi-button cbi-button-apply" type="submit" name="cbi.save" value="<%:Save%>" />
+ </div>
+</div>
diff --git a/modules/luci-base/luasrc/view/cbi/network_netlist.htm b/modules/luci-base/luasrc/view/cbi/network_netlist.htm
index 7e23d149a8..4f186ca8ea 100644
--- a/modules/luci-base/luasrc/view/cbi/network_netlist.htm
+++ b/modules/luci-base/luasrc/view/cbi/network_netlist.htm
@@ -59,6 +59,7 @@
<%- else -%>
<%:unspecified -or- create:%>
<%- end -%>&#160;</em></label>
+ <input style="display:none" type="password" />
<input style="width:6em" type="text"<%=attr("name", cbid .. ".newnet")%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" />
</div>
</li>
diff --git a/modules/luci-base/po/ca/base.po b/modules/luci-base/po/ca/base.po
index 4aa454e7bb..2252e7c951 100644
--- a/modules/luci-base/po/ca/base.po
+++ b/modules/luci-base/po/ca/base.po
@@ -775,6 +775,11 @@ msgstr "Mètode EAP"
msgid "Edit"
msgstr "Edita"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Edita aquesta interfície"
@@ -2474,6 +2479,9 @@ msgstr ""
"Els caràcters permets són: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
"code> i <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/cs/base.po b/modules/luci-base/po/cs/base.po
index 0d89b28aa1..373602070c 100644
--- a/modules/luci-base/po/cs/base.po
+++ b/modules/luci-base/po/cs/base.po
@@ -785,6 +785,11 @@ msgstr "Metoda EAP"
msgid "Edit"
msgstr "Upravit"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Upravit toto rozhraní"
@@ -2529,6 +2534,9 @@ msgstr ""
"Povolené znaky jsou: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> a "
"<code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/de/base.po b/modules/luci-base/po/de/base.po
index 3ac0c52e2f..361abdead9 100644
--- a/modules/luci-base/po/de/base.po
+++ b/modules/luci-base/po/de/base.po
@@ -781,6 +781,11 @@ msgstr "EAP-Methode"
msgid "Edit"
msgstr "Bearbeiten"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Diese Schnittstelle bearbeiten"
@@ -2544,6 +2549,9 @@ msgstr ""
"Erlaubte Buchstaben sind: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
"code> and <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/el/base.po b/modules/luci-base/po/el/base.po
index 5451adb479..ed3a20737c 100644
--- a/modules/luci-base/po/el/base.po
+++ b/modules/luci-base/po/el/base.po
@@ -797,6 +797,11 @@ msgstr "Μέθοδος EAP"
msgid "Edit"
msgstr "Επεξεργασία"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Επεξεργασία αυτής της διεπαφής"
@@ -2506,6 +2511,9 @@ msgstr ""
"Οι επιτρεπόμενοι χαρακτήρες είναι: <code>A-Z</code>, <code>a-z</code>, "
"<code>0-9</code> και <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/en/base.po b/modules/luci-base/po/en/base.po
index c75b4cab3f..3ad4b140bb 100644
--- a/modules/luci-base/po/en/base.po
+++ b/modules/luci-base/po/en/base.po
@@ -776,6 +776,11 @@ msgstr "EAP-Method"
msgid "Edit"
msgstr "Edit"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr ""
@@ -2466,6 +2471,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/es/base.po b/modules/luci-base/po/es/base.po
index d187fe7bdc..2c3ce94ad5 100644
--- a/modules/luci-base/po/es/base.po
+++ b/modules/luci-base/po/es/base.po
@@ -791,6 +791,11 @@ msgstr "Método EAP"
msgid "Edit"
msgstr "Editar"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Editar esta interfaz"
@@ -2549,6 +2554,9 @@ msgstr ""
"Los caracteres permitidos son: <code>A-Z</code>, <code>a-z</code>, "
"<code>0-9</code> y <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/fr/base.po b/modules/luci-base/po/fr/base.po
index 3b209b349b..1d8d224754 100644
--- a/modules/luci-base/po/fr/base.po
+++ b/modules/luci-base/po/fr/base.po
@@ -801,6 +801,11 @@ msgstr "Méthode EAP"
msgid "Edit"
msgstr "Éditer"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Éditer cette interface"
@@ -2561,6 +2566,9 @@ msgstr ""
"Les caractères autorisés sont : <code>A-Z</code>, <code>a-z</code>, "
"<code>0-9</code> et <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/he/base.po b/modules/luci-base/po/he/base.po
index cbc27d3160..237e8689ae 100644
--- a/modules/luci-base/po/he/base.po
+++ b/modules/luci-base/po/he/base.po
@@ -762,6 +762,11 @@ msgstr ""
msgid "Edit"
msgstr "ערוך"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "ערוך ממשק זה"
@@ -2440,6 +2445,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/hu/base.po b/modules/luci-base/po/hu/base.po
index 47f0dfedb0..975bf2dfce 100644
--- a/modules/luci-base/po/hu/base.po
+++ b/modules/luci-base/po/hu/base.po
@@ -794,6 +794,11 @@ msgstr "EAP metódus"
msgid "Edit"
msgstr "Szerkesztés"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Interfész szerkesztése"
@@ -2550,6 +2555,9 @@ msgstr ""
"A következő karakterek használhatók: <code>A-Z</code>, <code>a-z</code>, "
"<code>0-9</code> and <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/it/base.po b/modules/luci-base/po/it/base.po
index b6f94443e2..ffb1fdf0ca 100644
--- a/modules/luci-base/po/it/base.po
+++ b/modules/luci-base/po/it/base.po
@@ -327,7 +327,7 @@ msgid "Authorization Required"
msgstr "Autorizzazione richiesta"
msgid "Auto Refresh"
-msgstr "Aggironamento Automatico"
+msgstr "Aggiornamento Automatico"
msgid "Automatic"
msgstr ""
@@ -795,6 +795,11 @@ msgstr "Metodo EAP"
msgid "Edit"
msgstr "Modifica"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Modifica questa interfaccia"
@@ -2532,6 +2537,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/ja/base.po b/modules/luci-base/po/ja/base.po
index 69c384c508..8bea7644ea 100644
--- a/modules/luci-base/po/ja/base.po
+++ b/modules/luci-base/po/ja/base.po
@@ -783,6 +783,11 @@ msgstr "EAPメソッド"
msgid "Edit"
msgstr "編集"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "インターフェースを編集"
@@ -2523,6 +2528,9 @@ msgstr ""
"使用可能な文字は右記の通りです: <code>A-Z</code>, <code>a-z</code>, "
"<code>0-9</code>, <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/ms/base.po b/modules/luci-base/po/ms/base.po
index aaa1bc4ca0..d2a34dfbe1 100644
--- a/modules/luci-base/po/ms/base.po
+++ b/modules/luci-base/po/ms/base.po
@@ -746,6 +746,11 @@ msgstr "EAP-Kaedah"
msgid "Edit"
msgstr "Sunting"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr ""
@@ -2441,6 +2446,9 @@ msgstr ""
"Karakter yang diizinkan adalah: <code>A-Z</code>, <code>a-z</code>, "
"<code>0-9</code> dan <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/no/base.po b/modules/luci-base/po/no/base.po
index f7429201f0..21176ed3f4 100644
--- a/modules/luci-base/po/no/base.po
+++ b/modules/luci-base/po/no/base.po
@@ -781,6 +781,11 @@ msgstr "EAP-metode"
msgid "Edit"
msgstr "Endre"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Endre dette grensesnittet"
@@ -2521,6 +2526,9 @@ msgstr ""
"Gyldige tegn er: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> og "
"<code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/pl/base.po b/modules/luci-base/po/pl/base.po
index 908b6e601f..baa7ab8534 100644
--- a/modules/luci-base/po/pl/base.po
+++ b/modules/luci-base/po/pl/base.po
@@ -808,6 +808,11 @@ msgstr "Metoda EAP"
msgid "Edit"
msgstr "Edycja"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Edytuj ten interfejs"
@@ -2577,6 +2582,9 @@ msgstr ""
"Dozwolone znaki to: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> "
"oraz <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/pt-br/base.po b/modules/luci-base/po/pt-br/base.po
index e9c68b225b..ec4401bde9 100644
--- a/modules/luci-base/po/pt-br/base.po
+++ b/modules/luci-base/po/pt-br/base.po
@@ -804,6 +804,11 @@ msgstr "Método EAP"
msgid "Edit"
msgstr "Editar"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Editar esta interface"
@@ -2581,6 +2586,9 @@ msgstr ""
"Os caracteres permitidos são: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
"code> e <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/pt/base.po b/modules/luci-base/po/pt/base.po
index 2ba5ed7b4c..1acc852bbf 100644
--- a/modules/luci-base/po/pt/base.po
+++ b/modules/luci-base/po/pt/base.po
@@ -797,6 +797,11 @@ msgstr "Metodo-EAP"
msgid "Edit"
msgstr "Editar"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Editar esta interface"
@@ -2525,6 +2530,9 @@ msgstr ""
"Os caracteres permitidos são: <code>A-Z</code>, <code>a-z</code>, <code>0-9</"
"code> e <code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/ro/base.po b/modules/luci-base/po/ro/base.po
index efc0bb450d..3692b7de55 100644
--- a/modules/luci-base/po/ro/base.po
+++ b/modules/luci-base/po/ro/base.po
@@ -753,6 +753,11 @@ msgstr ""
msgid "Edit"
msgstr "Editeaza"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Editeaza aceasta interfata"
@@ -2430,6 +2435,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po
index ea5ccf163d..94fa6fb8ee 100644
--- a/modules/luci-base/po/ru/base.po
+++ b/modules/luci-base/po/ru/base.po
@@ -797,6 +797,11 @@ msgstr "Метод EAP"
msgid "Edit"
msgstr "Редактировать"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
#, fuzzy
msgid "Edit this interface"
msgstr "Редактировать этот интерфейс"
@@ -2553,6 +2558,9 @@ msgstr ""
"Допустимые символы: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> и "
"<code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/sk/base.po b/modules/luci-base/po/sk/base.po
index ff5b6dde06..d943ccb891 100644
--- a/modules/luci-base/po/sk/base.po
+++ b/modules/luci-base/po/sk/base.po
@@ -733,6 +733,11 @@ msgstr ""
msgid "Edit"
msgstr ""
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr ""
@@ -2401,6 +2406,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/sv/base.po b/modules/luci-base/po/sv/base.po
index 9e10acda3a..86fa224e79 100644
--- a/modules/luci-base/po/sv/base.po
+++ b/modules/luci-base/po/sv/base.po
@@ -739,6 +739,11 @@ msgstr ""
msgid "Edit"
msgstr ""
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr ""
@@ -2407,6 +2412,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po
index fa7d6d8006..1bf53aa576 100644
--- a/modules/luci-base/po/tr/base.po
+++ b/modules/luci-base/po/tr/base.po
@@ -746,6 +746,11 @@ msgstr ""
msgid "Edit"
msgstr ""
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr ""
@@ -2414,6 +2419,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/uk/base.po b/modules/luci-base/po/uk/base.po
index de1e461ab6..c5483221c2 100644
--- a/modules/luci-base/po/uk/base.po
+++ b/modules/luci-base/po/uk/base.po
@@ -807,6 +807,11 @@ msgstr "EAP-Метод"
msgid "Edit"
msgstr "Редагувати"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "Редагувати цей інтерфейс"
@@ -2568,6 +2573,9 @@ msgstr ""
"Дозволені символи: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> та "
"<code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/vi/base.po b/modules/luci-base/po/vi/base.po
index cdbabd4cf3..d81be16eb5 100644
--- a/modules/luci-base/po/vi/base.po
+++ b/modules/luci-base/po/vi/base.po
@@ -751,6 +751,11 @@ msgstr "EAP-Method"
msgid "Edit"
msgstr "Chỉnh sửa"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr ""
@@ -2441,6 +2446,9 @@ msgid ""
"code> and <code>_</code>"
msgstr ""
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/po/zh-cn/base.po b/modules/luci-base/po/zh-cn/base.po
index 47aa60f667..72bf937952 100644
--- a/modules/luci-base/po/zh-cn/base.po
+++ b/modules/luci-base/po/zh-cn/base.po
@@ -410,9 +410,6 @@ msgstr "CA证书.如果留空的话证书将在第一次连接时被保存."
msgid "CPU"
msgstr "CPU"
-msgid "CPU frequency"
-msgstr "CPU 频率"
-
msgid "CPU usage (%)"
msgstr "CPU使用率(%)"
@@ -443,9 +440,6 @@ msgstr "检查"
msgid "Checksum"
msgstr "校验值"
-msgid "Chip Model"
-msgstr "芯片型号"
-
msgid ""
"Choose the firewall zone you want to assign to this interface. Select "
"<em>unspecified</em> to remove the interface from the associated zone or "
@@ -758,6 +752,11 @@ msgstr "EAP-Method"
msgid "Edit"
msgstr "修改"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "修改此接口"
@@ -2453,6 +2452,9 @@ msgstr ""
"合法字符:<code>A-Z</code>, <code>a-z</code>, <code>0-9</code> 和 <code>_</"
"code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
@@ -3116,6 +3118,12 @@ msgstr "是"
msgid "« Back"
msgstr "« 后退"
+#~ msgid "CPU frequency"
+#~ msgstr "CPU 频率"
+
+#~ msgid "Chip Model"
+#~ msgstr "芯片型号"
+
#~ msgid ""
#~ "Always use 40MHz channels even if the secondary channel overlaps. Using "
#~ "this option does not comply with IEEE 802.11n-2009!"
diff --git a/modules/luci-base/po/zh-tw/base.po b/modules/luci-base/po/zh-tw/base.po
index a2ec282dd8..ec901b8af2 100644
--- a/modules/luci-base/po/zh-tw/base.po
+++ b/modules/luci-base/po/zh-tw/base.po
@@ -763,6 +763,11 @@ msgstr "EAP協定驗證方式"
msgid "Edit"
msgstr "編輯"
+msgid ""
+"Edit the raw configuration data above to fix any error and hit \"Save\" to "
+"reload the page."
+msgstr ""
+
msgid "Edit this interface"
msgstr "修改這個介面"
@@ -2468,6 +2473,9 @@ msgstr ""
"所允許的字元是: <code>A-Z</code>, <code>a-z</code>, <code>0-9</code> and "
"<code>_</code>"
+msgid "The configuration file could not be loaded due to the following error:"
+msgstr ""
+
msgid ""
"The device file of the memory or partition (<abbr title=\"for example\">e.g."
"</abbr> <code>/dev/sda1</code>)"
diff --git a/modules/luci-base/root/lib/uci/upload/.gitignore b/modules/luci-base/root/lib/uci/upload/.placeholder
index e69de29bb2..e69de29bb2 100644
--- a/modules/luci-base/root/lib/uci/upload/.gitignore
+++ b/modules/luci-base/root/lib/uci/upload/.placeholder