SMF Example

saslauthd.init would be put into /lib/svc/method

saslauthd.init

#!/sbin/sh #

SASLAUTHD="/opt/csw/sbin/saslauthd" CONF_FILE="/opt/csw/lib/sasl2/Sendmail.conf" WORK_DIR="/var/run/saslauthd" PID_FILE="/var/run/saslauthd.pid" AUTH_USER="root"

case "$1" in

'start') /usr/bin/mkdir -p $WORK_DIR /bin/chown -Rh ${AUTH_USER} $WORK_DIR if [ -f $SASLAUTHD -a -f $CONF_FILE ]; then $SASLAUTHD -a pam -m ${WORK_DIR} fi ;;

'stop') if [ -f $PID_FILE ]; then /bin/kill -TERM `/bin/cat $PID_FILE` fi ;;

*) echo "Usage: $0 { start | stop }" exit 1 ;; esac exit 0

saslauthd.xml

<?xml version='1.0'?> <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'> <service_bundle type='manifest' name='export'> <service name='network/saslauthd' type='service' version='0'> <create_default_instance enabled='true'/> <single_instance/> <dependency name='fs-local' grouping='require_all' restart_on='none' type='s ervice'> <service_fmri value='svc:/system/filesystem/local'/> </dependency> <dependency name='network-service' grouping='require_all' restart_on='none' type='service'> <service_fmri value='svc:/network/service'/> </dependency> <dependency name='name-services' grouping='require_all' restart_on='refresh' type='service'> <service_fmri value='svc:/milestone/name-services'/> </dependency> <dependency name='identity' grouping='optional_all' restart_on='refresh' typ e='service'> <service_fmri value='svc:/system/identity:domain'/> </dependency> <dependency name='system-log' grouping='optional_all' restart_on='none' type ='service'> <service_fmri value='svc:/system/system-log'/> </dependency> <dependency name='conf-file' grouping='require_all' restart_on='refresh' typ e='path'> <service_fmri value='file://localhost/opt/csw/lib/sasl2/Sendmail.conf'/> </dependency> <dependency name='nsswitch' grouping='require_all' restart_on='refresh' type ='path'> <service_fmri value='file://localhost/etc/nsswitch.conf'/> </dependency> <dependent name='saslauthd_multi-user' restart_on='none' grouping='optional_ all'> <service_fmri value='svc:/milestone/multi-user'/> </dependent> <dependent name='saslauthd_sendmail' restart_on='none' grouping='require_all '> <service_fmri value='svc:/network/smtp:sendmail'/> </dependent> <exec_method name='start' type='method' exec='/lib/svc/method/saslauthd star t' timeout_seconds='10'> <method_context/> </exec_method> <exec_method name='stop' type='method' exec='/lib/svc/method/saslauthd stop' timeout_seconds='10'> <method_context/> </exec_method> <property_group name='startd' type='framework'> <propval name='ignore_error' type='astring' value='core,signal'/> </property_group> <stability value='Unstable'/> <template> <common_name> <loctext xml:lang='C'>saslauthd authorization daemon</loctext> </common_name> <documentation> <manpage title='saslauthd' section='8' manpath='/opt/csw/man'/> </documentation> </template> </service> </service_bundle>