aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils/munin-node/pkg-install
blob: 06c2187aa44e2c8eb27338ce6bf08060f970e56f (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
120
121
#! /bin/sh

ask() {
    local question default answer

    question=$1
    default=$2
    if [ -z "${PACKAGE_BUILDING}" -a -z "${BATCH}" ]; 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 ! /usr/sbin/pw user show ${u} >/dev/null 2>/dev/null; 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)
    if [ -z "${PACKAGE_BUILDING}" ]; then
        init_plugins
        ${PKG_PREFIX}/etc/rc.d/munin-node.sh start
        newsyslog
    fi
    ;;      
esac