File: ejabberd.init.template.patch

package info (click to toggle)
ejabberd 24.12-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,736 kB
  • sloc: erlang: 111,927; sh: 4,004; sql: 3,551; perl: 832; makefile: 542; python: 48; javascript: 34
file content (92 lines) | stat: -rw-r--r-- 2,296 bytes parent folder | download | duplicates (2)
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
Description: adjust ejabberd.init.template for Debian
 ejabberd's init script is very basic and needs to be adjusted and extended
 to  work properly on Debian systems and to comply with the Debian Policy.
Author: Philipp Huebner <debalance@debian.org>
Forwarded: not-needed

Index: ejabberd/ejabberd.init.template
===================================================================
--- ejabberd.orig/ejabberd.init.template
+++ ejabberd/ejabberd.init.template
@@ -16,17 +16,29 @@
 
 set -o errexit
 
-DIR=@ctlscriptpath@
+. /lib/lsb/init-functions
+
+DIR=/usr/sbin
 CTL="$DIR"/ejabberdctl
-USER=@installuser@
+USER=ejabberd
+EJABBERDRUN=/run/ejabberd
 
 test -x "$CTL" || {
-	echo "ERROR: ejabberd not found: $DIR"
+	log_daemon_msg "ERROR: ejabberd not found: $DIR"
 	exit 1
 }
-getent passwd "$USER" >/dev/null || {
-	echo "ERROR: System user not found: $USER"
-	exit 2
+
+mkrundir()
+{
+	if [ ! -d $EJABBERDRUN ]; then
+		mkdir -p $EJABBERDRUN
+		if [ $? -ne 0 ]; then
+			log_daemon_msg -n " failed"
+			return
+		fi
+		chmod 0755 $EJABBERDRUN
+		chown ejabberd:ejabberd $EJABBERDRUN
+	fi
 }
 
 export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
@@ -34,21 +46,26 @@ export PATH="${PATH:+$PATH:}/usr/sbin:/s
 case "$1" in
   start)
     test -x "$CTL" || exit 0
-    echo "Starting ejabberd..."
-    su - $USER -c "$CTL start"
-    su - $USER -c "$CTL started"
-    echo "done."
+    mkrundir
+    log_daemon_msg "Starting ejabberd..."
+    if ! /etc/init.d/ejabberd status > /dev/null; then
+	su - $USER -c "$CTL start"
+	su - $USER -c "$CTL started"
+    fi
+    log_daemon_msg "done."
     ;;
   stop)
     test -x "$CTL" || exit 0
-    echo "Stopping ejabberd..."
-    su - $USER -c "$CTL stop"
-    su - $USER -c "$CTL stopped"
-    echo "done."
+    log_daemon_msg "Stopping ejabberd..."
+    if $CTL status >/dev/null || test $? = 1 ; then
+	su - $USER -c "$CTL stop"
+	su - $USER -c "$CTL stopped"
+    fi
+    log_daemon_msg "done."
     ;;
   status)
     test -x "$CTL" || exit 0
-    echo "Getting ejabberd status..."
+    log_daemon_msg "Getting ejabberd status..."
     su - $USER -c "$CTL status"
     ;;
   force-reload|restart)
@@ -57,7 +74,8 @@ case "$1" in
     ;;
   *)
     echo "Usage: $0 {start|stop|restart|force-reload|status}"
-    exit 1
+    exit 3
+    ;;
 esac
 
 exit 0