]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/initscripts/init.d/miniupnpd
miniupnpd: Add configuration and scripts.
[ipfire-2.x.git] / src / initscripts / init.d / miniupnpd
diff --git a/src/initscripts/init.d/miniupnpd b/src/initscripts/init.d/miniupnpd
new file mode 100644 (file)
index 0000000..1fd02a2
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/miniupnpd
+#
+# Description : Miniupnp daemon
+#
+# Authors     : Michael Tremer <michael.tremer@ipfire.org>
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+
+if [ ! -e /etc/miniupnpd/id ]; then
+       uuidgen > /etc/miniupnpd/id
+fi
+
+UUID=$(cat /etc/miniupnpd/id)
+
+EXT_DEV=$(cat /var/ipfire/red/iface)
+EXT_IP4=$(cat /var/ipfire/red/local-ipaddress)
+
+. /var/ipfire/ethernet/settings
+
+for i in GREEN_ADDRESS BLUE_ADDRESS; do
+       [ -n "${!i}" ] && LISTEN_IP="${LISTEN_IP} -a ${!i}"
+done
+
+function flush_iptables() {
+       # Flush iptables to remove all entries that were left
+       iptables -F UPNPFW
+       iptables -t nat -F UPNPFW
+}
+
+case "${1}" in
+       start)
+               boot_mesg "Starting miniupnpd..."
+
+               flush_iptables
+
+               loadproc miniupnpd -f /etc/miniupnpd/miniupnpd.conf \
+                       -i ${EXT_DEV} -o ${EXT_IP4} ${LISTEN_IP} \
+                       -u ${UUID}
+               ;;
+
+       stop)
+               boot_mesg "Stopping miniupnpd..."
+               killproc miniupnpd
+
+               flush_iptables
+               ;;
+
+       restart)
+               ${0} stop
+               sleep 1
+               ${0} start
+               ;;
+
+       status)
+               statusproc miniupnpd
+               ;;
+
+       *)
+               echo "Usage: ${0} {start|stop|restart|status}"
+               exit 1
+               ;;
+esac
+
+# End $rc_base/init.d/miniupnpd