File cyr_systemd_helper of Package cyrus-imapd

107
 
1
#!/bin/sh
2
# get_config [config default]
3
# extracts config option from config file
4
5
if [ ! -c /dev/null ]; then
6
    exit 1
7
fi
8
9
if [ ! -r /dev/null -o ! -w /dev/null ]; then
10
    exit 1
11
fi
12
13
if [ "$(stat -c %a /dev/null)" != "666" ]; then
14
    chmod 666 /dev/null
15
fi
16
17
if [ -f /etc/sysconfig/cyrus-imapd ]; then
18
    . /etc/sysconfig/cyrus-imapd
19
elif [ -f /etc/default/cyrus-imapd ]; then
20
    . /etc/default/cyrus-imapd
21
fi
22
23
if [ ! -z "${QUICK}" ]; then
24
    if [ ${QUICK} -ne 0 ]; then
25
        exit 0
26
    fi
27
fi
28
29
get_config() {
30
    if conf=$(grep "^$1" /etc/imapd.conf); then
31
        echo $conf | cut -d: -f2
32
    else
33
        echo $2
34
    fi
35
}
36
37
CONFIGDIRECTORY=$(get_config configdirectory /var/lib/imap)
38
if [ ! -d ${CONFIGDIRECTORY} ]; then
39
    mkdir -p ${CONFIGDIRECTORY}
40
    chmod 700 ${CONFIGDIRECTORY}
41
    chown cyrus:mail ${CONFIGDIRECTORY}
42
fi
43
44
RETVAL=0
45
46
# Sometimes, there is no path
47
runuser=$(which runuser 2>/dev/null)
48
49
if [ -z "${runuser}" ]; then
50
    runuser=/usr/sbin/runuser
51
fi
52
53
reload() {
54
    if [ ! -f /var/run/cyrus-master.pid ]; then
55
        exit 255
56
    fi
57
58
    if [ -z "$(pidof cyrus-master)" ]; then
59
        exit 1
60
    fi
61
62
    if [ "$(cat /var/run/cyrus-master.pid)" != "$(pidof cyrus-master)" ]; then
63
        exit 1
64
    fi
65
66
    kill -HUP $(cat /var/run/cyrus-master.pid)
67
}
68
69
start() {
70
    cd $CONFIGDIRECTORY
71
    $runuser - cyrus -s /bin/bash -c '/usr/lib/cyrus-imapd/mkimap' >/dev/null 2>&1 < /dev/null
72
73
    mkdir -p ${CONFIGDIRECTORY}/rpm
74
    chown cyrus:mail ${CONFIGDIRECTORY}/rpm
75
76
    $runuser - cyrus -s /bin/sh -c "umask 166 ; /usr/lib/cyrus-imapd/cvt_cyrusdb_all import > ${CONFIGDIRECTORY}/rpm/db_import.log 2>&1" < /dev/null
77
    RETVAL=$?
78
}
79
80
stop() {
81
    cd $CONFIGDIRECTORY
82
    mkdir -p ${CONFIGDIRECTORY}/rpm
83
    chown cyrus:mail ${CONFIGDIRECTORY}/rpm
84
85
    $runuser - cyrus -s /bin/sh -c "umask 166 ; /usr/lib/cyrus-imapd/cvt_cyrusdb_all export > ${CONFIGDIRECTORY}/rpm/db_export.log 2>&1" < /dev/null
86
    RETVAL=$?
87
}
88
89
case "$1" in
90
    reload)
91
            reload
92
        ;;
93
94
    start)
95
            start
96
        ;;
97
98
    stop)
99
            stop
100
        ;;
101
102
    *)
103
        ;;
104
esac
105
106
exit $RETVAL
107