summaryrefslogtreecommitdiffstats
path: root/src/sysv/sssd.in
blob: 385785e02b6cba8a6653e12ac4fc1689bca81fbe (plain)
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#!/bin/sh
#
#
# chkconfig: - 12 88
# description: Provides a set of daemons to manage access to remote directories
#              and authentication mechanisms. It provides an NSS and PAM
#              interface toward the system and a pluggable backend system to
#              connect to multiple different account sources. It is also the
#              basis to provide client auditing and policy services for projects
#              like FreeIPA.
#
### BEGIN INIT INFO
# Provides: sssd
# Required-Start: $remote_fs $time
# Should-Start: $syslog
# Should-Stop: $null
# Required-Stop: $null
# Default-Stop: 0 1 6
# Short-Description: System Security Services Daemon
# Description: Provides a set of daemons to manage access to remote directories
#              and authentication mechanisms. It provides an NSS and PAM
#              interface toward the system and a pluggable backend system to
#              connect to multiple different account sources. It is also the
#              basis to provide client auditing and policy services for projects
#              like FreeIPA.
### END INIT INFO

RETVAL=0
prog="sssd"

# Source function library.
. /etc/init.d/functions

if [ -f @environment_file@ ]; then
    . @environment_file@
fi

SSSD=@sbindir@/sssd

LOCK_FILE=@localstatedir@/lock/subsys/sssd
PID_FILE=@localstatedir@/run/sssd.pid

TIMEOUT=15

start() {
    [ -x $SSSD ] || exit 5
    echo -n $"Starting $prog: "
    daemon $SSSD -f -D
    RETVAL=$?
    echo
    [ "$RETVAL" = 0 ] && touch $LOCK_FILE

    # Wait for pidfile creation or timeout
    sec=0
    [ "$RETVAL" = 0 ] && while [ $sec -lt $TIMEOUT -a ! -f $PID_FILE ]
    do
        sleep 1
        sec=$(($sec+1))
    done

    if [ "$sec" = "$TIMEOUT" ]; then
        RETVAL=-1
    fi

    return $RETVAL
}

stop() {
    echo -n $"Stopping $prog: "
    pid=`cat $PID_FILE`

    killproc -p $PID_FILE $SSSD -TERM
    RETVAL=$?

    # Wait until the monitor exits
    while (checkpid $pid)
    do
        usleep 100000
    done

    echo
    [ "$RETVAL" = 0 ] && rm -f $LOCK_FILE
    return $RETVAL
}

reload() {
    echo -n $"Reloading $prog: "
    killproc $SSSD -HUP
    RETVAL=$?
    echo
    return $RETVAL
}

restart() {
        stop
        start
}

force_reload() {
    restart
}

rh_status() {
    # run checks to determine if the service is running or use generic status
    status $prog
}

rh_status_q() {
    rh_status >/dev/null 2>&1
}

case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;

    stop)
        rh_status_q || exit 0
        $1
        ;;

    restart)
        $1
        ;;

    reload)
        rh_status_q || exit 7
        $1
        ;;

    force-reload)
        force_reload
        ;;

    status)
        rh_status
        ;;

    condrestart|try-restart)
        rh_status_q || exit 0
        restart
        ;;
    *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
    exit 2
esac
exit $?