summaryrefslogtreecommitdiff
path: root/mail/openemm2013/files/openemm2013.in
blob: 5989216d6fe60e08faa47844aa8d89702a4f7b94 (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
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/bin/sh
#
# %%APP_SHORTNAME%% startup script.
#
# $FreeBSD$
#

# PROVIDE: %%APP_SHORTNAME%%
# REQUIRE: NETWORKING SERVERS
# KEYWORD: shutdown

# Add the following lines to /etc/rc.conf to enable %%APP_SHORTNAME%%:
# %%APP_SHORTNAME%%_enable (bool):      Set to "YES" to enable %%APP_SHORTNAME%%
# %%APP_SHORTNAME%%_args (str):         Optional arguments to OAJBoss
# %%APP_SHORTNAME%%_log_stdout (str)       OpenEMM log output stdout, filename.
# %%APP_SHORTNAME%%_log_stderr (str)       OpenEMM log output stderr, filename.
#

. /etc/rc.subr

name="%%APP_SHORTNAME%%"
rcvar=%%APP_SHORTNAME%%_enable
extra_commands="status"

load_rc_config $name

%%APP_SHORTNAME%%_logdir="%%LOG_DIR%%"
%%APP_SHORTNAME%%_enable="${%%APP_SHORTNAME%%_enable:-"NO"}"
%%APP_SHORTNAME%%_log_stdout="${%%APP_SHORTNAME%%_log_stdout:-"${%%APP_SHORTNAME%%_logdir}/log"}"
%%APP_SHORTNAME%%_log_stderr="${%%APP_SHORTNAME%%_log_stderr:-"${%%APP_SHORTNAME%%_logdir}/error"}"
%%APP_SHORTNAME%%_args="${%%APP_SHORTNAME%%_args:-""}"
%%APP_SHORTNAME%%_sleep="${%%APP_SHORTNAME%%_sleep:-"5"}"
%%APP_SHORTNAME%%_kill9="${%%APP_SHORTNAME%%_kill9:-""}"
%%APP_SHORTNAME%%_additional_killall="${%%APP_SHORTNAME%%_additional_killall:-""}"
%%APP_SHORTNAME%%_user="%%USER%%"
%%APP_SHORTNAME%%_group="%%GROUP%%"
%%APP_SHORTNAME%%_lockdir="/var/run/openemm"


start_cmd="%%APP_SHORTNAME%%_start"
stop_cmd="%%APP_SHORTNAME%%_stop"
pidfile="%%PID_FILE%%"
tomcat_pidfile="tomcat8.pid" # todo replace dynamic with current version
sendmail_pidfile="sendmail.pid"

OPENEMM_HOME="%%APP_HOME%%"
#minimal requirements must be set for our javavmwrapper
JAVA_VERSION="1.7+"
export JAVA_VERSION

%%APP_SHORTNAME%%_start ()
{
	if [ ! -d "${%%APP_SHORTNAME%%_logdir}" ]
	then
		install -d -o ${%%APP_SHORTNAME%%_user} ${%%APP_SHORTNAME%%_logdir}
	fi

	if [ ! -d "${%%APP_SHORTNAME%%_lockdir}" ]
	then
		install -d -o ${%%APP_SHORTNAME%%_user} ${%%APP_SHORTNAME%%_lockdir}
	fi

	echo "Preconditions for %%APP_SHORTNAME%%"
	echo "   - check if sendmail processes are stopped, it will be started via this application"

	if [ -f "/var/run/${sendmail_pidfile}"]
	then
		echo "TODO STOP all sendmail processes"
		service sendmail stop
		
		# check for sendmail queues started via openemm
		if [ -f "${%%APP_SHORTNAME%%_lockdir}/mailer.pid" ]
		then
			echo "Stop Mailer Service...."
        		pkill qctrl
			pkill sendmail 
		fi
	fi

	echo "Starting %%APP_SHORTNAME%%."

	# check for the startup pyhton scripts


	# check if tomcat is running otherwise warning
	if [ ! -f "/var/run/${tomcat_pidfile}" ]
	then
		echo "Tomcat is not running please start tomcat first"
	else
		echo "Tomcat is running... starting app"
	fi

	echo "Start BOUNCE Servcie...."	
 	daemon -u ${%%APP_SHORTNAME%%_user} ${OPENEMM_HOME}/bin/bounce.sh start >> ${%%APP_SHORTNAME%%_logdir}/bounce.log 2>> ${%%APP_SHORTNAME%%_logdir}/bounce_error.log
	echo "Start Merger Service...."
	daemon -u ${%%APP_SHORTNAME%%_user} ${OPENEMM_HOME}/bin/merger.sh start >> ${%%APP_SHORTNAME%%_logdir}/merger.log 2>> ${%%APP_SHORTNAME%%_logdir}/merger_error.log
	echo "Start Mailer Service...."
	daemon ${OPENEMM_HOME}/bin/mailer.sh start >> ${%%APP_SHORTNAME%%_logdir}/mailer.log 2>> ${%%APP_SHORTNAME%%_logdir}/mailer_error.log
	pgrep sendmail > ${openemm2013_lockdir}/mailer.pid
	
	echo "Start SLRT scan Service...."
	daemon -u ${%%APP_SHORTNAME%%_user} ${OPENEMM_HOME}/bin/slrtscn.sh start >> ${%%APP_SHORTNAME%%_logdir}/slrtscn.log 2>> ${%%APP_SHORTNAME%%_logdir}/slrtscn_error.log

	echo "START THE APP ITSELF..."
	#daemon -u ${%%APP_SHORTNAME%%_user} ${OPENEMM_HOME}/bin/standalone.sh ${%%APP_SHORTNAME%%_args} >> ${%%APP_SHORTNAME%%_log_stdout} 2>> ${%%APP_SHORTNAME%%_log_stderr}

	#sleep ${%%APP_SHORTNAME%%_sleep}	# let daemon(8) and sh(1) finish before executing pgrep(1)
	#pgrep -U ${%%APP_SHORTNAME%%_user} -f ${OPENEMM_HOME}/modules > ${pidfile}
	#chown ${%%APP_SHORTNAME%%_user} $pidfile
}

%%APP_SHORTNAME%%_stop ()
{

	${OPENEMM_HOME}/bin/bounce.sh stop
	${OPENEMM_HOME}/bin/merger.sh stop

	#${OPENEMM_HOME}/bin/mailer.sh stop
	service sendmail stop   # pkill sendmail
	#sendmail stop
	pkill sendmail
	terminator bin/qctrl #pkill qctrl
	${OPENEMM_HOME}/bin/slrtscn.sh stop

	# Subvert the check_pid_file procname check.
	# at the moment we dont't handle this here
	if [ -f ${pidfile} ]
	then
		kill `cat ${pidfile}`
		# Only if we aware that our setup can hangs, and only after trying simple kill, we can kill it hard way.
		if [ ! -z "${%%APP_SHORTNAME%%_kill9}" ]
		then
			sleep ${%%APP_SHORTNAME%%_sleep}
			#kill  -9 `cat ${pidfile}`
		fi
		# In some setups, OpenEMM (Tomcat) can spawn some child processess, which could prevent it from stopping, and freeing net ports.
		# Let's blindly kill them all, since we are really know what we are doing.
		if [ ! -z "${%%APP_SHORTNAME%%_additional_killall}" ]
		then
			sleep ${%%APP_SHORTNAME%%_sleep}
			killall ${%%APP_SHORTNAME%%_additional_killall}
		fi
	fi
}

terminator() {
        while [ $# -gt 0 ] ; do
                __pat="$1"
                shift
                if [ "$__pat" ] ; then
                        for sig in 15 9 ; do
                                __run="`ps -aux | grep -- \"$__pat\" | grep -v grep | awk '{ print $2 }'`"
                                if [ "$__run" ] ; then
                                        echo "Stop $__pat program with signal $sig .. "
                                        kill -$sig $__run >/dev/null 2>&1
                                        sleep 2
                                        echo "done."
                                fi
                        done
                fi
        done
}


%%APP_SHORTNAME%%_status ()
{
	# If running, show pid
	if [ -f ${pidfile} ]
	then
		echo "%%APP_SHORTNAME%% is running as pid" `cat ${pidfile}`
	else
		echo "%%APP_SHORTNAME%% is not running"
	fi
}

run_rc_command "$1"