repo/templates/doinst.sh

77 lines
2.6 KiB
Bash

# Version: 0.3.5
# Copyright (c) 2005-2022:
# 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" ]] || [[ ! -e "$1" ]] && return
local OLDFILE="${1%.new}"
if [[ ! -e "$OLDFILE" ]]; then
mv "$1" "$OLDFILE"
elif [[ -L "$OLDFILE" ]]; then
# |--------|-----------------------------------------------------------|
echo "WARNING: $OLDFILE"
echo " is a symbolic link - the incoming .new file was not written"
echo " to it in order to prevent clobbering something important."
echo
elif [[ "$(md5sum <"$OLDFILE")" == "$(md5sum <"$1")" ]]; then
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.
GROUPNAME="FIXME"
GROUPID="FIXME"
USERNAME="FIXME"
USERID="FIXME"
grep "^$GROUPNAME:" etc/group >/dev/null 2>&1 || {
if chroot . usr/sbin/groupadd -g "$GROUPID" -r "$GROUPNAME" && chroot . usr/sbin/grpconv; then
echo "NOTICE: Added new system group: $GROUPNAME ($GROUPID)."
else
echo "WARNING: Failed to add required group: $GROUPNAME."
fi
echo
}
grep "^$USERNAME:" etc/passwd >/dev/null 2>&1 || {
if chroot . usr/sbin/useradd -d "FIXME_HOMEDIR" -g "$GROUPNAME" -M -N -r -s /bin/false -u "$USERID" "$USERNAME" && chroot . usr/sbin/pwconv; then
echo "NOTICE: Added new system user: $USERNAME ($USERID)"
else
echo "WARNING: Failed to add required user: $USERNAME."
fi
echo
}
# Add service start to rc.local
RC="rc.FIXME"
fgrep "/etc/rc.d/$RC" etc/rc.d/rc.local >/dev/null 2>&1 || {
echo >>etc/rc.d/rc.local
echo "[[ -x /etc/rc.d/$RC ]] /etc/rc.d/$RC start" >>etc/rc.d/rc.local
}
# Add service shutdown to rc.local_shutdown
fgrep "/etc/rc.d/$RC" etc/rc.d/rc.local_shutdown >/dev/null 2>&1 || {
# If rc.local_shutdown doesn't exist, create it.
[[ -e etc/rc.d/rc.local_shutdown ]] || {
echo "#!/bin/bash" >etc/rc.d/rc.local_shutdown
chmod 755 etc/rc.d/rc.local_shutdown
}
echo >>etc/rc.d/rc.local_shutdown
echo "[[ -x /etc/rc.d/$RC ]] && /etc/rc.d/$RC stop" >>etc/rc.d/rc.local_shutdown
}
restart cron if a crontab was installed