summaryrefslogtreecommitdiff
path: root/sysutils/munin-node/pkg-install
blob: 95d53640dba07212d7f393626d039bae22618fe3 (plain) (blame)
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
#! /bin/sh

ask() {
    local question default answer

    question=$1
    default=$2
    if [ -z "${PACKAGE_BUILDING}" ]; then
        read -p "${question} [${default}]? " answer
    fi
    if [ x${answer} = x ]; then
        answer=${default}
    fi
    echo ${answer}
}

yesno() {
    local dflt question answer

    question=$1
    dflt=$2
    while :; do
        answer=$(ask "${question}" "${dflt}")
        case "${answer}" in
        [Yy]*)          return 0;;
        [Nn]*)          return 1;;
        esac
        echo "Please answer yes or no."
    done
}

make_group() {
    local g

    g=$1

    if pw group show "${g}" >/dev/null 2>&1; then
	echo "You already have a group \"${g}\", so I will use it."
    else
	echo "You need a group \"${g}\"."
	if which -s pw && yesno "Would you like me to create it" y; then
	    pw groupadd ${g} || exit
	    echo "Done."
	else
	    echo "Please create it, and try again."
	    if ! grep -q "^${u}:" /etc/passwd; then
		echo "While you're at it, please create a user \"${u}\" too,"
		echo "with a default group of \"${g}\"."
	    fi
	    exit 1
	fi
    fi
}

init_plugins() {
    if [ -f ${PKG_PREFIX}/etc/munin/VERSION.node ]; then
	prevver=$(cat ${PKG_PREFIX}/etc/munin/VERSION.node)
    fi

    if [ -n "$prevver" ]; then
	echo -n "Initializing new plugins.."
	${PKG_PREFIX}/sbin/munin-node-configure --shell --newer "${prevver%-*}" | sh -x
    else
	echo -n "Initializing plugins.."
	${PKG_PREFIX}/sbin/munin-node-configure --shell | sh -x
    fi
    echo "done."
}

create_crontab_entries() {
    local sched prog
    sched=$1
    prog=$2

    if grep -q "^[^#]*$prog" /etc/crontab; then
	echo "It looks like your crontab is already set up, so I'll use that."
    else
	echo "It looks like your perl suffers from unsafe signals."
	if yesno "Would you like me to set up your root crontab to restart munin-node" y; then
	    cat <<EOT >>/etc/crontab
$sched	root	$prog
EOT
	else
	    echo "You may suffer from munin-node crashing after log rotation."
	    echo "If you still want to restart munin-node, use $prog."
	fi
    fi
}

newsyslog() {
    if yesno "Would you like me to set up log rotation" y; then
	if grep -q /var/log/munin-node.log /etc/newsyslog.conf; then
	    :
	else
	    cat >> /etc/newsyslog.conf <<EOT
/var/log/munin-node.log			644  7	   *	@T00  Z	/var/run/munin/munin-node.pid
EOT
	fi
	if [ -f ${PKG_PREFIX}/bin/munin-node-revive ]; then
	    create_crontab_entries '4	*	*	*	*' ${PKG_PREFIX}/bin/munin-node-revive
	fi
    else
	echo "/var/log/munin-node.log will grow without bounds."
    fi
}


########################################################################

case $2 in
    PRE-INSTALL)
	make_group munin
	;;      
    POST-INSTALL)
	init_plugins
	${PKG_PREFIX}/etc/rc.d/munin-node.sh start
	newsyslog
	;;      
esac