120 lines
3.0 KiB
Bash
120 lines
3.0 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# some shorthands for sanity
|
|
en="/etc/nagios4"
|
|
enc="/etc/nagios4/conf.d"
|
|
usn="/usr/share/nagios4"
|
|
|
|
. /usr/share/debconf/confmodule
|
|
. $usn/debian/httpd.webapps-common
|
|
|
|
if [ -n "$NAG4DEBUG" ]; then
|
|
echo "now debugging $0 $@"
|
|
set -x
|
|
fi
|
|
|
|
# location of the default apache configuration for nagios.
|
|
apacheconf=$en/apache2.conf
|
|
# location of the default htpasswd authentication file.
|
|
htpw=$en/htpasswd.users
|
|
|
|
setperm() {
|
|
local user="$1"
|
|
local group="$2"
|
|
local mode="$3"
|
|
local file="$4"
|
|
shift 4
|
|
# only do something when no setting exists
|
|
if ! dpkg-statoverride --list "$file" >/dev/null 2>&1; then
|
|
chown "$user":"$group" "$file"
|
|
chmod "$mode" "$file"
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
configure)
|
|
if ! getent passwd nagios > /dev/null ; then
|
|
echo 'Adding system-user for nagios' 1>&2
|
|
adduser --system --group --home /var/lib/nagios \
|
|
--disabled-login --force-badname nagios > /dev/null
|
|
fi
|
|
|
|
# get the list of selected servers
|
|
db_get nagios4/httpd
|
|
servers=$(echo $RET | sed -e 's/,/ /g')
|
|
db_get nagios4/adminpassword
|
|
admpass="$RET"
|
|
# get whether they want support for 1.x urls:
|
|
db_get nagios4/nagios1-in-apacheconf
|
|
nagiosone="$RET"
|
|
|
|
unwanted_servers=""
|
|
|
|
#check which servers to uninclude
|
|
for s in $wc_httpd_supported
|
|
do
|
|
if ! echo $servers | grep -q $s
|
|
then
|
|
unwanted_servers="$s $unwanted_servers"
|
|
fi
|
|
done
|
|
|
|
# register apache2.conf via ucf:
|
|
if [ "$nagiosone" = "true" ]; then
|
|
ucf --debconf-ok /usr/share/doc/nagios4-common/examples/apache2.nagios1.conf $apacheconf
|
|
else
|
|
ucf --debconf-ok /usr/share/doc/nagios4-common/examples/apache2.conf $apacheconf
|
|
fi
|
|
|
|
|
|
# configure the web servers, if it is desired
|
|
if [ "$servers" ]; then
|
|
if wc_httpd_apache_include $apacheconf nagios4 $servers; then
|
|
# reload the selected servers if they are running
|
|
running_servers="$(wc_httpd_running $servers)"
|
|
if [ "$running_servers" ]; then
|
|
wc_httpd_invoke "reload" $running_servers
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if [ "$unwanted_servers" ]; then
|
|
servers_to_deconf="$(wc_httpd_apache_configured $apacheconf nagios4 $unwanted_servers)"
|
|
if [ "$servers_to_deconf" ]; then
|
|
if wc_httpd_apache_uninclude $apacheconf nagios4 $servers_to_deconf; then
|
|
# reload the selected servers if they are running
|
|
running_servers="$(wc_httpd_running $unwanted_servers)"
|
|
if [ "$running_servers" ]; then
|
|
wc_httpd_invoke "reload" $running_servers
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
|
|
# we reset the password every run, so if it exists we're running
|
|
# after being specifically given a password and can unconditionally set it.
|
|
# XXX there's no way of setting the pw w/out giving it on the cmdline? wtf?
|
|
if [ -n "$admpass" ]; then
|
|
touch "$htpw"
|
|
htpasswd -b "$htpw" nagiosadmin "$admpass"
|
|
fi
|
|
|
|
# everything went well, so now let's reset the password
|
|
db_set nagios4/adminpassword ""
|
|
db_set nagios4/adminpassword-repeat ""
|
|
# ... done with debconf here
|
|
db_stop
|
|
;;
|
|
abort-upgrade|abort-remove|abort-deconfigure)
|
|
;;
|
|
*)
|
|
echo "postinst called with unknown argument \$1'" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
#DEBHELPER#
|