New application for watchcat
authorJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Apr 2012 16:49:04 +0000 (16:49 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Mon, 16 Apr 2012 16:49:04 +0000 (16:49 +0000)
Hi,

This patch add a new luci-application for the watchcat package (in
feeds/packages/utils).

Chris

applications/luci-watchcat/Makefile [new file with mode: 0644]
applications/luci-watchcat/ipkg/postinst [new file with mode: 0644]
applications/luci-watchcat/luasrc/controller/watchcat.lua [new file with mode: 0644]
applications/luci-watchcat/luasrc/model/cbi/watchcat/watchcat.lua [new file with mode: 0644]
applications/luci-watchcat/root/etc/uci-defaults/luci-watchcat [new file with mode: 0644]

diff --git a/applications/luci-watchcat/Makefile b/applications/luci-watchcat/Makefile
new file mode 100644 (file)
index 0000000..2cb156c
--- /dev/null
@@ -0,0 +1,3 @@
+PO=watchcat
+include ../../build/config.mk
+include ../../build/module.mk
diff --git a/applications/luci-watchcat/ipkg/postinst b/applications/luci-watchcat/ipkg/postinst
new file mode 100644 (file)
index 0000000..9911460
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+me="watchcat"
+[ -n "${IPKG_INSTROOT}" ] || {
+       ( . /etc/uci-defaults/luci-$me ) && rm -f /etc/uci-defaults/luci-$me
+       /etc/init.d/$me enabled || /etc/init.d/$me enable
+       exit 0
+}
diff --git a/applications/luci-watchcat/luasrc/controller/watchcat.lua b/applications/luci-watchcat/luasrc/controller/watchcat.lua
new file mode 100644 (file)
index 0000000..5eba5cd
--- /dev/null
@@ -0,0 +1,22 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2012 Christian Gagneraud <chris@techworks.ie>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+module("luci.controller.watchcat", package.seeall)
+
+function index()
+   if not nixio.fs.access("/etc/config/system") then
+      return
+   end
+   entry({"admin", "services", "watchcat"}, cbi("watchcat/watchcat"), _("Watchcat"), 90)
+end
diff --git a/applications/luci-watchcat/luasrc/model/cbi/watchcat/watchcat.lua b/applications/luci-watchcat/luasrc/model/cbi/watchcat/watchcat.lua
new file mode 100644 (file)
index 0000000..9f47bca
--- /dev/null
@@ -0,0 +1,64 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2012 Christian Gagneraud <chris@techworks.ie>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+$Id$
+]]--
+
+m = Map("system", 
+       translate("Watchcat"), 
+       translate("Watchcat allows to configure a periodic reboot and/or when " ..
+                 "internet connection has been lost for a certain period of time."  
+                ))
+
+s = m:section(TypedSection, "watchcat")
+s.anonymous = true
+s.addremove = true
+
+mode = s:option(ListValue, "mode",
+               translate("Operating mode"))
+mode.default = "allways"
+mode:value("ping", "Reboot on internet connection lost")
+mode:value("allways", "Periodic reboot")
+
+forcedelay = s:option(Value, "forcedelay",
+                     translate("Forced reboot delay"),
+                     translate("When rebooting the system the watchcat will trigger a soft reboot, " ..
+                               "Entering a non zero value here, will trigger a delayed hard reboot " ..
+                               "if the soft reboot fails. Enter a number of seconds to enable, " ..
+                               "use 0 to disable"))
+forcedelay.datatype = "uinteger"
+forcedelay.default = "0"
+
+period = s:option(Value, "period", 
+                 translate("Period"),
+                 translate("In periodic mode, it defines the reboot period. " ..
+                           "In internet mode, it defines the longest period of " .. 
+                           "time without internet access before a reboot is engaged." ..
+                           "Default unit is seconds, you can use the " ..
+                           "suffix 'm' for minutes, 'h' for hours or 'd' " ..
+                           "for days"))
+
+pinghost = s:option(Value, "pinghost", 
+                   translate("Ping host"),
+                   translate("Host address to ping"))
+pinghost.datatype = "host"
+pinghost.default = "8.8.8.8"
+pinghost:depends({mode="ping"})
+
+pingperiod = s:option(Value, "pingperiod", 
+                     translate("Ping period"),
+                     translate("How often to check internet connection. " ..
+                               "Default unit is seconds, you can you use the " ..
+                               "suffix 'm' for minutes, 'h' for hours or 'd' " ..
+                               "for days"))
+pingperiod:depends({mode="ping"})
+
+return m
diff --git a/applications/luci-watchcat/root/etc/uci-defaults/luci-watchcat b/applications/luci-watchcat/root/etc/uci-defaults/luci-watchcat
new file mode 100644 (file)
index 0000000..8cdb8c7
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+        add ucitrack system
+        set ucitrack.@system[-1].init=watchcat
+        commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0