Move libexpat, unbound into core and introduce hnsd
[librecmc/librecmc.git] / package / network / services / unbound / files / unbound.init
diff --git a/package/network/services/unbound/files/unbound.init b/package/network/services/unbound/files/unbound.init
new file mode 100755 (executable)
index 0000000..c908399
--- /dev/null
@@ -0,0 +1,84 @@
+#!/bin/sh /etc/rc.common
+##############################################################################
+#
+# Copyright (C) 2016 Michael Hanselmann, Eric Luehrsen
+#
+##############################################################################
+#
+# This init script is just the entry point for Unbound UCI.
+#
+##############################################################################
+
+START=19
+STOP=50
+USE_PROCD=1
+PROG=/usr/sbin/unbound
+
+##############################################################################
+
+boot() {
+  UB_BOOT=1
+  start "$@"
+}
+
+##############################################################################
+
+start_service() {
+  if [ -n "$UB_BOOT" ] ; then
+    # Load procd triggers (rc) and use event IFUP to really start
+    return 0
+  fi
+
+  # complex UCI work
+  . /usr/lib/unbound/unbound.sh
+  unbound_start
+
+  # standard procd clause
+  procd_open_instance "unbound"
+  procd_set_param command $PROG -d -c $UB_TOTAL_CONF
+  procd_set_param respawn
+  procd_close_instance
+}
+
+##############################################################################
+
+stop_service() {
+  # clean up
+  . /usr/lib/unbound/stopping.sh
+  unbound_stop
+
+  # Wait! on restart Unbound may take time writing closure stats to syslog
+  pidof $PROG && sleep 1
+}
+
+##############################################################################
+
+service_triggers() {
+  local legacy=$( uci_get unbound.@unbound[0].trigger )
+  local triggers=$( uci_get unbound.@unbound[0].trigger_interface )
+  local trigger="$triggers $legacy"
+
+  . /usr/lib/unbound/defaults.sh
+
+
+  if [ ! -f "$UB_TOTAL_CONF" -o -n "$UB_BOOT" ] ; then
+    # Unbound is can be a bit heavy, so wait some on first start but any
+    # interface coming up affects the trigger and delay so guarantee start
+    procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/unbound restart
+
+  elif [ -n "$triggers" ] ; then
+    procd_add_reload_trigger "unbound" "dhcp"
+
+
+    for trigger in $triggers ; do
+      # User selected triggers to restart at any other time
+      procd_add_reload_interface_trigger "$trigger"
+    done
+
+  else
+    procd_add_reload_trigger "unbound" "dhcp"
+  fi
+}
+
+##############################################################################
+