76e454
#!/bin/sh
76e454
#
76e454
# Turns on or off the nss-sysinit module db by editing the
76e454
# global PKCS #11 congiguration file. Displays the status.
76e454
#
76e454
# This script can be invoked by the user as super user.
76e454
# It is invoked at nss-sysinit post install time with argument on.
76e454
#
76e454
usage()
76e454
{
76e454
  cat <
76e454
Usage: setup-nsssysinit [on|off]
76e454
  on     - turns on nsssysinit
76e454
  off    - turns off nsssysinit
76e454
  status - reports whether nsssysinit is turned on or off
76e454
EOF
76e454
  exit $1
76e454
}
76e454
76e454
# validate
76e454
if [ $# -eq 0 ]; then
76e454
  usage 1 1>&2
76e454
fi
76e454
76e454
# the system-wide configuration file
76e454
p11conf="/etc/pki/nssdb/pkcs11.txt"
76e454
# must exist, otherwise report it and exit with failure
76e454
if [ ! -f $p11conf ]; then
76e454
  echo "Could not find ${p11conf}"
76e454
  exit 1
76e454
fi
76e454
76e454
# check if nsssysinit is currently enabled or disabled
76e454
sysinit_enabled()
76e454
{
76e454
  grep -q '^library=libnsssysinit' ${p11conf}
76e454
}
76e454
76e454
umask 022
76e454
case "$1" in
76e454
  on | ON )
76e454
    if sysinit_enabled; then 
76e454
      exit 0 
76e454
    fi
76e454
    cat ${p11conf} | \
76e454
    sed -e 's/^library=$/library=libnsssysinit.so/' \
76e454
        -e '/^NSS/s/\(Flags=internal\)\(,[^m]\)/\1,moduleDBOnly\2/' > \
76e454
        ${p11conf}.on
76e454
    mv ${p11conf}.on ${p11conf}
76e454
    ;;
76e454
  off | OFF )
76e454
    if ! sysinit_enabled; then
76e454
      exit 0
76e454
    fi
76e454
    cat ${p11conf} | \
76e454
    sed -e 's/^library=libnsssysinit.so/library=/' \
76e454
        -e '/^NSS/s/Flags=internal,moduleDBOnly/Flags=internal/' > \
76e454
        ${p11conf}.off
76e454
    mv ${p11conf}.off ${p11conf}
76e454
    ;;
76e454
  status )
76e454
    echo -n 'NSS sysinit is '
76e454
    sysinit_enabled && echo 'enabled' || echo 'disabled'
76e454
    ;;
76e454
  * )
76e454
    usage 1 1>&2
76e454
    ;;
76e454
esac