diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2012-04-15 14:30:54 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2012-04-15 14:30:54 +0000 |
commit | 4711c01509812406c9371bfb4ca5da342488fdeb (patch) | |
tree | 0df08311b73c5989bded7cf6780b2d54150af966 | |
parent | 7fdb055265b7afad4ff1db8a9fb678cbbeb77a97 (diff) |
libs/sys: introduce luci.sys.init.start() and luci.sys.init.stop(), also execute all init action with an empty environment
-rw-r--r-- | libs/sys/luasrc/sys.lua | 48 |
1 files changed, 31 insertions, 17 deletions
diff --git a/libs/sys/luasrc/sys.lua b/libs/sys/luasrc/sys.lua index 9c30f55f6c..7906d2be2c 100644 --- a/libs/sys/luasrc/sys.lua +++ b/libs/sys/luasrc/sys.lua @@ -307,7 +307,7 @@ function net.defaultroute6() local route net.routes6(function(rt) - if rt.dest:prefix() == 0 and rt.device ~= "lo" and + if rt.dest:prefix() == 0 and rt.device ~= "lo" and (not route or route.metric > rt.metric) then route = rt @@ -790,41 +790,55 @@ function init.names() return names end ---- Test whether the given init script is enabled +--- Get the index of he given init script -- @param name Name of the init script --- @return Boolean indicating whether init is enabled -function init.enabled(name) +-- @return Numeric index value +function init.index(name) if fs.access(init.dir..name) then - return ( call(init.dir..name.." enabled >/dev/null") == 0 ) + return call("env -i sh -c 'source %s%s; exit $START' >/dev/null" + %{ init.dir, name }) end - return false end ---- Get the index of he given init script --- @param name Name of the init script --- @return Numeric index value -function init.index(name) +local function init_action(action, name) if fs.access(init.dir..name) then - return call("source "..init.dir..name.." enabled >/dev/null; exit $START") + return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action }) end end +--- Test whether the given init script is enabled +-- @param name Name of the init script +-- @return Boolean indicating whether init is enabled +function init.enabled(name) + return (init_action("enabled", name) == 0) +end + --- Enable the given init script -- @param name Name of the init script -- @return Boolean indicating success function init.enable(name) - if fs.access(init.dir..name) then - return ( call(init.dir..name.." enable >/dev/null") == 1 ) - end + return (init_action("enable", name) == 1) end --- Disable the given init script -- @param name Name of the init script -- @return Boolean indicating success function init.disable(name) - if fs.access(init.dir..name) then - return ( call(init.dir..name.." disable >/dev/null") == 0 ) - end + return (init_action("disable", name) == 0) +end + +--- Start the given init script +-- @param name Name of the init script +-- @return Boolean indicating success +function init.start(name) + return (init_action("start", name) == 0) +end + +--- Stop the given init script +-- @param name Name of the init script +-- @return Boolean indicating success +function init.stop(name) + return (init_action("stop", name) == 0) end |