repo/templates/old/doinst.sh-0.3.2

77 lines
3.3 KiB
Groff

# Version: 0.3.2
# Copyright (c) 2005-2017:
# Darren 'Tadgy' Austin <darren (at) afterdark.org.uk>
# Licensed under the terms of the GNU General Public License version 3.
install_file() {
# $1 = Path of file to process (without leading /, with .new extension)
[ -z "$1" -o ! -e "$1" ] && return
local OLDFILE="${1%.new}"
local NEWMD5="$(md5sum "$1" 2>/dev/null | cut -d' ' -f1)"
local OLDMD5="$(md5sum "$OLDFILE" 2>/dev/null | cut -d' ' -f1)"
local PREVMD5S="$(grep -P "^[[:alnum:]]{32}[[:blank:]]+(/)?\Q$OLDFILE\E(\.new)?[[:blank:]]*$" \
install/slack-install | grep -Eo '^[[:alnum:]]{32}')"
if [ ! -e "$OLDFILE" ]; then
mv "$1" "$OLDFILE"
elif [ "$NEWMD5" = "$OLDMD5" ]; then
rm -f "$1"
elif echo "$PREVMD5S" | grep -v "^$NEWMD5$" | grep "^$OLDMD5$" >/dev/null 2>&1; then
cat "$1" >"$OLDFILE" &&
rm -f "$1"
else
# |--------|-----------------------------------------------------------|
echo "WARNING: $OLDFILE"
echo " has been customised since original installation and was not"
echo " replaced with the incoming .new file."
echo
fi
}
# Install new configuration files.
install_file "FIXME/FIXME.new"
# List info pages in the directory.
[ -x usr/bin/install-info ] && usr/bin/install-info %BUILD_PREFIX%/info/FIXME.info.gz %BUILD_PREFIX%/info/dir
# Add required user/group.
# Note: groups need to be added before users.
grep "^FIXME_GROUPNAME:" etc/group >/dev/null 2>&1 || {
echo "NOTICE: Adding new system group: FIXME_GROUPNAME (FIXME_GID)."
usr/sbin/groupadd -g FIXME_GID -r FIXME_GROUPNAME || echo "WARNING: Failed to create required group (FIXME_GROUPNAME)."
usr/sbin/grpconv # Won't hurt if above failed.
}
grep "^FIXME_USERNAME:" etc/passwd >/dev/null 2>&1 || {
echo "NOTICE: Adding new system user: FIXME_USERNAME (FIXME_UID)"
usr/sbin/useradd -d FIXME_HOMEDIR -g FIXME_GROUPNAME -M -N -r -s /bin/false -u FIXME_UID FIXME_USERNAME || \
echo "WARNING: Failed to create required user (FIXME_USERNAME)."
usr/sbin/pwconv # Won't hurt if above failed.
}
# The old way...
# grep '^FIXME_USERNAME:' etc/passwd >/dev/null 2>&1 || echo 'FIXME_USERNAME:x:FIXME_UID:FIXME_GID:FIXME_USERNAME user:FIXME_HOMEDIR:/bin/false' >>etc/passwd
# grep '^FIXME_USERNAME:' etc/shadow >/dev/null 2>&1 || echo 'FIXME_USERNAME:*:9797:0:::::' >>etc/shadow
# grep '^FIXME_GROUPNAME:' etc/group >/dev/null 2>&1 || echo 'FIXME_GROUPNAME:x:FIXME_GID:' >>etc/group
# grep '^FIXME_GROUPNAME:' etc/gshadow >/dev/null 2>&1 || echo 'FIXME_GROUPNAME:*::' >>etc/gshadow
# Add service start to rc.local
fgrep '/etc/rc.d/rc.FIXME' etc/rc.d/rc.local >/dev/null 2>&1 || {
echo >>etc/rc.d/rc.local
echo 'if [ -x /etc/rc.d/rc.FIXME ]; then' >>etc/rc.d/rc.local
echo ' /etc/rc.d/rc.FIXME start' >>etc/rc.d/rc.local
echo 'fi' >>etc/rc.d/rc.local
}
# If rc.local_shutdown doesn't exist, create it.
[ -e etc/rc.d/rc.local_shutdown ] || {
echo '#!/bin/sh' >etc/rc.d/rc.local_shutdown
chmod 755 etc/rc.d/rc.local_shutdown
}
# Add service shutdown to rc.local_shutdown
fgrep '/etc/rc.d/rc.FIXME' etc/rc.d/rc.local_shutdown || {
echo >>etc/rc.d/rc.local_shutdown
echo 'if [ -x /etc/rc.d/rc.FIXME ]; then' >>etc/rc.d/rc.local_shutdown
echo ' /etc/rc.d/rc.FIXME stop' >>etc/rc.d/rc.local_shutdown
echo 'fi' >>etc/rc.d/rc.local_shutdown
}