431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# Use is subject to license terms.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# CDDL HEADER START
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# The contents of this file are subject to the terms of the
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# Common Development and Distribution License (the "License").
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# You may not use this file except in compliance with the License.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# or http://www.opensolaris.org/os/licensing.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# See the License for the specific language governing permissions
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# and limitations under the License.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# When distributing Covered Code, include this CDDL HEADER in each
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# If applicable, add the following below this CDDL HEADER, with the
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# fields enclosed by brackets "[]" replaced with your own identifying
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# information: Portions Copyright [yyyy] [name of copyright owner]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# CDDL HEADER END
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# ident "%Z%%M% %I% %E% SMI"
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# Class action script for "kmfconf" class files.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# This script appends the input file from the package to the
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# /etc/crypto/kmf.conf file.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# The syntax of the input file is
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee# keystore:modulepath=path[;option=option_str]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee#
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleepkg_start="# Start $PKGINST"
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleepkg_end="# End $PKGINST"
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleetmpfile=/tmp/$$kmfconf
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleeerror=no
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleewhile read src dest
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleedo
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee [ "$src" = /dev/null ] && continue
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee if [ -f "$dest" ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee then
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee # For multiple input files; exit if error occurred in previous
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee # input file.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee if [ "$error" = yes ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee then
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$0: failed to update $lastdest for $PKGINST."
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee exit 2
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee fi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee lastdest=$dest
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee #
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee # If the package has been already installed, remove old entries
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee #
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee start=0;
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee end=0;
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee egrep -s "$pkg_start" $dest && start=1
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee egrep -s "$pkg_end" $dest && end=1
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee if [ $start -ne $end ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee then
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$0: missing Start or End delimiters for \
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee $PKGINST in $dest."
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$0: $dest may be corrupted and was not updated."
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee continue
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee fi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee if [ $start -eq 1 ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee then
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee sed -e "/$pkg_start/,/$pkg_end/d" $dest > $tmpfile \
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee || error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee else
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee cp $dest $tmpfile || error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee fi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee #
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee # Check the input file syntax (should at least contain
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee # ":module_path="). Then append the input entries with the
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee #scc package delimiters.
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee #
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee line_count=`wc -l $src | awk '{ print $1}'`
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee file_count=`grep ":modulepath=" $src | wc -l`
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee if [ $line_count -ne $file_count ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee then
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$0: Syntax Error - $src for $PKGINST."
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee continue
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee else
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$pkg_start" >> $tmpfile || error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee cat $src >> $tmpfile || error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$pkg_end" >> $tmpfile || error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee fi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee # Install the updated config file and clean up the tmp file
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee if [ "$error" = no ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee then
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee mv $tmpfile $dest || error=yes
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee fi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee rm -f $tmpfile
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee else
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$0: ERROR - $dest doesn't exist for $PKGINST."
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee exit 2
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee fi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleedone
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleeif [ "$error" = yes ]
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleethen
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee echo "$0: ERROR - failed to update $lastdest for $PKGINST."
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee exit 2
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleefi
431deaa01ac039d796fdfaf86b909a75e7d9ac48hylee
431deaa01ac039d796fdfaf86b909a75e7d9ac48hyleeexit 0