rc_scripts should provide the following functions (very abstract pseudo-code):

Consider this code snippet:

$rc = array();
$rc['name'] = 'Squid';
$rc['start'] = 'squid -D';
$rc['stop'] = 'squid -k shutdown';
$rc['reload'] = 'squid -k reconfigure';
$rc['status'] = "test -n '`ps ax | grep squid | grep -v grep`";
$rc['depends'] = 'foobar,foo,bar';
write_rcfile($rc);


That would generate the following rc script:

#!/bin/sh
### DEPENDS: foobar foo bar ###

rc_start() {
	    if rc_status; then; else
	            echo -n 'Starting Squid...'
	            if squid -D; then
	                    echo ' failed!'
	            else
	                    echo ' ok!'
	            fi
	    fi
}

rc_stop() {
	    if rc_status; then
		    echo -n 'Stopping Squid...'
	            if squid -k shutdown; then
	                    echo ' failed!'
	            else
	                    echo ' ok!'
	            fi
	    fi
}

rc_reload() {
	    if rc_status; then
	            echo -n 'Reloading Squid...'
	            if squid -k reconfigure; then
	                    echo ' failed!'
	            else
	                    echo ' ok!'
	            fi
	    fi
}

rc_status() {
	    return $(test -n `ps ax | grep squid | grep -v grep`)
}

case $1 in
	    start)
	            rc_start
	            ;;
	    stop)
	            rc_stop
	            ;;
	    restart)
	            rc_start
	            rc_stop
	            ;;
	    reload)
	            rc_reload
	            ;;
	    status)
	            if rc_status; then
	                    echo 'Running'
	                    exit 0
	            else
	                    echo 'Stopped'
	                    exit 1
	            fi
	            ;;
	    *)
	            echo "Usage: $0 <start|stop|restart|reload|status>"
	            exit 1
	            ;;
esac


Note that I'm not good at shell scripting, so it's very likely that my syntax is screwed. Please correct me.

Also, our scripts shouldn't use and ampersand after executing daemons. This new rc format assumes a parallel execution, dependency-based rc system.
Comments [Hide comments]
Comment by JeremyMcMillan
2009-09-12 22:00:07
If pfSense short circuits init, why not do the RC scripts in 100% PHP? If you're slick, you can even do it asynchronously/parallel. Then you can manage your own dependencies.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki