77 lines
3.3 KiB
Groff
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
|
|
}
|