From: Jo-Philipp Wich Date: Sat, 27 Jun 2009 15:32:58 +0000 (+0000) Subject: luci-0.9: merge r4932 and r4933 X-Git-Tag: 0.9.0~179 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8b01581917ef27df589f62a8529e966a9464db1b;p=oweals%2Fluci.git luci-0.9: merge r4932 and r4933 --- diff --git a/applications/luci-statistics/luasrc/statistics/datatree.lua b/applications/luci-statistics/luasrc/statistics/datatree.lua index 6a6cbd0d5..b494dc108 100644 --- a/applications/luci-statistics/luasrc/statistics/datatree.lua +++ b/applications/luci-statistics/luasrc/statistics/datatree.lua @@ -17,7 +17,7 @@ module("luci.statistics.datatree", package.seeall) local util = require("luci.util") local sys = require("luci.sys") -local fs = require("luci.fs") +local fs = require("nixio.fs") local uci = require("luci.model.uci").cursor() local sections = uci:get_all("luci_statistics") @@ -50,6 +50,19 @@ function Instance._mkpath( self, plugin, pinstance ) return dir end +function Instance._ls( self, ... ) + local ditr = fs.dir(self:_mkpath(...)) + if ditr then + local dirs = { } + while true do + local d = ditr() + if not d then break end + dirs[#dirs+1] = d + end + return dirs + end +end + function Instance._notzero( self, table ) for k in pairs(table) do return true @@ -59,7 +72,7 @@ function Instance._notzero( self, table ) end function Instance._scan( self ) - local dirs = fs.dir( self:_mkpath() ) + local dirs = self:_ls() if not dirs then return end @@ -72,7 +85,7 @@ function Instance._scan( self ) for _, dir in ipairs(dirs) do if dir ~= "." and dir ~= ".." and - fs.stat(self:_mkpath(dir)).type == "directory" + fs.stat(self:_mkpath(dir)).type == "dir" then local plugin = dir:gsub("%-.+$", "") if not self._plugins[plugin] then @@ -83,7 +96,7 @@ function Instance._scan( self ) for plugin, instances in pairs( self._plugins ) do - local dirs = fs.dir( self:_mkpath() ) + local dirs = self:_ls() if type(dirs) == "table" then for i, dir in ipairs(dirs) do @@ -101,7 +114,7 @@ function Instance._scan( self ) for instance, data_instances in pairs( instances ) do - dirs = fs.dir( self:_mkpath( plugin, instance ) ) + dirs = self:_ls(plugin, instance) if type(dirs) == "table" then for i, file in ipairs(dirs) do diff --git a/applications/luci-statistics/root/etc/init.d/luci_statistics b/applications/luci-statistics/root/etc/init.d/luci_statistics index 21ed41ead..b33536441 100755 --- a/applications/luci-statistics/root/etc/init.d/luci_statistics +++ b/applications/luci-statistics/root/etc/init.d/luci_statistics @@ -1,6 +1,27 @@ #!/bin/sh /etc/rc.common START=79 +boot() { + ### prepare publisher + if ! uci get lucid.rrdimg >/dev/null 2>/dev/null; then + uci batch <<-EOF +set lucid.rrdimg=DirectoryPublisher +set lucid.rrdimg.name='Statistics Images' +set lucid.rrdimg.physical=/tmp/rrdimg +set lucid.rrdimg.virtual=/rrdimg +set lucid.rrdimg.domain='' + +add_list lucid.http.publisher=rrdimg +add_list lucid.https.publisher=rrdimg + +commit lucid +EOF + /etc/init.d/lucid restart + fi + + start +} + start() { ### replace shipped config with symlink if [ ! -L /etc/collectd.conf ]; then @@ -13,9 +34,10 @@ start() { /usr/bin/stat-genconfig > /var/etc/collectd.conf ### prepare rrdimg directory - if [ ! -L /www/rrdimg ]; then - imagepath="$(uci get luci_statistics.rrdtool.image_path)" - ln -s ${imagepath:-/tmp/rrdimg}/ /www/rrdimg + if [ "$(uci get luci_statistics.rrdtool.image_path 2>/dev/null)" != "$(uci get lucid.rrdimg.physical 2>/dev/null)" ]; then + uci set lucid.rrdimg.physical=$(uci get luci_statistics.rrdtool.image_path) + uci commit lucid + /etc/init.d/lucid restart fi ### flush LuCI index cache