aboutsummaryrefslogtreecommitdiff
path: root/www/orion-devel/files/orionctl
blob: a4fb1ce32ecbd02d07fa00ed7f2fdbbe34f9c35b (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
#!/bin/sh

# Set some variables
NAME=%%PORTNAME%%
VERSION=%%PORTVERSION%%
ORION_HOME=%%ORION_HOME%%
USER_NAME=%%USER_NAME%%
LOG=${ORION_HOME}/log/${NAME}.log
PID_FILE=/var/run/${NAME}.pid
JAR_FILE=${ORION_HOME}/${NAME}.jar
MYSELF=`basename $0`

# Check if we're being run as a shell script or as an rc script
if [ ${MYSELF} = "%%RC_SCRIPT_NAME%%" ]; then
	AS_RC_SCRIPT=yes
else
	AS_RC_SCRIPT=no
fi

# Check if the JAVA_HOME directory is defined, otherwise set it to the
# fallback default
if [ "${JAVA_HOME}a" = "a" ]; then
	JAVA_HOME=%%JAVA_HOME%%
fi
JAVA_CMD=${JAVA_HOME}/bin/java

case "$1" in
	start)
		# Make sure Orion is not started previously
		if [ -e ${PID_FILE} ]; then
			if [ "${AS_RC_SCRIPT}" = "yes" ]; then
				echo ""
			fi
			echo "${NAME}: ERROR: Found Orion PID file at ${PID_FILE}. Orion is probably already running."
			exit 1
		fi

		# Make sure the Orion directory does exist
		if [ ! -d ${ORION_HOME} ]; then
			if [ "${AS_RC_SCRIPT}" = "yes" ]; then
				echo ""
			fi
			echo "${NAME}: ERROR: Unable to find Orion home directory at ${ORION_HOME}."
			exit 2
		fi

		# Make sure the Orion JAR file exists
		if [ ! -r ${JAR_FILE} ]; then
			if [ "${AS_RC_SCRIPT}" = "yes" ]; then
				echo ""
			fi
			echo "${NAME}: ERROR: Unable to find Orion JAR file at ${JAR_FILE}."
			exit 3
		fi

		# Make sure the Java VM can be found
		if [ ! -x ${JAVA_CMD} ]; then
			if [ "${AS_RC_SCRIPT}" = "yes" ]; then
				echo ""
			fi
			echo "${NAME}: ERROR: Unable to find Java VM at ${JAVA_HOME}."
			exit 4
		fi

		# Create the process ID file
		rm -f ${PID_FILE}
		touch ${PID_FILE}
		chown ${USER_NAME} ${PID_FILE}
		chmod 600 ${PID_FILE}

		if [ "${AS_RC_SCRIPT}" = "yes" ]; then
			echo -n " ${NAME}"
		fi
		touch ${PID_FILE}
		chown ${USER_NAME} ${PID_FILE}
		chmod 600 ${PID_FILE}
		su - ${USER_NAME} -c "(cd ${ORION_HOME} && ${JAVA_CMD} -jar orion.jar & echo \$! > ${PID_FILE}) > ${LOG} 2>&1"
		;;
	stop)
		if [ ! -e ${PID_FILE} ]; then

			# If run as an rc script, die silently...
			if [ "${AS_RC_SCRIPT}" = "yes" ]; then
				exit 0

			# ...otherwise complain
			else
				echo "${NAME}: ERROR: Unable to find Orion PID file at ${PID_FILE}. Orion is probably not running."
				exit 16
			fi
		else
			if [ "${AS_RC_SCRIPT}" = "yes" ]; then
				echo -n " ${NAME}"
			fi
			/bin/kill `cat ${PID_FILE}`
			rm -f ${PID_FILE}
		fi

		;;
	*)
		echo ""
		echo "Usage: ${MYSELF} { start | stop }"
		echo ""
		exit 64
		;;
esac