summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--applications/luci-watchcat/Makefile3
-rw-r--r--applications/luci-watchcat/ipkg/postinst7
-rw-r--r--applications/luci-watchcat/luasrc/controller/watchcat.lua22
-rw-r--r--applications/luci-watchcat/luasrc/model/cbi/watchcat/watchcat.lua64
-rw-r--r--applications/luci-watchcat/root/etc/uci-defaults/luci-watchcat10
5 files changed, 106 insertions, 0 deletions
diff --git a/applications/luci-watchcat/Makefile b/applications/luci-watchcat/Makefile
new file mode 100644
index 000000000..2cb156c0b
--- /dev/null
+++ b/applications/luci-watchcat/Makefile
@@ -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
index 000000000..99114604a
--- /dev/null
+++ b/applications/luci-watchcat/ipkg/postinst
@@ -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
index 000000000..5eba5cdeb
--- /dev/null
+++ b/applications/luci-watchcat/luasrc/controller/watchcat.lua
@@ -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
index 000000000..9f47bcaa6
--- /dev/null
+++ b/applications/luci-watchcat/luasrc/model/cbi/watchcat/watchcat.lua
@@ -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
index 000000000..8cdb8c7b9
--- /dev/null
+++ b/applications/luci-watchcat/root/etc/uci-defaults/luci-watchcat
@@ -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