File: icinga-common.postinst

package info (click to toggle)
icinga 1.14.2+ds-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 49,264 kB
  • sloc: ansic: 108,564; sql: 9,656; sh: 4,945; perl: 3,439; makefile: 1,213; php: 581; xml: 104
file content (128 lines) | stat: -rw-r--r-- 3,545 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/bash

set -e

# some shorthands for sanity
en="/etc/icinga"
enc="/etc/icinga/objects"
usn="/usr/share/icinga"

. /usr/share/debconf/confmodule

conffile="/etc/icinga/icinga.cfg"

if [ -n "$ICINGADEBUG" ]; then
  echo "now debugging $0 $@"
  set -x
fi

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

	# explicitly set permissions on some files that are dependent
	# on the uid/gid of the nagios user, which is dynamically created.
        [ -f "$en/resource.cfg" ] && setperm root nagios 0640 $en/resource.cfg
        setperm nagios adm 2751 /var/log/icinga
        setperm nagios adm 2755 /var/log/icinga/archives
	setperm nagios nagios 0750 /var/lib/icinga/spool
	setperm nagios nagios 0755 /var/lib/icinga
	setperm nagios nagios 0750 /var/lib/icinga/spool/checkresults
        setperm nagios www-data 02750 /var/cache/icinga
        setperm nagios www-data 0700 /var/lib/icinga/rw

	db_get icinga/check_external_commands
	check_external_commands="$RET" # boolean

	db_stop

	# translate debconf boolean into icinga option
	# (this is better than using a select in debconf with Choices-C,
	# otherwise all translators would need to translate 'yes' and 'no').

	case $check_external_commands in
		true)
			check_external_commands=1
			;;

		false)
			check_external_commands=0
			;;
	esac

	# If the admin deleted or commented some variables but then set
	# them via debconf, (re-)add them to the config file.

	test -z "$check_external_commands" || \
	grep -Eq '^ *check_external_commands=' "$conffile" || \
	echo "check_external_commands=" >> "$conffile"

	sed --follow-symlinks -i -e "s|^ *check_external_commands=.|check_external_commands=$check_external_commands|" \
		"$conffile"
	# Stop a not already stopped icinga instance,
	# debhelper will start it again automatically at the bottom
	status="$(/etc/init.d/icinga status >/dev/null 2>&1; echo $?)"

	if [ "$status" -ne 3 ]; then
		if [ -x "$(which invoke-rc.d 2>/dev/null)" ]; then
			invoke-rc.d icinga stop || true
		else
			/etc/init.d/icinga stop || true
		fi
	fi

	case $check_external_commands in
		1)
			if ! dpkg-statoverride --list /var/lib/icinga/rw >/dev/null 2>&1; then
				dpkg-statoverride --quiet --update --add nagios www-data 2710 /var/lib/icinga/rw
			fi

			if ! dpkg-statoverride --list /var/lib/icinga >/dev/null 2>&1; then
				dpkg-statoverride --quiet --update --add nagios nagios 751 /var/lib/icinga
			fi
			;;

		0)
			if dpkg-statoverride --list /var/lib/icinga/rw >/dev/null 2>&1; then
				dpkg-statoverride --quiet --remove /var/lib/icinga/rw
			fi

			if dpkg-statoverride --list /var/lib/icinga >/dev/null 2>&1; then
				dpkg-statoverride --quiet --remove /var/lib/icinga
			fi
			;;
	esac
    ;;
  abort-upgrade|abort-remove|abort-deconfigure)
    ;;
  *)
    echo "postinst called with unknown argument \$1'" >&2
    exit 1
    ;;
esac

init_failed ()
{
    echo "Icinga was unable to start due to configuration errors.";
    echo "Please fix them and manually restart the icinga daemon using";
    echo " ┬┤service start icinga┬┤";
}

#DEBHELPER#