#!/bin/sh

. /etc/control.d/functions

new_summary "PKCS#11 event card-actions configuration"
new_help 'default' "Default insert and remove actions"
new_help 'terminate' "Terminate user session on remove"

read_alternative()
{
    LANG=C alternatives-list "$1" | sed -e 's/^.*[[:space:]]\//\//'
}

## Main

REQUEST="$*"

case "$REQUEST" in
	help|'help '*)
		control_help "${REQUEST#help}"
		;;
	list)
		control_list
		;;
	summary)
		control_summary
		;;
	status)
		ins="$(read_alternative '/usr/bin/card-inserted')"
		rem="$(read_alternative '/usr/bin/card-removed')"
        
		if [ "$ins" = '/usr/bin/card-inserted-default' -a "$rem" = '/usr/bin/card-removed-default' ]; then
			echo 'default'
		elif [ "$ins" = '/usr/bin/card-inserted-terminate' -a "$rem" = '/usr/bin/card-removed-terminate' ]; then
			echo 'terminate'
		else
			echo 'misconfigured'
		fi
		;;
	default)
		alternatives-auto '/usr/bin/card-inserted' 2>/dev/null
		alternatives-auto '/usr/bin/card-removed' 2>/dev/null
		alternatives-update
		;;
	terminate)
		alternatives-manual '/usr/bin/card-inserted' '/usr/bin/card-inserted-terminate' 2>/dev/null
		alternatives-manual '/usr/bin/card-removed' '/usr/bin/card-removed-terminate' 2>/dev/null
		alternatives-update
		;;
esac
