luci-app-adblock: respect SimpleForm size limit

* respect SimpleForm size limit of 100KB for advanced online editing

Signed-off-by: Dirk Brenken <dev@brenken.org>
This commit is contained in:
Dirk Brenken 2018-05-18 18:17:31 +02:00
parent 55f251b01f
commit 840f45ecc5
3 changed files with 35 additions and 27 deletions

View file

@ -1,22 +1,21 @@
-- Copyright 2017 Dirk Brenken (dev@brenken.org) -- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0 -- This is free software, licensed under the Apache License, Version 2.0
local fs = require("nixio.fs") local fs = require("nixio.fs")
local util = require("luci.util") local util = require("luci.util")
local uci = require("luci.model.uci").cursor() local uci = require("luci.model.uci").cursor()
local adbinput = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist" local adbinput = uci:get("adblock", "blacklist", "adb_src") or "/etc/adblock/adblock.blacklist"
if not nixio.fs.access(adbinput) then if not fs.access(adbinput) then
m = SimpleForm("error", nil, m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
translate("Input file not found, please check your configuration."))
m.reset = false m.reset = false
m.submit = false m.submit = false
return m return m
end end
if nixio.fs.stat(adbinput).size > 524288 then if fs.stat(adbinput).size >= 102400 then
m = SimpleForm("error", nil, m = SimpleForm("error", nil,
translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ") translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
.. translate("Please edit this file directly in a terminal session.")) .. translate("Please edit this file directly in a terminal session."))
m.reset = false m.reset = false
m.submit = false m.submit = false
@ -38,11 +37,11 @@ f.rows = 20
f.rmempty = true f.rmempty = true
function f.cfgvalue() function f.cfgvalue()
return nixio.fs.readfile(adbinput) or "" return fs.readfile(adbinput) or ""
end end
function f.write(self, section, data) function f.write(self, section, data)
return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
end end
function s.handle(self, state, data) function s.handle(self, state, data)

View file

@ -1,17 +1,26 @@
-- Copyright 2017 Dirk Brenken (dev@brenken.org) -- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0 -- This is free software, licensed under the Apache License, Version 2.0
local fs = require("nixio.fs") local fs = require("nixio.fs")
local util = require("luci.util") local util = require("luci.util")
local adbinput = "/etc/config/adblock" local adbinput = "/etc/config/adblock"
if not nixio.fs.access(adbinput) then if not fs.access(adbinput) then
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
m.reset = false m.reset = false
m.submit = false m.submit = false
return m return m
end end
if fs.stat(adbinput).size >= 102400 then
m = SimpleForm("error", nil,
translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
.. translate("Please edit this file directly in a terminal session."))
m.reset = false
m.submit = false
return m
end
m = SimpleForm("input", nil) m = SimpleForm("input", nil)
m:append(Template("adblock/config_css")) m:append(Template("adblock/config_css"))
m.submit = translate("Save") m.submit = translate("Save")
@ -25,11 +34,11 @@ f.rows = 20
f.rmempty = true f.rmempty = true
function f.cfgvalue() function f.cfgvalue()
return nixio.fs.readfile(adbinput) or "" return fs.readfile(adbinput) or ""
end end
function f.write(self, section, data) function f.write(self, section, data)
return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
end end
function s.handle(self, state, data) function s.handle(self, state, data)

View file

@ -1,22 +1,22 @@
-- Copyright 2017 Dirk Brenken (dev@brenken.org) -- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
-- This is free software, licensed under the Apache License, Version 2.0 -- This is free software, licensed under the Apache License, Version 2.0
local fs = require("nixio.fs") local fs = require("nixio.fs")
local util = require("luci.util") local util = require("luci.util")
local uci = require("luci.model.uci").cursor() local uci = require("luci.model.uci").cursor()
local adbinput = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist" local adbinput = uci:get("adblock", "global", "adb_whitelist") or "/etc/adblock/adblock.whitelist"
if not nixio.fs.access(adbinput) then if not fs.access(adbinput) then
m = SimpleForm("error", nil, translate("Input file not found, please check your configuration.")) m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
m.reset = false m.reset = false
m.submit = false m.submit = false
return m return m
end end
if nixio.fs.stat(adbinput).size > 524288 then if fs.stat(adbinput).size >= 102400 then
m = SimpleForm("error", nil, m = SimpleForm("error", nil,
translate("The file size is too large for online editing in LuCI (&gt; 512 KB). ") translate("The file size is too large for online editing in LuCI (&ge; 100 KB). ")
.. translate("Please edit this file directly in a terminal session.")) .. translate("Please edit this file directly in a terminal session."))
m.reset = false m.reset = false
m.submit = false m.submit = false
return m return m
@ -37,11 +37,11 @@ f.rows = 20
f.rmempty = true f.rmempty = true
function f.cfgvalue() function f.cfgvalue()
return nixio.fs.readfile(adbinput) or "" return fs.readfile(adbinput) or ""
end end
function f.write(self, section, data) function f.write(self, section, data)
return nixio.fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n") return fs.writefile(adbinput, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
end end
function s.handle(self, state, data) function s.handle(self, state, data)