File: cyphesis-cpp.init

package info (click to toggle)
cyphesis-cpp 0.6.2-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 10,752 kB
  • sloc: cpp: 94,194; xml: 40,196; python: 8,717; sh: 4,164; makefile: 1,968; ansic: 753
file content (149 lines) | stat: -rw-r--r-- 3,708 bytes parent folder | download
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
149
#!/bin/bash
#
# start/stop cyphesis-cpp game server
#
### BEGIN INIT INFO
# Provides: cyphesis-cpp
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Should-Start: postgresql
# Should-Stop: postgresql
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Game-Server of the WorldForge project
# Description: Game-Server of the WorldForge project
### END INIT INFO

if ! [ -f /etc/cyphesis/cyphesis.vconf ]; then
	exit 0
fi

if ! [ -x /usr/bin/cyphesis ]; then
	exit 0
fi

. /lib/lsb/init-functions

CYPHESISUSER=cyphesis
POSTGRESUSER=postgres

start() {
	log_daemon_msg "Starting Cyphesis game server" "cyphesis"

	# Ensure that the system PostgreSQL database user exists
	if ! su $POSTGRESUSER -s /bin/sh -c true >/dev/null 2>&1; then
		RET=$?
		log_progress_msg "cannot find system PostgreSQL database user $POSTGRESUSER"
		log_end_msg $RET
	fi

	# Ensure PostgreSQL is running
	if ! su $POSTGRESUSER -s /bin/sh -c "psql -c \"\" template1" >/dev/null 2>&1; then
		RET=$?
		log_progress_msg "PostgreSQL server is not running"
		log_end_msg $RET
	fi

	# Ensure that the system Cyphesis user exists
	if ! su $CYPHESISUSER -s /bin/sh -c true >/dev/null 2>&1; then
		RET=$?
		log_progress_msg "cannot find system Cyphesis user $CYPHESISUSER"
		log_end_msg $RET
	fi

	# Ensure that the system Cyphesis user has a PostgreSQL account
	if ! su $CYPHESISUSER -s /bin/sh -c "psql -c \"\" template1" >/dev/null 2>&1; then
		log_progress_msg "creating PostgreSQL account for user $CYPHESISUSER..."
		if ! su $POSTGRESUSER -s /bin/sh -c "createuser -d -R -S --no-password $CYPHESISUSER" >/dev/null 2>&1; then
			RET=$?
			log_progress_msg "cannot create PostgreSQL account for user $CYPHESISUSER"
			log_end_msg $RET
		fi
	fi

	# Ensure that the Cyphesis database exists
	if ! su $CYPHESISUSER -s /bin/sh -c "psql -c \"\" cyphesis" >/dev/null 2>&1; then
		log_progress_msg "creating PostgreSQL database for user $CYPHESISUSER..."
		if ! su $CYPHESISUSER -s /bin/sh -c "createdb --no-password $CYPHESISUSER" >/dev/null 2>&1; then
			RET=$?
			log_progress_msg "cannot create PostgreSQL database for user $CYPHESISUSER"
			log_end_msg $RET
		fi
	fi

	# Load and refresh database rules
	log_progress_msg "loading and refreshing Cyphesis database rules..."
	if ! su $CYPHESISUSER -s /bin/sh -c "cyloadrules" >/dev/null 2>&1; then
		RET=$?
		log_progress_msg "cannot load rules into $CYPHESISUSER database"
		log_end_msg $RET
	fi

	log_progress_msg "spawning daemon..."
	mkdir -p --mode=775 /var/log/cyphesis/ || true
	chown cyphesis /var/log/cyphesis/
	mkdir -p --mode=775 /run/cyphesis/ || true
	chown cyphesis /run/cyphesis/
	if start-stop-daemon --start --quiet --oknodo --chuid $CYPHESISUSER --exec /usr/bin/cyphesis -- --cyphesis:daemon=true 2>/dev/null; then
		log_progress_msg "spawned"
		log_end_msg 0
	else
		log_progress_msg "failed"
		log_end_msg $?
	fi
}

stop() {
	log_daemon_msg "Stopping Cyphesis game server"
	start-stop-daemon --stop --quiet --oknodo --exec /usr/bin/cyphesis
	log_end_msg $?
}

case "$1" in
	start)
		start
		;;
	stop)
		stop
		;;
	reload)
		$0 restart
		;;
	force-reload)
		$0 restart
		;;
	restart)
		$0 stop
		$0 start
		;;
	try-restart)
		start-stop-daemon --status --quiet --oknodo --exec /usr/bin/cyphesis
		RET=$?
		case $RET in
			0)
				stop
				start
				;;
			1)
				rm /run/cyphesis/cyphesis.pid
				;&
			3)
				return 0
				;;
			*)
				log_daemon_msg "Unable to determine Cyphesis game server status"
				log_end_msg $RET
				;;
		esac
		;;
	status)
		/usr/bin/cycmd localhost stat
		log_end_msg $?
		;;
	*)
		echo "Usage: invoke-rc.d cyphesis-cpp {start|stop|reload|force-reload|restart|try-restart|status}"
		exit 1
		;;
esac

exit $?