From f290b78c5b240df2e1a2d504a7b433ea83243d3b Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 31 Mar 2015 08:05:39 +0000 Subject: [PATCH] implement additional rc scripting start, fix for https://github.com/opnsense/core/issues/94 uses a more standard approach to startup daemons via the rc.d system. To enable, place a file for your service in /etc/rc.conf.d/ and set the enable variable to YES ( for example squid_enable=YES ) --- src/etc/rc | 3 +++ src/etc/rc.opnsense | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100755 src/etc/rc.opnsense diff --git a/src/etc/rc b/src/etc/rc index de95bdadd..c0fc18db2 100755 --- a/src/etc/rc +++ b/src/etc/rc @@ -282,6 +282,9 @@ echo -n "Starting CRON... " cd /tmp && /usr/sbin/cron -s 2>/dev/null echo "done." +# starting standard rc scripts +/usr/local/etc/rc.opnsense start + # Start ping handler every 240 seconds /usr/local/bin/minicron 240 /var/run/ping_hosts.pid /usr/local/bin/ping_hosts.sh diff --git a/src/etc/rc.opnsense b/src/etc/rc.opnsense new file mode 100755 index 000000000..36676275c --- /dev/null +++ b/src/etc/rc.opnsense @@ -0,0 +1,28 @@ +#!/bin/sh + +# check which services to enable +. /etc/rc.conf +for rc_conf in /etc/rc.conf.d/*; +do + . $rc_conf +done + +# probe all deamons in /usr/local/etc/rc.d/ +ls /usr/local/etc/rc.d/* | while read rc_filename +do +# echo $rc_filename + # read rc scripts and parse name and rcvar variables + _file=`basename $rc_filename` + eval `/usr/bin/grep "name[[:blank:]]*=" $rc_filename | /usr/bin/head -n 1` + eval `grep "rcvar[[:blank:]]*=" $rc_filename | /usr/bin/sed '/^$/d'` + + # check if service is enabled + eval "is_enabled=\$"$rcvar"" + + # start/stop service + if [ "$is_enabled" == "YES" ]; then + $rc_filename $1 + fi +done + + \ No newline at end of file