luci-app-statistics: check that uci config sections exist

A missing or faulty luci_statistics config file may prevent
LuCI access completely already at the login phase as
the statistics config is parsed already then.

The error is like:
  .../statistics/datatree.lua:16: attempt to index upvalue 'sections' (a nil value)

User may be completely locked out of LuCI until he figures out
the need to have a proper luci_statistics config file.

Prevent the error by checking for the existence of
the uci config sections before trying to use values from them.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
This commit is contained in:
Hannu Nyman 2017-05-10 19:06:10 +03:00
parent 3de3b75af4
commit d04f667383

View file

@ -13,9 +13,17 @@ local sections = uci:get_all("luci_statistics")
Instance = util.class()
function Instance.__init__( self, host )
self._host = host or sections.collectd.Hostname or sys.hostname()
self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
self._host = host or sys.hostname()
self._libdir = "/usr/lib/collectd"
self._rrddir = "/tmp/rrd"
if sections and sections.collectd then
self._host = host or sections.collectd.Hostname or sys.hostname()
self._libdir = sections.collectd.PluginDir or "/usr/lib/collectd"
end
if sections and sections.collectd_rrdtool then
self._rrddir = sections.collectd_rrdtool.DataDir or "/tmp/rrd"
end
self._libdir = self._libdir:gsub("/$","")
self._rrddir = self._rrddir:gsub("/$","")