luci-app-adblock: respect SimpleForm size limit
[project/luci.git] / applications / luci-app-adblock / luasrc / model / cbi / adblock / configuration_tab.lua
index 1d89485..7863603 100644 (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
 
-local fs = require("nixio.fs")
-local util = require("luci.util")
+local fs       = require("nixio.fs")
+local util     = require("luci.util")
 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.reset = false
        m.submit = false
        return m
 end
 
+if fs.stat(adbinput).size >= 102400 then
+       m = SimpleForm("error", nil,
+               translate("The file size is too large for online editing in LuCI (≥ 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:append(Template("adblock/config_css"))
 m.submit = translate("Save")
@@ -25,11 +34,11 @@ f.rows = 20
 f.rmempty = true
 
 function f.cfgvalue()
-       return nixio.fs.readfile(adbinput) or ""
+       return fs.readfile(adbinput) or ""
 end
 
 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
 
 function s.handle(self, state, data)