luci-app-adblock: respect SimpleForm size limit
[project/luci.git] / applications / luci-app-adblock / luasrc / model / cbi / adblock / configuration_tab.lua
index ec88e5f..7863603 100644 (file)
@@ -1,17 +1,30 @@
--- 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")
+m.reset = false
 
 s = m:section(SimpleSection, nil,
        translate("This form allows you to modify the content of the main adblock configuration file (/etc/config/adblock)."))
@@ -21,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)