#!/bin/sh /etc/rc.common

START=90

USE_PROCD=1
PROG=/usr/bin/emailrelay
NAME=emailrelay


emailrelay_instance()
{
	local enabled mode port remote_clients server_tls server_auth extra_cmdline smarthost client_tls client_auth

	config_get_bool enabled "$1" enabled
	config_get mode "$1" mode
	config_get port "$1" port
	config_get_bool remote_clients "$1" remote_clients
	config_get server_tls "$1" server_tls
	config_get server_auth "$1" server_auth
	config_get extra_cmdline "$1" extra_cmdline
	config_get smarthost "$1" smarthost
	config_get_bool client_tls "$1" client_tls
	config_get client_auth "$1" client_auth


	[ "$enabled" = 0 ] && return 1

	procd_open_instance
	procd_set_param command "$PROG" --no-daemon

	case "$mode" in
		"server"|\
		"proxy")
			procd_append_param command "--as-${mode}"
			[ -n "$smarthost" ] && procd_append_param command "$smarthost"
			[ -n "$port" ] && procd_append_param command --port "$port"
			[ "$remote_clients" = 1 ] && procd_append_param command --remote-clients
			[ -n "$server_tls" ] && procd_append_param command --server-tls "$server_tls"
			[ -n "$server_auth" ] && procd_append_param command --server-auth "$server_auth"
			[ "$client_tls" = 1 ] && procd_append_param command --client-tls
			[ -n "$client_auth" ] && procd_append_param command --client-auth "$client_auth"
			;;
		"cmdline")
			# empty by intention (just append extra_cmdline)
			;;
		*)
			echo "no mode specified"
			return 1
			;;
	esac

	[ -n "$extra_cmdline" ] && procd_append_param command $extra_cmdline

	procd_set_param respawn

	procd_close_instance
}


start_service()
{
	[ ! -d /var/spool/emailrelay ] && mkdir -p /var/spool/emailrelay

	config_load "${NAME}"
	config_foreach emailrelay_instance emailrelay
}
